Bonjour à tous,
Je m'évertue depuis plusieurs jours à déterminé les différentes valeurs de 2 tableaux.
J'emploie ces tableaux lors d'UPDATE d'un table de liaison.
Lorsque l’utilisateur change des valeurs (il s'agit d'une liste checkbox).
Je vérifie que celle saisies par l'utilisateur correspondent à celle enregistrée dans la BD
- Lorsque les valeurs sont identiques je ne touche pas la table de liaison
- Lorsqu'une valeur disparaît => DELETE de la ligne
- Lorsqu'un valeur est ajoutée => INSERT un nouvelle ligne
J'ai essayer avec les fonctions array_diff(), array_intersect() sans succès. Il me manquait toujours la valeur d'un nouvel élément.
Pour fini, j'y suis arrivé... YES!
Est-ce que mon système est infaillible? Est-ce qu'il est possible de le simplifier?? On peut rêver...
Voici ce que j'ai pondu:
D'avance merci les testeurs.
Stéphane
Je m'évertue depuis plusieurs jours à déterminé les différentes valeurs de 2 tableaux.
J'emploie ces tableaux lors d'UPDATE d'un table de liaison.
Lorsque l’utilisateur change des valeurs (il s'agit d'une liste checkbox).
Je vérifie que celle saisies par l'utilisateur correspondent à celle enregistrée dans la BD
- Lorsque les valeurs sont identiques je ne touche pas la table de liaison
- Lorsqu'une valeur disparaît => DELETE de la ligne
- Lorsqu'un valeur est ajoutée => INSERT un nouvelle ligne
J'ai essayer avec les fonctions array_diff(), array_intersect() sans succès. Il me manquait toujours la valeur d'un nouvel élément.
Pour fini, j'y suis arrivé... YES!
Est-ce que mon système est infaillible? Est-ce qu'il est possible de le simplifier?? On peut rêver...
Voici ce que j'ai pondu:
$categoriesBefore = array("courir", "sport", "santé", "minimaliste");
$categoriesNew = array("courir", "santé", "sport","karaté");
echo "Before: ".implode(', ',$categoriesBefore)."<br />";
echo "New: ".implode(', ',$categoriesNew)."<br />";
/////////////////////////////////
for($i=0;$i<count($categoriesBefore);$i++) {
if (in_array($categoriesBefore[$i],$categoriesNew)){
$var_before[]=$categoriesBefore[$i]; // ces valeurs n'ont pas changées
}else{
$var_not_exist[]=$categoriesBefore[$i]; // ces valeurs n'existent plus dans les nouvelles catégories'
}
}
for($i=0;$i<count($categoriesNew);$i++) {
if (!in_array($categoriesNew[$i],$categoriesBefore)){
$var_new[]=$categoriesNew[$i]; // ces valeurs sont nouvelles
}
}
echo " Valeur d'origine: ".implode(', ', $var_before)."<br />";
echo " Nouvelle valeurs: ".implode(', ', $var_new)."<br />";
echo "Valeur à supprimer: ".implode(', ', $var_not_exist)." <br />";
///////////////////////////////
D'avance merci les testeurs.
Stéphane