Page 1 sur 1

Liaison à plusieur BDD pour fonction recherche

Posté : 29 août 2010, 18:38
par sagittaire57
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:

Re: Liaison à plusieur BDD pour fonction recherche

Posté : 30 août 2010, 10:13
par FlyPhp
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...

Re: Liaison à plusieur BDD pour fonction recherche

Posté : 30 août 2010, 10:17
par FlyPhp
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

Re: Liaison à plusieur BDD pour fonction recherche

Posté : 30 août 2010, 13:14
par Aureusms
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.