Je débute dans les tableau

Eléphanteau du PHP | 43 Messages

18 déc. 2006, 23:32

Bonjour à tous er merci par avance de votre aide. J'ai un petit problème pour récupérer un nombre de variable indeterminé àl'avanve:
	if(isset($id_pere)){
	
		$selection_barnav = "SELECT id,place,titre FROM texte_accueil WHERE id_pere=$id_pere ORDER BY place";
		$requete_barnav = mysql_query($selection_barnav) or die($requete_echouee);
		while($resultat_barnav = mysql_fetch_object($requete_barnav)){
		
			$navigation = "<a href='".$page.".php?idArcticle=".$resultat_barnav->id."' class='barnav_simple'>  - ".$resultat_barnav->titre."</a></font>";

		}
La variable $id_pere étant un nombre déterminé par le lien.
Je cherche à récupérer la variable $navigation pour chaque réponse. Je pensais donc incrémenter un tableau.
Je fais cela car bans ma barnav :
<a href='qui.php' class='barnav'>Qui sommes nous ?</a><br>";
				 					if($id_pere==2){echo $navigation;}
				 					echo "
				 					<br>
Je voudrais donc qu'à cette endroit s'affiche autant de ligne que la base de données renvoie de réponse.
Comment puis faire.

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 déc. 2006, 10:44

Le soucis que tu rencontres dans ton while, c'est qu'à chaque itération tu écrases la valeur de $navigation. Pour éviter cela il te faut effectivement passer par un tableau (ou afficher tes liens au fur et à mesure) et stocker chaque valeur dans une cellule différente.

Il y a plusieurs façon de faire, mais la plus simple reste celle-ci :
$tableau = array(); // on déclare la variable navigation comme étant un tableau.
while (...) {
  $tableau[] = ... ; // le fait de mettre les crochets ajoute automatiquement la valeur dans la prochaine cellule du tableau
}
Sinon, si tu préfères, tu peux aussi passer par des fonctions comme array_push() pour ajouter une nouvelle cellule à la fin du tableau :) Ca revient au même, c'est peut être un peu plus explicite mais c'est aussi plus lourd de passer par une fonction...

Un p'tit truc utile, tu peux utiliser la fonction print_r() pour voir le contenu de ton tableau (valeur et index)

Une fois ton tableau construit, il te faut maintenant le lire avec une boucle. Pour cela tu peux utiliser un for()
for($i=0; $i<count($tableau); $i++) { // pour $i allant de 0 au nb d'éléments du tableau 
  echo $tableau[$i]; // affiche l'élément $i
}
voire un foreach()
foreach($tableau as $elt) { // pour chaque element du tableau, on le stocke dans $elt
  echo $elt; // affiche l'élément $elt
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...