Je butte sur quelques lignes de php et mysql, où la màj d'un élément de table doublonne systématiquement. Ayant déjà passé de nombreuses heures infructueuses sur ce pépin, je serais ravi de trouver ici un bon conseil de dépannage. Voici le bloc de script qui pose problème. J'explique plus bas ce que je veux résoudre:
- Code: Tout sélectionner
$req = "SELECT id, cb_pass1_1, cb_pass2_1, cb_pass3_1, cb_pass4_1, cb_pass5_1, cb_pass1_2, cb_pass2_2, cb_pass3_2, cb_pass4_2, cb_pass5_2 FROM syw7g_comprofiler WHERE id=".$id;
$maj = $conn->query("SET NAMES utf8");
$maj = $conn->query($req) or die('Erreur SQL !<br>'.$req.'<br>'.mysqli_error());
$nba = $maj->num_rows;
if ($nba>0) {
$arr = mysqli_fetch_row($maj); // enregt unique du conducteur sélectionné
mysqli_free_result($maj);
echo "Nombre de places demandées = " .$places. "<br />";
$nb_reserv = 0;
$maj_res = 'N';
if ($no_trajet === 'A') {
for ($iii=1; $iii<6; $iii++) {
if ($arr[$iii]=='') {
$maj_res = 'O';
$arr[$iii] = $name_dem; // nom de celui qui réserve
++$nb_reserv;
if ($nb_reserv == $places) break;
} // fin if ($arr...
} // fin for
if ($maj_res == 'O') {
$req = "UPDATE syw7g_comprofiler SET cb_pass1_1 = '" . $arr[1] . "', cb_pass2_1 = '" . $arr[2] . "', cb_pass3_1 = '" . $arr[3] . "', cb_pass4_1 = '" . $arr[4] . "', cb_pass5_1 = '" . $arr[5] . "' WHERE id=".$id;
$maj = $conn->query("SET NAMES utf8");
$maj = $conn->query($req) or die('Erreur SQL !<br>'.$req.'<br>'.mysqli_error());
mysqli_free_result($maj);
}
} // fin trajet A
Je cherche à mettre à jour une table où chaque ligne représente un conducteur. C'est ce que je sélecte au début. Les champs cb_xx représentent les 5 réservations possibles pour un trajet aller, puis les 5 du trajet retour.
Les lignes qui suivent sont ici pour enregistrer une nouvelle réservation par l'utilisateur ($name_dem), pour le trajet Aller seulement.
Le système fonctionne, mais lorsque je modifie par ex. le champ cb_x par le nom du demandeur lors d'une réservation par l'utilisateur, le champ immédiatement suivant est également modifié avec le même nom de demandeur. Et ceci, même si la demande de réservation ne porte que sur 1 réservation !
J'ai pisté le fonctionnement en faisant apparaître à l'écran, et en clair, les points de passage et les champs en cours de mise à jour: tout est nickel d'après le cheminement à l'écran. Mais quand j'analyse ensuite le contenu de ma table avec phpmyadmin: chaque réservation est double !
Alors j'ai imaginé que j'avais peut-être un problème de gestion des buffers, de cache, etc... Mais malgré bien des modifs, rien n'y fait.
Je n'arrive pas à interpréter ce phénomène de doublons.
Merci pour vos conseils éclairés.