soucis avec 2 while dans un while

Eléphant du PHP | 297 Messages

03 sept. 2020, 14:52

Bonjour,

J'ai un symptôme gênant lors d'un update.

J'ai un formulaire qui est à l'affichage d'une ligne avec 5 champs, dont 2 menu déroulants dynamiques appelant les données dans une base, et donc en boucle avec while.

Cette ligne est aussi en boucle avec while. Elle englobe donc les deux boucles des menus déroulants. (affichage d'une douzaine de ligne, avec un bouton update pour chacune).

Une fois sur deux, après l'update, j'ai le sablier qui tourne, en terminant avec un message d'erreur apres 15s 'Gateway Timeout

The gateway did not receive a timely response from the upstream server or application.'

La mise a jour a pourtant été enregistré. D'ailleurs, si durant la période du sablier, je demande la mise a jour d'une autre ligne, elle est aussi enregistré.

J'ai fait beaucoup de tes pour essayer de localiser le problème.

En supprimant le premier menu deroulant (code_journee), je n'ai plus le soucis. Ce qui n'est pas vrai si je supprime le second (code_hotel).Je ne vois pourtant pas de problème d'écriture dans le code.

Voici la requete

Code : Tout sélectionner

if(isset($_POST['form1'])) { // Réecriture des variables $id=$_POST['id']; $date=$_POST['date']; $jour=$_POST['jour']; $code_journee=$_POST['code_journee']; $notes=mysqli_real_escape_string($connect, $_POST['notes']); $code_hotel=$_POST['code_hotel']; $majcontenu="UPDATE devis_itineraires SET date='$date', jour='$jour', code_journee='$code_journee', notes='$notes', code_hotel='$code_hotel' WHERE id = '$id' "; // Exécution de la requête $enr=mysqli_query($connect, $majcontenu); // Contrôle sur la requête if(!$enr) { die('Erreur SQL !'.$majcontenu.'<br />'.mysqli_error()); } else { header("Location: modif-itineraire.php?codeitineraire=$codeitineraire&version=$version"); } }
et le formulaire

Code : Tout sélectionner

while($donnees = mysqli_fetch_assoc($itineraire)) {?> <form id="form1" name="form1" method="post" action="modif-itineraire.php?codeitineraire=<?php echo $donnees['code_circuit']; ?>&version=<?php echo $donnees['version']; ?>"> <table width="98%" border="0"> <tr> <td width="10%"><div align="center"> <input type="date" name="date" value="<?php echo htmlentities($donnees['date'], ENT_COMPAT, 'UTF-8'); ?>" size="20" /> </div></td> <td width="5%"><div align="center"><input type="text" name="jour" value="<?php echo htmlentities($donnees['jour'], ENT_COMPAT, 'UTF-8'); ?>" size="20" /></div></td> <td width="35%"><div align="center"><select id="code_journee" name="code_journee"> <?php mysqli_data_seek($base_contenus,0); do { if ($donneescontenus['code_journee'] == $donnees['code_journee']) { $selected = 'selected'; } else { $selected = ''; } ?> <option value="<?php echo $donneescontenus['code_journee']; ?>"<?php echo $selected; ?>><?php echo $donneescontenus['menu_deroulant']; ?></option> <?php } while($donneescontenus = mysqli_fetch_assoc($base_contenus)); ?> </select></div></td> <td width="15%"><div align="center"> <textarea name="notes" cols="20" rows="1"><?php echo htmlentities($donnees['notes'], ENT_COMPAT, 'UTF-8'); ?></textarea> </div></td> <td width="25%"><div align="center"><select name="code_hotel"> <?php mysqli_data_seek($hotels,0); while($donneeshotels = mysqli_fetch_assoc($hotels)) { if ($donneeshotels['code_hotel'] == $donnees['code_hotel']) { $selected = 'selected'; } else { $selected = ''; } ?> <option value="<?php echo $donneeshotels['code_hotel']; ?>"<?php echo $selected; ?>><?php echo $donneeshotels['pays_hotel']; echo "&nbsp"; echo $donneeshotels['ville_hotel']; echo "&nbsp"; echo $donneeshotels['nom_hotel']; ?></option> <?php } ?> </select> </div></td> <td width="5%"> <table width="25" height="25" border="0"> <tr> <td width="5%"><div align="center"><button name="button">Maj</button> <input type="hidden" name="form1" value="form1" /> <input type="hidden" name="id" value="<?php echo $donnees['id']; ?>" /></div></td> <td width="5%"><div align="center"><a href="devis-traitement-suppression.php?id=<?php echo $donnees['id']; ?>&codeitineraire=<?php echo $donnees['code_circuit']; ?>&version=<?php echo $donnees['version']; ?>"><img src="../../icones/corbeille.gif" alt="jeter" width="20" height="20" border="0" /></a></div></td> </tr> </table> </div></td> </tr> </table> </form>
Je suis coincé !

Merci pour votre aide et conseil

Mammouth du PHP | 2703 Messages

03 sept. 2020, 15:18

je ne vois pas le } pour
while($donnees = mysqli_fetch_assoc($itineraire)) {?>
il y est bien dans le reste du code ?

Eléphant du PHP | 297 Messages

03 sept. 2020, 16:13

Oui, le } du permier while est bien présent derriere le </form> du bas