Problème de code suite à une maj PhP : while dans un while

Fermé
Cielmonbivouac - 13 avril 2023 à 16:01
jordane45 Messages postés 38299 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 novembre 2024 - 13 avril 2023 à 17:27

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

A voir également:

1 réponse

jordane45 Messages postés 38299 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 novembre 2024 4 704
Modifié le 13 avril 2023 à 17:29

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


0