je suis en train de m'arracher la tête sur le problème suivant : j'ai 2 tableaux ($existant et $reference) que je compare pour supprimer dans $existant ce qui ne se trouve pas dans $reference à l'aide de la fonction array_diff qui me renvoit un tableau $a_supprimer.
Mon problème est que j'utilise pour ça un champs qui tolère des doublons. De ce fait, lorsque je parcours le tableau $a_supprimer, la première ligne ayant la valeur est effectivement supprimée, mais elle joue un rôle de "fusible" pour les autres : en effet, le tableau $a_supprimer contient une seule fois chacune des valeurs à supprimer, même si elles sont présentes plusieurs fois dans la base.
Je ne sais pas trop comment m'y prendre, car j'utilise en même temps la même portion de code pour tester si tout va bien : je souhaite donc "simuler" l'effacement avec toutes les valeurs correspondantes. Ca donne quelque chose comme ça :
<?php
// code de base. Problème : utiliser un champs de référence où les doublons sont tolérés,
// alors que le processus de suppression des lignes s'effectue en parcourant un tableau
// ne contenant qu'une seule occurence des lignes avec ces doublons.
$a_supprimer = array_diff ($reference, $existant);
foreach $a_supprimer as &$valeur)
{
$username = $valeur ;
// le tableau $database contient ce dont j'ai besoin pour pas refaire une requête à chaque ligne
$email = $database['email'];
$id = $database['id'];
if ($test)
{
echo "On aurait supprimé $username avec l'email $email";
}
else
{
courriel ($username, $email, $goodbye);
change ($id, 1);
efface ($username);
if ($username = 'doublon')
//recommence tout...
}
}