Page 1 sur 1

requête sur 2 bases

Posté : 11 janv. 2006, 19:24
par pierre
Bonjour à tous,

j'ai un petit pb pour simplifier une requête sur 2 bases distinctes ...
fichier db_ouvre.php
<?
$db_1 = mysql_connect($serveur_local,$user_local,$pass_local) or die ("erreur de connexion");
mysql_select_db($bd_local,$db_1) or die ("erreur de connexion base");
$db_2 = mysql_connect($serveur_distant,$user_distant,$pass_distant,TRUE) or die ("erreur de connexion");
mysql_select_db($bd_distant,$db_2) or die ("erreur de connexion base");
?>
la (enfin les requêtes), 1 sur chaque base
<?
require "db_ouvre.php";
$req_test=mysql_query("select champ_1 from tbl_1 where ichamp='2'",$db_1);
	if (mysql_num_rows($req_test)!="0")
	{
		while($result_req_test = mysql_fetch_array($req_test))
		{
		echo $result_req_test['champ_1']."<br />";
		}
	}
$req_test=mysql_query("select champ_2 from tbl_2 where ichamp='2'",$db_2);
	if (mysql_num_rows($req_test)!="0")
	{
		while($result_req_test = mysql_fetch_array($req_test))
		{
		echo $result_req_test['champ_2']."<br />";
		}
	}
?>
Cela marche parfaitement, mais n'y a t-il pas une solution pour ne faire qu'une requête sur les 2 bases à la fois ?

merci d'avance de vos suggestions et lumières :wink:

Posté : 11 janv. 2006, 21:48
par rami
Tu ne peux pas faire cela en une requête car tes 2 bases sont hébergées sur 2 serveurs différents.

Posté : 11 janv. 2006, 23:00
par Cyrano
Quand bien même les deux bases seraient sur le même serveur, elles sont indépendantes et il faut deux connexions distinctes. Je doute fort qu'on puisse faire communiquer deux bases directement entre elles :-k

Posté : 12 janv. 2006, 09:57
par pierre
merci de vos réponses

je continue malgré tout à chercher un truc du style
$req_test=mysql_query("select $db_1.tbl_1.champ_1, $db_2.tbl_2.champ_2 where $db_1.tbl_1.ichamp='2',$db_2.tbl_2.ichamp='2'");
je sais c'est tordu et ça ne marche pas :lol:

Posté : 12 janv. 2006, 11:12
par Ripat
Quand bien même les deux bases seraient sur le même serveur, elles sont indépendantes et il faut deux connexions distinctes. Je doute fort qu'on puisse faire communiquer deux bases directement entre elles :-k
Si, si, c'est posssible en préfixant le nom des tables par le nom de la base de donnée:wink:

Code : Tout sélectionner

SELECT base1.tableA.col_a, base2.tableA.col_a FROM base1.tableA, base2.tableA
Tu ne peux pas faire cela en une requête car tes 2 bases sont hébergées sur 2 serveurs différents.


Exact. L'appel à la fonction mysql_query() demande un et un seul identifiant de connexion. Deux serveurs --> deux mysql_query()

Pierre -> Tu peux simplement fusionner les résultats des deux queries dans un tableau PHP non?

Posté : 12 janv. 2006, 11:29
par pierre
merci, c'est la solution que je vais adopter je crois, faute de mieux ...