Page 1 sur 1

Connexion a plusieurs bases de données

Posté : 01 janv. 2007, 17:00
par katagoto
Bonjour à tous :wink: , voilà j'aimerais interconnecter 2 bases de données sur deux serveur différents distincts pour les comparer, oui j'ai perdu les bases c'est léffet des fêtes, j'ai imaginer un code rudimentaire vite fait :
<?php
// connection01
mysql_connect("sql01", "pseudo01", "pass01");
mysql_select_db("bdd01");

// On utilise la requête suivante pour récupérer les 10 dernières entrées :
$reponse1 = mysql_query("SELECT * FROM test ORDER BY ID DESC LIMIT 0,10");

// On se déconnecte de MySQL
mysql_close();

// connection02
mysql_connect("sql02", "pseudo02", "pass02");
mysql_select_db("bdd02");

// On utilise la requête suivante pour récupérer les 10 dernières entrées :
$reponse2 = mysql_query("SELECT * FROM test ORDER BY ID DESC LIMIT 0,10");

// On se déconnecte de MySQL
mysql_close();
while ($donnees = mysql_fetch_array($reponse1) && $donnees2= mysql_fetch_array($reponse2))
{
echo 'Bdd 1 : '.$donnees[txt].'';
echo 'Bdd 2 : '.$donnees2[txt].'';

if ($donnees[time] => $donnees2[time]) 
{
echo ''.$donnees[time].' est supérieur '.$donnees2[time].'';
}

if ($donnees[time] < $donnees2[time]) 
{
echo ''.$donnees[time].' est inférieur'.$donnees2[time].'';
}

else 
{
echo ''.$donnees[time].' est ?? à '.$donnees2[time].' problème';
}
}
?>
Biensûr ça bug :
Parse error: syntax error, unexpected T_DOUBLE_ARROW in /mnt/141/sdb/5/3/knightoffear/testbdd.php on line 26
Dites moi si le principe est bon au moins et où est l'erreur de mon script, d'avance merci :roll:

Bonne fêtes à tous ^^

Oups si un modérateur pouvait déplacer mon message dans la bonne partie :oops: d'avance merci

Posté : 01 janv. 2007, 17:10
par jojolapine
à priori le problème se situe içi:
if ($donnees[time] => $donnees2[time])
, il faut remplacer le "=>" par ">="
cf http://fr.php.net/manual/fr/language.op ... arison.php

Posté : 01 janv. 2007, 19:24
par katagoto
Merci mais il y a un truc louche :

Il m'affiche :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/141/sdb/5/3/knightoffear/testbdd.php on line 21

Posté : 01 janv. 2007, 20:24
par Truc
Un peu d'aide pour plus de détails.

Posté : 01 janv. 2007, 21:04
par Xenon_54
Tu ne pourras faire de mysq_fetch_* si tu fermes la connexion.

mysql_connect() retourne une ressource MySQL. Il faut utiliser cette variable si tu veux avoir la possibilité d'avoir 2 connexions simultanées:
<?php
// connection01
$db1 = mysql_connect("sql01", "pseudo01", "pass01");
mysql_select_db("bdd01", $db1);

// On utilise la requête suivante pour récupérer les 10 dernières entrées :
$reponse1 = mysql_query("SELECT * FROM test ORDER BY ID DESC LIMIT 0,10", $db1);

// connection02
$db2 = mysql_connect("sql02", "pseudo02", "pass02");
mysql_select_db("bdd02", $db2);

// On utilise la requête suivante pour récupérer les 10 dernières entrées :
$reponse2 = mysql_query("SELECT * FROM test ORDER BY ID DESC LIMIT 0,10", $db2);

// BOUCLE

mysql_close($db1);
mysql_close($db2);
?>

Posté : 01 janv. 2007, 21:56
par katagoto
Merci a vous deux ça m'a pratiquement tout débloqué, oui encore un truc :

Voilà donc j'aimerais les comparer et éventuellement entré les même valeures dans l'une et dans l'autre des bases de données, une sorte de mise à jour inter-site
J'avais imaginé, avant la réponse :wink: ce shéma, esce-bon ???
<?php
while ($donnees = mysql_fetch_array($reponse1) && $donnees2= mysql_fetch_array($reponse2))
{
echo 'Bdd 1 : '.$donnees[txt].'';
echo 'Bdd 2 : '.$donnees2[txt].'';

if ($donnees[time] >= $donnees2[time]) 
{
echo ''.$donnees[time].' est supérieur '.$donnees2[time].'';
}

if ($donnees[time] < $donnees2[time]) 
{
echo ''.$donnees[time].' est inférieur'.$donnees2[time].'';
}

else 
{
echo ''.$donnees[time].' est ?? à '.$donnees2[time].' tu foire quoi';
}
}
?>
Esce possible d'avoir plus de connexion simultanées c'est pas grave si on peut pas... :wink:

Posté : 01 janv. 2007, 22:21
par Truc
Le dernier "else" ne sert à rien les 2 premiers cas incluent toutes les possibilités.
D'ailleurs tu n'as pas trouvé de pti mot qui va avec :lol:

Précise bien les indices des tableaux avec des guillemets :
$donnees["txt"]
Tu peux boucler sur les résultats mais si les 2 requêtes ne renvoient pas le même nombre de tuples (lignes de données) tous les résultats ne seront pas traités.