Problème de code suite à une maj PhP : while dans un while
jordane45 Messages postés 40050 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
J'ai un problème sur quelques pages de mon site web suite à une mise à jour de php sur le serveur. Peut-être pourriez-vous m'aider ?
Le problème est le même sur toutes les pages, et provient à mon sens d'une erreur d'écriture de code PhP, consistant à faire une boucle while à l'intérieure d'une boucle while.
voici un exemple de code épuré qui renvoie cette erreur (la ligne 162 étant l'ouverture du while 1 dans l'exemple) :
Unclosed '{' on line 162 in /var/www/cielmonbivouac/materiel2.php on line 205'
// Récupération des informations
$bdd_materiel_categorie = $bdd->query('SELECT * FROM materiel_categorie'); // on charge les différentes catégorie de matériel
while ($donnees_materiel_categorie = $bdd_materiel_categorie->fetch())
{ //boucle while 1
?>
<!-- On créé ici les sections (catégorie) qui vont acceuillir les différents item. On définie également si ce sera ouvert ou fermé à l'ouverture de la page -->
<section id="<?php echo $donnees_materiel_categorie['categorie']; ?>" class="<?php echo $donnees_materiel_categorie['ouvert']; ?>">
<?php
$bdd_materiel_item = $bdd->query('SELECT * FROM materiel_item WHERE categorie = "' . $donnees_materiel_categorie['categorie'] . '" AND etat = "en_cour_utilisation" ORDER BY sous_categorie');
while ($donnees_materiel_item = $bdd_materiel_item->fetch())
{ // boucle while 2
?>
<?php
} // fin boucle while 2
?>
<!-- On ferme la section (catégorie) du matériel -->
</section>
<?
} // fin de boucle while 1
?>
Une aide serait grandement appréciée svp, car je sèche complètement, d'autant que ce code marchait depuis plusieurs années maintenant... Merci par avance !!
Eric L
Windows / Firefox 111.0
- Problème de code suite à une maj PhP : while dans un while
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- È maj - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
1 réponse
Bonjour,
Pourrais tu :
- Nous poster le code COMPLET du script concerné
- Le message d'erreur complet tel qu'il est affiché sur ton site
car là.. ton message indique deux numéros de lignes... ce qui n'est pas vraiment habituel...
NB1 : Une boucle while dans une boucle while .. ne génère pas d'erreur ... quelle que soit la version de php
NB2 : Faire des boucles dans des boucles (qui font des requêtes sql ) est à éviter autant qu'on le peut.
Clairement, il semble que tu puisses améliorer ton code en simplement effectuant une jointure sur ta requête sql.
Regarde, par exemple, ce que donne cette requête :
SELECT MC.categorie, ,MC.ouvert ,MI.* FROM materiel_item MI LEFT JOIN materiel_categorie MC ON MC.categorie = MI.categorie WHERE MI.etat = 'en_cour_utilisation' ORDER BY MC.categorie ASC , MI.sous_categorie ASC
NB3: Si tu utilises PDO, il serait souhaitable de passer aux requêtes préparées... je t'invite, par ailleurs, à appliquer ce qui est indiqué ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs