par
moryason » 05 sept. 2022, 15:05
Bonjour à tous,
Je suis débutant en PHP MYSQL et je suis en train de développer un script de synchronisation des adhérents d'une association entre 2 bases de données différentes. En fait je possède 2 applications web qui ont chacune leurs bases et il faudrait que la table adhérent de la base1 soit la base temp_users de la base 2.
La table maître est adherents sur bdd1 et la table temp_users sur bdd2 se met à jour lorsqu'on lance le script...
Voici le code de ce que j'ai développé mais cela ne fonctionne pas et je ne comprends pas pourquoi :
Code : Tout sélectionner
<?
// BASE 2
$host2 = "XXXXXXX";
$user2 = "XXXXXXX";
$pass2 = "XXXXXXX";
$nbdd2 = "bdd2";
//BASE 1
$host1 = "XXXXXX";
$user1 = "XXXXXX";
$pass1 = "XXXXXX";
$nbdd1 = "bdd1"; // nom de la BD
$bdd1 = mysqli_connect($host1,$user1,$pass1,$nbdd1);
$bdd2 = mysqli_connect($host2,$user2,$pass2,$nbdd2);
$ReqTable1 = mysqli_query($bdd1,"SELECT rowid FROM adherent");
$ReqTable2 = mysqli_query($bdd2,"SELECT rowid FROM temp_users");
// définition des nombres d'entrées
$entreestable1 = mysqli_num_rows($ReqTable1);
$entreestable2 = mysqli_num_rows($ReqTable2);
//affichage des entrées :
echo "Table 1 : ";
printf ("%d \n", $entreestable1);
echo "Table 2 : ";
printf ("%d \n", $entreestable2);
echo "<br />";
//1-vérification des tables
//Si la table d'origine contient moins d'adhérents que la table destination
if ($entreestable1 < $entreestable2)
{
//1-Vidage de la table destination bdd2
mysqli_query($bdd2,"TRUNCATE table bdd2.temp_users");
echo "table vidée <br />";
//2-selection des colonnes id-ref pour avoir la correspondance de la table bdd1.adherent
$res1 = mysqli_query($bdd1,"SELECT * FROM bdd1.adherent") or die("<pre><b>MySQL Error:<b/>". mysqli_error($bdd1) ."</pre>");
while ($row1 = mysqli_fetch_array($res1, MYSQLI_BOTH))
{
// 3-copie des colonnes de bdd1.adherent dans bdd2.temp_users
mysqli_query($bdd2,"INSERT INTO bdd2.temp_users
VALUES ('".mysqli_real_escape_string($bdd2,$row1['rowid'])."','".mysqli_real_escape_string($bdd2,$row1['ref'])."','".mysqli_real_escape_string($bdd2,$row1['entity'])."','".mysqli_real_escape_string($bdd2,$row1['ref_ext'])."','".mysqli_real_escape_string($bdd2,$row1['gender'])."','".mysqli_real_escape_string($bdd2,$row1['civility'])."','".mysqli_real_escape_string($bdd2,$row1['lastname'])."','".mysqli_real_escape_string($bdd2,$row1['firstname'])."','".mysqli_real_escape_string($bdd2,$row1['login'])."','".mysqli_real_escape_string($bdd2,$row1['pass'])."','".mysqli_real_escape_string($bdd2,$row1['pass_crypted'])."','".mysqli_real_escape_string($bdd2,$row1['fk_adherent_type'])."','".mysqli_real_escape_string($bdd2,$row1['morphy'])."','".mysqli_real_escape_string($bdd2,$row1['societe'])."','".mysqli_real_escape_string($bdd2,$row1['fk_soc'])."','".mysqli_real_escape_string($bdd2,$row1['address'])."','".mysqli_real_escape_string($bdd2,$row1['zip'])."','".mysqli_real_escape_string($bdd2,$row1['town'])."','".mysqli_real_escape_string($bdd2,$row1['state_id'])."','".mysqli_real_escape_string($bdd2,$row1['country'])."','".mysqli_real_escape_string($bdd2,$row1['email'])."','".mysqli_real_escape_string($bdd2,$row1['socialnetworks'])."','".mysqli_real_escape_string($bdd2,$row1['phone'])."','".mysqli_real_escape_string($bdd2,$row1['phone_perso'])."','".mysqli_real_escape_string($bdd2,$row1['phone_mobile'])."','".mysqli_real_escape_string($bdd2,$row1['birth'])."','".mysqli_real_escape_string($bdd2,$row1['photo'])."','".mysqli_real_escape_string($bdd2,$row1['statut'])."','".mysqli_real_escape_string($bdd2,$row1['public'])."','".mysqli_real_escape_string($bdd2,$row1['datefin'])."','".mysqli_real_escape_string($bdd2,$row1['note_private'])."','".mysqli_real_escape_string($bdd2,$row1['note_public'])."','".mysqli_real_escape_string($bdd2,$row1['model_pdf'])."','".mysqli_real_escape_string($bdd2,$row1['datevalid'])."','".mysqli_real_escape_string($bdd2,$row1['datec'])."','".mysqli_real_escape_string($bdd2,$row1['tms'])."','".mysqli_real_escape_string($bdd2,$row1['fk_user_author'])."','".mysqli_real_escape_string($bdd2,$row1['fk_user_mod'])."','".mysqli_real_escape_string($bdd2,$row1['fk_user_valid'])."','".mysqli_real_escape_string($bdd2,$row1['canvas'])."','".mysqli_real_escape_string($bdd2,$row1['import_key'])."','".mysqli_real_escape_string($bdd2,$row1['url'])."')") or die("<pre><b>MySQL Error:<b/>". mysqli_error($bdd2) ."</pre>");
}
echo"Copie de la base effectuée <br />";
} elseif ($entreestable1 > $entreestable2) //si table d'origine est supérieure à table destination
{
echo"Mise à jour de la table destination <br />";
// 4-MAJ des nouveaux membres
echo"mise à jour des membres en cours ! <br />";
mysqli_query($bdd1,"INSERT INTO bdd2.temp_users SELECT * FROM bdd1.adherent WHERE rowid NOT IN (SELECT rowid FROM bdd2.temp_users)");
echo" - Sélection copiée <br />";
} else
{
echo "Les deux tables sont identiques <br />";
}
// 5-MAJ statuts actifs/inactifs. Si pas actifs "1" alors "0"
echo"Mise à jour des statuts <br />";
$result2 = mysqli_query($bdd1,"SELECT statut from bdd1.adherent WHERE statut != '1'" )or die("<pre><b>MySQL Error:<b/>". mysqli_error($bdd1) ."</pre>");
while ($row3 = mysqli_fetch_array($result2, MYSQLI_BOTH))
{
mysqli_query ($bdd2,"UPDATE bdd2.temp_users SET statut = '0'");
echo "désactivation de $row3[firstname]<br />";
}
echo " - MAJ des nouveaux membres effectuée <br /> Vous pouvez fermer cette fenêtre";
?>[/color]
Si une âme charitable pouvait m'aider ce serait super... Un grand merci.
Bonjour à tous,
Je suis débutant en PHP MYSQL et je suis en train de développer un script de synchronisation des adhérents d'une association entre 2 bases de données différentes. En fait je possède 2 applications web qui ont chacune leurs bases et il faudrait que la table adhérent de la base1 soit la base temp_users de la base 2.
La table maître est adherents sur bdd1 et la table temp_users sur bdd2 se met à jour lorsqu'on lance le script...
Voici le code de ce que j'ai développé mais cela ne fonctionne pas et je ne comprends pas pourquoi :
[code]
<?
// BASE 2
$host2 = "XXXXXXX";
$user2 = "XXXXXXX";
$pass2 = "XXXXXXX";
$nbdd2 = "bdd2";
//BASE 1
$host1 = "XXXXXX";
$user1 = "XXXXXX";
$pass1 = "XXXXXX";
$nbdd1 = "bdd1"; // nom de la BD
$bdd1 = mysqli_connect($host1,$user1,$pass1,$nbdd1);
$bdd2 = mysqli_connect($host2,$user2,$pass2,$nbdd2);
$ReqTable1 = mysqli_query($bdd1,"SELECT rowid FROM adherent");
$ReqTable2 = mysqli_query($bdd2,"SELECT rowid FROM temp_users");
// définition des nombres d'entrées
$entreestable1 = mysqli_num_rows($ReqTable1);
$entreestable2 = mysqli_num_rows($ReqTable2);
//affichage des entrées :
echo "Table 1 : ";
printf ("%d \n", $entreestable1);
echo "Table 2 : ";
printf ("%d \n", $entreestable2);
echo "<br />";
//1-vérification des tables
//Si la table d'origine contient moins d'adhérents que la table destination
if ($entreestable1 < $entreestable2)
{
//1-Vidage de la table destination bdd2
mysqli_query($bdd2,"TRUNCATE table bdd2.temp_users");
echo "table vidée <br />";
//2-selection des colonnes id-ref pour avoir la correspondance de la table bdd1.adherent
$res1 = mysqli_query($bdd1,"SELECT * FROM bdd1.adherent") or die("<pre><b>MySQL Error:<b/>". mysqli_error($bdd1) ."</pre>");
while ($row1 = mysqli_fetch_array($res1, MYSQLI_BOTH))
{
// 3-copie des colonnes de bdd1.adherent dans bdd2.temp_users
mysqli_query($bdd2,"INSERT INTO bdd2.temp_users
VALUES ('".mysqli_real_escape_string($bdd2,$row1['rowid'])."','".mysqli_real_escape_string($bdd2,$row1['ref'])."','".mysqli_real_escape_string($bdd2,$row1['entity'])."','".mysqli_real_escape_string($bdd2,$row1['ref_ext'])."','".mysqli_real_escape_string($bdd2,$row1['gender'])."','".mysqli_real_escape_string($bdd2,$row1['civility'])."','".mysqli_real_escape_string($bdd2,$row1['lastname'])."','".mysqli_real_escape_string($bdd2,$row1['firstname'])."','".mysqli_real_escape_string($bdd2,$row1['login'])."','".mysqli_real_escape_string($bdd2,$row1['pass'])."','".mysqli_real_escape_string($bdd2,$row1['pass_crypted'])."','".mysqli_real_escape_string($bdd2,$row1['fk_adherent_type'])."','".mysqli_real_escape_string($bdd2,$row1['morphy'])."','".mysqli_real_escape_string($bdd2,$row1['societe'])."','".mysqli_real_escape_string($bdd2,$row1['fk_soc'])."','".mysqli_real_escape_string($bdd2,$row1['address'])."','".mysqli_real_escape_string($bdd2,$row1['zip'])."','".mysqli_real_escape_string($bdd2,$row1['town'])."','".mysqli_real_escape_string($bdd2,$row1['state_id'])."','".mysqli_real_escape_string($bdd2,$row1['country'])."','".mysqli_real_escape_string($bdd2,$row1['email'])."','".mysqli_real_escape_string($bdd2,$row1['socialnetworks'])."','".mysqli_real_escape_string($bdd2,$row1['phone'])."','".mysqli_real_escape_string($bdd2,$row1['phone_perso'])."','".mysqli_real_escape_string($bdd2,$row1['phone_mobile'])."','".mysqli_real_escape_string($bdd2,$row1['birth'])."','".mysqli_real_escape_string($bdd2,$row1['photo'])."','".mysqli_real_escape_string($bdd2,$row1['statut'])."','".mysqli_real_escape_string($bdd2,$row1['public'])."','".mysqli_real_escape_string($bdd2,$row1['datefin'])."','".mysqli_real_escape_string($bdd2,$row1['note_private'])."','".mysqli_real_escape_string($bdd2,$row1['note_public'])."','".mysqli_real_escape_string($bdd2,$row1['model_pdf'])."','".mysqli_real_escape_string($bdd2,$row1['datevalid'])."','".mysqli_real_escape_string($bdd2,$row1['datec'])."','".mysqli_real_escape_string($bdd2,$row1['tms'])."','".mysqli_real_escape_string($bdd2,$row1['fk_user_author'])."','".mysqli_real_escape_string($bdd2,$row1['fk_user_mod'])."','".mysqli_real_escape_string($bdd2,$row1['fk_user_valid'])."','".mysqli_real_escape_string($bdd2,$row1['canvas'])."','".mysqli_real_escape_string($bdd2,$row1['import_key'])."','".mysqli_real_escape_string($bdd2,$row1['url'])."')") or die("<pre><b>MySQL Error:<b/>". mysqli_error($bdd2) ."</pre>");
}
echo"Copie de la base effectuée <br />";
} elseif ($entreestable1 > $entreestable2) //si table d'origine est supérieure à table destination
{
echo"Mise à jour de la table destination <br />";
// 4-MAJ des nouveaux membres
echo"mise à jour des membres en cours ! <br />";
mysqli_query($bdd1,"INSERT INTO bdd2.temp_users SELECT * FROM bdd1.adherent WHERE rowid NOT IN (SELECT rowid FROM bdd2.temp_users)");
echo" - Sélection copiée <br />";
} else
{
echo "Les deux tables sont identiques <br />";
}
// 5-MAJ statuts actifs/inactifs. Si pas actifs "1" alors "0"
echo"Mise à jour des statuts <br />";
$result2 = mysqli_query($bdd1,"SELECT statut from bdd1.adherent WHERE statut != '1'" )or die("<pre><b>MySQL Error:<b/>". mysqli_error($bdd1) ."</pre>");
while ($row3 = mysqli_fetch_array($result2, MYSQLI_BOTH))
{
mysqli_query ($bdd2,"UPDATE bdd2.temp_users SET statut = '0'");
echo "désactivation de $row3[firstname]<br />";
}
echo " - MAJ des nouveaux membres effectuée <br /> Vous pouvez fermer cette fenêtre";
?>[/color]
[/code]
Si une âme charitable pouvait m'aider ce serait super... Un grand merci.