Copie et mise à jour de tables dans des bases différentes
Posté : 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 :
Si une âme charitable pouvait m'aider ce serait super... Un grand merci.
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]