Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2001 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

gerer 2 bases mysql en PHP?

n°622592
impulse
Posté le 27-01-2004 à 10:56:12  profilanswer
 

Reprise du message précédent :
Hum. Le probleme avec PEAR c'est que ça ameliore pas les perfs vu la quantite de code en plus a parser et interpreter. C'est bien beau l'abastraction pour les DB par exemple mais apres faut voir si on en a vraiment besoin...
 
Perso j'utilise presque toujours les fonctions mysql car je sais que ce sera mysql qui sera utilisé de toute façon.

mood
Publicité
Posté le 27-01-2004 à 10:56:12  profilanswer
 

n°622599
saxgard
Posté le 27-01-2004 à 11:08:03  profilanswer
 

impulse a écrit :

Hum. Le probleme avec PEAR c'est que ça ameliore pas les perfs vu la quantite de code en plus a parser et interpreter. C'est bien beau l'abastraction pour les DB par exemple mais apres faut voir si on en a vraiment besoin...
 
Perso j'utilise presque toujours les fonctions mysql car je sais que ce sera mysql qui sera utilisé de toute façon.


 
mais comment tu fais si des fois ta besoin d'acceder a une base oracle ou sql server ou autre?
admettons que ton intranet tu l'administre par le biais d'une base mysql mais que tu va schercher des infos dans une base oracle  ;)
 

n°622604
impulse
Posté le 27-01-2004 à 11:16:07  profilanswer
 

saxgard a écrit :


 
mais comment tu fais si des fois ta besoin d'acceder a une base oracle ou sql server ou autre?
admettons que ton intranet tu l'administre par le biais d'une base mysql mais que tu va schercher des infos dans une base oracle  ;)
 


 
Je n'ai pas ce genre de pb. Comme je l'ai dit, PEAR peut etre interessant dans certains cas mais dans la plupart des cas autant utiliser les fonctions de base. Si j'avais besoin d'une couche d'abstraction pour DB je crois que je la ferais moi meme de toute façon. PEAR :: DB c'est pas mal mais un peu "lourd".


Message édité par impulse le 27-01-2004 à 11:16:39
n°622607
saxgard
Posté le 27-01-2004 à 11:17:49  profilanswer
 

impulse a écrit :


 
Je n'ai pas ce genre de pb. Comme je l'ai dit, PEAR peut etre interessant dans certains cas mais dans la plupart des cas autant utiliser les fonctions de base. Si j'avais besoin d'une couche d'abstraction pour DB je crois que je la ferais moi meme de toute façon. PEAR :: DB c'est pas mal mais un peu "lourd".


 
comment on peu proceder pour la faire soit meme ?

n°622625
impulse
Posté le 27-01-2004 à 11:33:17  profilanswer
 

saxgard a écrit :


comment on peu proceder pour la faire soit meme ?


 
Je vais pas rentrer dans les details mais il faut creer ses propres fcontions pour ouvrir une connection, executer une requete, fermer une connection etc... Tu peux faire ça en ne mettant au debut que le code pour mysql par exemple et si un jour tu dois changer de base tu n'as qu'a modifier ces fonctions pour qu'elles utilisent les fonctions propres a la nouvelle base. Regarde les sources de PEAR :: DB pour savoir comment il faut faire.
 
En gros PEAR (ou une autre couche d'abstraction de BDD) c'est bien quand tu sais que tu vas surement etre amené a changer de SGBD ou si tu penses que c'est une possibilité. Si tu sais que tu ne changeras pas alors ça ne sert strictement a rien sinon a ajouter du code : plus de bugs et de moins bonnes perfs entre autres.

n°622630
saxgard
Posté le 27-01-2004 à 11:37:04  profilanswer
 

impulse a écrit :


 
Je vais pas rentrer dans les details mais il faut creer ses propres fcontions pour ouvrir une connection, executer une requete, fermer une connection etc... Tu peux faire ça en ne mettant au debut que le code pour mysql par exemple et si un jour tu dois changer de base tu n'as qu'a modifier ces fonctions pour qu'elles utilisent les fonctions propres a la nouvelle base. Regarde les sources de PEAR :: DB pour savoir comment il faut faire.
 
En gros PEAR (ou une autre couche d'abstraction de BDD) c'est bien quand tu sais que tu vas surement etre amené a changer de SGBD ou si tu penses que c'est une possibilité. Si tu sais que tu ne changeras pas alors ça ne sert strictement a rien sinon a ajouter du code : plus de bugs et de moins bonnes perfs entre autres.


 
ah ok
je te remercie
 
bon va falloir alors que j'essaye de me demerder pour arriver a faire marcher mes 2 bases mysql sur mon meme script php
 
de tte facon je pene pas que ca soit si grave si je fais une connection a la base que je veux utiliser a cahque fois
 
tant pis si je peu pas faire de connection multiple


Message édité par saxgard le 27-01-2004 à 11:38:08
n°622649
rufo
Pas me confondre avec Lycos!
Posté le 27-01-2004 à 11:53:30  profilanswer
 

t'as quand même essayémon script pour voir si ça marchait?

n°622664
saxgard
Posté le 27-01-2004 à 11:59:55  profilanswer
 

rufo a écrit :

t'as quand même essayémon script pour voir si ça marchait?


 
non je vais l'essayer cette aprem , c'ets l'apres midi queje m'occupe de l'intranet
 
ton script me parait tres interessant j'espère que ca marchera

n°622668
rufo
Pas me confondre avec Lycos!
Posté le 27-01-2004 à 12:03:19  profilanswer
 

saxgard a écrit :


 
non je vais l'essayer cette aprem , c'ets l'apres midi queje m'occupe de l'intranet
 
ton script me parait tres interessant j'espère que ca marchera


 
Par contre, c'est sûr que c'est un peu plus lent que si tu passes par les primitives du bon sgbd
 
Mais, bon, ça rste tout à fait résonnable...


Message édité par rufo le 27-01-2004 à 12:03:50
n°622670
saxgard
Posté le 27-01-2004 à 12:06:43  profilanswer
 

rufo a écrit :


 
Par contre, c'est sûr que c'est un peu plus lent que si tu passes par les primitives du bon sgbd
 
Mais, bon, ça rste tout à fait résonnable...


 
j'ai deja pas mal de pb de lenteur certainement du des fois a mes connection via odbc  ;)

mood
Publicité
Posté le 27-01-2004 à 12:06:43  profilanswer
 

n°622672
ratibus
Posté le 27-01-2004 à 12:07:39  profilanswer
 

rufo a écrit :

C'est normal que ça marche pas : mysql_select_db($BASE) fonctionne sur la connexion courante, je veux dire par là qu'elle ne peut sélectionner qu'une bd à la fois, ça dépend pas de la connexion ouverte.


Voici la signature de la fonction muysql_select_db

Code :
  1. bool mysql_select_db ( string database_name [, resource link_identifier])


 
Y figure bien un parametre optionnel correspondant à la connexion à utiliser (link_identifier).
 
Ca parait logique que tu puisse préciser sur quelle connexion passer les requetes non ?

n°622676
ratibus
Posté le 27-01-2004 à 12:10:20  profilanswer
 

Ta fonction de connexion à une base devient donc
 

Code :
  1. function connect_base()
  2.   {
  3.        $link = mysql_connect("server", "nom", "passe" ); 
  4.        if (!$link) return false;
  5.        if (!mysql_select_db("base1",$link)) return false;
  6.      
  7.        return $link;
  8.   }

n°622678
rufo
Pas me confondre avec Lycos!
Posté le 27-01-2004 à 12:10:42  profilanswer
 

ratibus a écrit :


Voici la signature de la fonction muysql_select_db

Code :
  1. bool mysql_select_db ( string database_name [, resource link_identifier])


 
Y figure bien un parametre optionnel correspondant à la connexion à utiliser (link_identifier).
 
Ca parait logique que tu puisse préciser sur quelle connexion passer les requetes non ?
 


 
autant pour moi...

n°622683
saxgard
Posté le 27-01-2004 à 12:12:14  profilanswer
 

ratibus a écrit :

Ta fonction de connexion à une base devient donc
 

Code :
  1. function connect_base()
  2.   {
  3.        $link = mysql_connect("server", "nom", "passe" ); 
  4.        if (!$link) return false;
  5.        if (!mysql_select_db("base1",$link)) return false;
  6.      
  7.        return $link;
  8.   }




 
oui oui ca on avait vu le pb c que ca n'a pas l'air de marcher dans mon cas  :(  

n°622690
ratibus
Posté le 27-01-2004 à 12:17:53  profilanswer
 

Tu pourrais faire un fichier de conf comme ceci
 
config.php

Code :
  1. <?php
  2. //parametres pour la base1
  3. define(DB_HOST_1,"tonhote1" );
  4. define(DB_LOGIN_1,"tonlogin1" );
  5. define(DB_PASSWORD_1,"tonpassword1" );
  6. define(DB_NAME_1,"tondbname1" );
  7. //parametres pour la base 2
  8. define(DB_HOST_2,"tonhote2" );
  9. define(DB_LOGIN_2,"tonlogin2" );
  10. define(DB_PASSWORD_2,"tonpassword2" );
  11. define(DB_NAME_2,"tondbname2" );
  12. ?>


 
Ensuite dans tes fichiers courants tu inclus le fichier de conf (config.php) et le fichier de gestion de BDD (celui avec la fonction connect_base())
 
Et puis tu fais

Code :
  1. connect_base(DB_HOST_1,DB_LOGIN_1,DB_PASSWORD_1,DB_NAME_1); //pour la base1
  2. connect_base(DB_HOST_2,DB_LOGIN_2,DB_PASSWORD_2,DB_NAME_2); //pour la base2


 
Avec comme fonction connect_base :

Code :
  1. function connect_base($host,$login,$password,$dbname) 
  2.       $link = mysql_connect($host,$login,$password,true); 
  3.       if (!$link) return false
  4.       if (!mysql_select_db($dbname,$link)) return false
  5.      
  6.       return $link; 
  7. }


Message édité par ratibus le 27-01-2004 à 12:19:06
n°622691
ratibus
Posté le 27-01-2004 à 12:18:24  profilanswer
 

saxgard a écrit :


 
oui oui ca on avait vu le pb c que ca n'a pas l'air de marcher dans mon cas  :(  
 


J'ai modifié la fonction dans mon dernier post  :)

n°622696
saxgard
Posté le 27-01-2004 à 12:20:30  profilanswer
 

ratibus a écrit :


J'ai modifié la fonction dans mon dernier post  :)  


 
bon j'esayerai ca aussi ;)
mais un doute m'habit ;)

n°622740
rufo
Pas me confondre avec Lycos!
Posté le 27-01-2004 à 13:01:15  profilanswer
 

ps : les variables situées après le "global" sont des variables qui se trouvent dans mon fichier de conf.
 
question : en faisant un "define(var, valeur);", à l'intérieure d'une fonction, "var" est vue comme une constante globale ou je dois mettre un "gobal var;"?

n°622788
saxgard
Posté le 27-01-2004 à 13:35:41  profilanswer
 

rufo a écrit :

ps : les variables situées après le "global" sont des variables qui se trouvent dans mon fichier de conf.
 
question : en faisant un "define(var, valeur);", à l'intérieure d'une fonction, "var" est vue comme une constante globale ou je dois mettre un "gobal var;"?


 
 
hmmm si tu met ton define hors d ela fonction ca serait pas mieux alors? la j'ai un doute

n°622789
impulse
Posté le 27-01-2004 à 13:35:48  profilanswer
 

rufo a écrit :


question : en faisant un "define(var, valeur);", à l'intérieure d'une fonction, "var" est vue comme une constante globale ou je dois mettre un "gobal var;"?


 
Fais le test. :D

n°622973
saxgard
Posté le 27-01-2004 à 17:35:33  profilanswer
 

bon bin je ne sais pas pourquoi mais mnt ca marche les 2 connections simultanées sans passer par PEAR
 
hmm moi pas comprendre

n°622975
naceroth
Posté le 27-01-2004 à 17:36:03  profilanswer
 

Que de complications pour un problème réglé dites moi :D

n°622986
impulse
Posté le 27-01-2004 à 19:23:42  profilanswer
 

saxgard a écrit :

bon bin je ne sais pas pourquoi mais mnt ca marche les 2 connections simultanées sans passer par PEAR
 
hmm moi pas comprendre


 
Moi croire que toi pas avoir copie/colle le bout de code de naceroth qd nous te l'avoir dit de le faire. M'enfin moi pouvoir me tromper... :D

n°623519
saxgard
Posté le 28-01-2004 à 09:38:58  profilanswer
 

impulse a écrit :


 
Moi croire que toi pas avoir copie/colle le bout de code de naceroth qd nous te l'avoir dit de le faire. M'enfin moi pouvoir me tromper... :D


 
si si j'avais le meme code , la j'ai rien changé j'avais enlevé les "true " et je les ai remis et ca marche   :??:  
 :D  
 
mais mnt je me suis rendu compte qu'il faut que je passe par une base oracle   :lol:  
fais chié ca n'arrte pas de chnager

n°623538
impulse
Posté le 28-01-2004 à 09:55:26  profilanswer
 

saxgard a écrit :


 
si si j'avais le meme code , la j'ai rien changé j'avais enlevé les "true " et je les ai remis et ca marche   :??:  
 :D  
 
mais mnt je me suis rendu compte qu'il faut que je passe par une base oracle   :lol:  
fais chié ca n'arrte pas de chnager  


 
Forcement. Il faut mettre les "true", c'est ça qui est important. C'est LE parametre qui force la creation d'un nouvelle connection...

n°623541
saxgard
Posté le 28-01-2004 à 10:01:51  profilanswer
 

impulse a écrit :


 
Forcement. Il faut mettre les "true", c'est ça qui est important. C'est LE parametre qui force la creation d'un nouvelle connection...


 
bin vi je l'avais mis ca marchais pas , je l'ai enlevé , pis je l'ai remis ca a marché , si ca se trouve c'était juste une faute d efrappe la 1er fois  ;)

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[PHP] PB avec safe_mode et shell_execLivres PHP
PHP & COMPHP&Mysql : problème de retour à la ligne (bibliothèque JS Overblib)
Call to undefined function: mysql_connect()PHP-arondir un nombre
fonction mysql_num_fields prob[PHP] Exécuter le Code d'un Fichier Extérieur dans une Page PHP ?
[PHP] date en "date" vers -> j F Y[PHP] Redirection et transmition de var en $_POST[] ?
Plus de sujets relatifs à : gerer 2 bases mysql en PHP?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR