Connexion a plusieurs bases de données

Mammouth du PHP | 1668 Messages

01 janv. 2007, 17:00

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
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 3607 Messages

01 janv. 2007, 17:10

à 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

Mammouth du PHP | 1668 Messages

01 janv. 2007, 19:24

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
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 janv. 2007, 20:24

Un peu d'aide pour plus de détails.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 1885 Messages

01 janv. 2007, 21:04

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);
?>
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 1668 Messages

01 janv. 2007, 21:56

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:
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 janv. 2007, 22:21

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute