Liaison à plusieur BDD pour fonction recherche

Eléphanteau du PHP | 30 Messages

29 août 2010, 18:38

Bonjour,

j'ai plusieurs trombinoscope (9 exactement) et chaque trombinoscope contient 2 tables

J'ai fait une fonction "recherche" dans ma page d'accueil pour éviter de devoir faire une recherche dans chaque trombinoscope.
Le hic, c'est qu'il faut que j'arrive à me connecter sur les 9 bdd afin que quand je lance une recherche pour un nom, ca cherche directement dans les 9bdd champ "nom" etc...

mes paramètres de connexion pour un trombinoscope sont:
<?php
// paramètres de connexion
$host = "localhost";
$user = "root";
$bdd = "trombi1CIE";
$passwd = "******";
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
?>
pour pouvoir me connecter sur toutes les bases,

j'ai essayé ce code mais ça ne fonctionne pas :(
<?php
// paramètres de connexion
$host = "localhost";
$user = "root";
$bdd = "trombi1CIE";
$bdd2 = "trombi2CIE";
$bdd3 = "trombi3CIE";
$bdd4 = "trombi4CIE";
$bdd5 = "trombi5CIE";
$bdd6 = "trombi6CIE";
$bdd10 = "trombi10CIE";
$bddCAS = "trombiCAS";
$bddCCL = "trombiCCL";
$passwd = "******";
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd1) or die("erreur de connexion a la base de donnees");
mysql_select_db($bdd2) or die("erreur de connexion a la base de donnees");
mysql_select_db($bdd3) or die("erreur de connexion a la base de donnees");
mysql_select_db($bdd4) or die("erreur de connexion a la base de donnees");
mysql_select_db($bdd5) or die("erreur de connexion a la base de donnees");
mysql_select_db($bdd6) or die("erreur de connexion a la base de donnees");
mysql_select_db($bdd10) or die("erreur de connexion a la base de donnees");
mysql_select_db($bddCAS) or die("erreur de connexion a la base de donnees");
mysql_select_db($bddCIE) or die("erreur de connexion a la base de donnees");
?>
Comment puis je faire pour avoir les resultats (des 9bdd) lorsque je lance une recherche?

Merci de votre aide car là je plante malgré mes recherches :)

Désolé si je m'y prend mal, je débute :mrgreen:

Petit nouveau ! | 9 Messages

30 août 2010, 10:13

Vu que les accès à chaque base de donnée sont les mêmes, tu as de la chance c'est assez simple.
Soit tu fais la même requête entre chaque mysql_select_db();
mysql_select_db($bdd1) or die("erreur de connexion a la base de donnees");
$result = mysql_query('SELECT....');
$row = mysql_fetch_array($result);
mysql_select_db($bdd2) or die("erreur de connexion a la base de donnees");
$result = mysql_query('SELECT....');
$row = mysql_fetch_array($result);
// etc...

Soit tu ne fais pas de mysql_select_db(), et tu choisis ta db dans ta requete. Par exemple si la table que tu veux s'appelle 'trombi'

$result = mysql_query('SELECT * FROM `'.$bdd.'`.`trombi`');
$row = mysql_fetch_array($result);
$result = mysql_query('SELECT * FROM `'.$bdd2.'`.`trombi`');
$row = mysql_fetch_array($result);
// etc...

// ou encore

$result = mysql_query('SELECT * FROM `trombi1CIE`.`trombi`');
$row = mysql_fetch_array($result);
$result = mysql_query('SELECT * FROM `trombi2CIE`.`trombi`');
$row = mysql_fetch_array($result);
// etc...
23Prod, Audit et conception de systèmes d'informations : http://www.23prod.fr

Petit nouveau ! | 9 Messages

30 août 2010, 10:17

Désolé, je viens de me rendre compte que je n'ai répondu qu'à une partie de ta question ^^
Donc tu as deux choix pour tes recherches, soit tu tu fais tes 9 requêtes (un peu lourd) et tu stockes le tout dans un gros tableau php (ultra lourd), puis tu fais ta recherche en php (valable uniquement si tu n'as trop de lignes dans tes bdd).
Sinon tu utilises la deuxieme option que je t'ai donné SELECT `db`.`table`, et tu fais une seule requête avec des UNION ou des LEFT JOIN
23Prod, Audit et conception de systèmes d'informations : http://www.23prod.fr

ViPHP
ViPHP | 1996 Messages

30 août 2010, 13:14

Utilises la requête mysql CREATE TEMPORARY TABLE pour créer une table temporaire de recherche. Enregistres_y les données que tu recherches via INSERT INTO table <-> SELECT (requète imbriquée) et ensuite lance la recherche dans cette unique table. La création prendra un peu de temps mais ensuite la ou les recherches seront instantanées.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr