Problème de boucle

Eléphanteau du PHP | 28 Messages

26 mai 2008, 17:00

bonjour,

J'ai réalisé le code ci-dessous qui fonctionnait très bien depuis un autre ordinateur mais depuis le miens, j'obtiens le message d'erreur suivant, je ne comprends pas si quelqu'un pouvait m'éclaircir.

Warning: current(): Passed variable is not an array or object in c:\users\nasbe\desktop\escobar\menu.inc.php on line 5


<div class='menu'>
	<li class='menu'><a href='$baseurl/index.php'><img src='img/escobar_logo.png' alt='Escobar' border='0'/></a></li>

<?php
	while ( current($menu) ) {
		$texte = current($menu);
		next($menu);
		$lien = current($menu);
		next($menu);
		#echo "$texte $lien $baseurl\n";
		echo "<li class='menu'><a href='$baseurl/index.php?page=$lien'>$texte</a></li>";
	}
?>

</div>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 mai 2008, 17:18

Est-ce que tu as essayé de comprendre le message d'erreur ?

En français, ça dit que la variable que tu passes à la fonction current() à la ligne 5 de ton code n'est pas un tableau ou un objet.
Cela signifie que cette fonction attend un objet ou un tableau comme paramètre et que ce que tu lui passe n'en est pas un ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 28 Messages

26 mai 2008, 17:33

Ok, mais lorsque je l'ai fait depuis une autre machine, il m'affichait tout correctement sans erreur et je n'ai pas touché au code.

ce que j'aimerai faire c'est d'afficher un menu en haut avec toute mes rubriques. Pourrais-tu me donner une piste je navigue.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 mai 2008, 17:51

pas de soucis, mais il faut que tu essayes de comprendre ce qu'il se passe pour y arriver ;)

Si c'est la variable $menu qui pose problème, fait un var_dump() pour savoir ce qu'elle contient. Si elle ne contient pas ce que tu veux essaye de remonter la piste pour savoir si elle est instanciée correctement.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 28 Messages

26 mai 2008, 17:57

En fait, quand je place le fichier index.php ci-dessous au même niveau dans le répertoire que les autres fichiers php, tout ce passe correctement à l'affichage. Par contre les liens sur les autres pages ne fonctionnent pas. Hors lorsque je met le fichier index.php ailleurs, j'ai le message d'erreur qui apparait sur ma page menu mais par contre je peux aller voir sur toute les autres pages.

Code : Tout sélectionner

<?php include 'header.inc.php'; echo "<div class='wrap'>"; include 'menu.inc.php'; echo "<div class='main'>"; if ( isset($_GET['page']) ) { include $_GET['page'].'.inc.php'; } else { include 'home.inc.php'; } echo "</div>"; include 'sidebar.inc.php'; include 'footer.inc.php'; echo "</div>"; ?>
Et voici le contenu de mon tableau

Code : Tout sélectionner

$menu = array( 'Accueil', 'main', 'Agenda', 'agenda', 'Galerie Photos', 'photos', 'Réservations', 'reserv', 'Forum', 'forum', 'Artistes', 'artist', 'Contact', 'contact', );
Modifié en dernier par nasbe le 26 mai 2008, 18:00, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 mai 2008, 17:58

il faut savoir que quand tu fais un include, il le fait par rapport au fichier qui a été appelé par le navigateur, pas par rapport au fichier qui contient le include ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer