Mon environnement de travail
Joomla 3.9.5, CB 2.4.1, Php 7.2, Apache, Mysql
Mon problème
Bonjour,
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:
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.
Voici ci-dessous le dump du tableau $arr[] AVANT la màj provoquée par la réservation d'un passager:
Et voici le dump du même tableau utilisé pour le Update, donc tenant compte de la réservation d'une place par le passager "Lendrevie Claude":
Tout ceci est tout à fait correct. C'est ce que j'attends, exactement.
Mais le pépin, c'est que la vérification de la table après cette réservation, dans le script et par Phpmyadmin donne:
nb: dans ces dumps, je n'ai laissé que les 6 premiers champs, en cohérence avec ce que je montre ici de mon script
Poussant plus loin mes recherches, voici ce que je viens de détecter entre différentes versions:
1. version en "local": Joomla 3.9.3 (+ CB 2.4.1, Php7.2, Apache, Mysql) = aucun doublon dans la base après un tel UPDATE,
2. version sur site O2switch: Joomla 3.9.4 (+ identique ci-dessus) = aucun doublon dans la base après un tel UPDATE,
3. version sur site O2switch: Joomla 3.9.5 stable Amani (+ identique ci-dessus) = doublon dans la base après un tel UPDATE.
Dernières précisions
* j'obtiens strictement les mêmes constats avec les navigateurs Mozilla 5 (cf. firefox) & Chromium,
* j'ai tenté différents réglages tels que: avec cache Joomla, sans cache Joomla, avec Jch Optimize activé, sans Jch Optimize, ...
et toujours avec Joomla 3.9.5: le dysfonctionnement d'un UPDATE est constant.
QUESTION: n'y aurait-il pas un bug propre à Joomla 3.9.5 ?
Joomla 3.9.5, CB 2.4.1, Php 7.2, Apache, Mysql
Mon problème
Bonjour,
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 PHP:
$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 />";
print_r($arr);
$nb_reserv = 0;
$maj_res = 'N';
if ($no_trajet === 'A') {
for ($iii=1; $iii<6; $iii++) {
if (empty($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);
print_r($arr);
}
} // fin trajet A
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.
Voici ci-dessous le dump du tableau $arr[] AVANT la màj provoquée par la réservation d'un passager:
Code:
Array ( [0] => 880 [1] => Lancelot du lac Martin [2] => [3] => [4] => [5] => (indisponible)
Code:
Array ( [0] => 880 [1] => Lancelot du lac Martin [2] => Lendrevie Claude [3] => [4] => [5] => (indisponible)
Mais le pépin, c'est que la vérification de la table après cette réservation, dans le script et par Phpmyadmin donne:
Code:
880 [1] => Lancelot du lac Martin [B][2] => Lendrevie Claude [3] => Lendrevie Claude[/B] [B][4][/B] => [5] => (indisponible)
Poussant plus loin mes recherches, voici ce que je viens de détecter entre différentes versions:
1. version en "local": Joomla 3.9.3 (+ CB 2.4.1, Php7.2, Apache, Mysql) = aucun doublon dans la base après un tel UPDATE,
2. version sur site O2switch: Joomla 3.9.4 (+ identique ci-dessus) = aucun doublon dans la base après un tel UPDATE,
3. version sur site O2switch: Joomla 3.9.5 stable Amani (+ identique ci-dessus) = doublon dans la base après un tel UPDATE.
Dernières précisions
* j'obtiens strictement les mêmes constats avec les navigateurs Mozilla 5 (cf. firefox) & Chromium,
* j'ai tenté différents réglages tels que: avec cache Joomla, sans cache Joomla, avec Jch Optimize activé, sans Jch Optimize, ...
et toujours avec Joomla 3.9.5: le dysfonctionnement d'un UPDATE est constant.
QUESTION: n'y aurait-il pas un bug propre à Joomla 3.9.5 ?
Commentaire