donnnée foreach ne s'affiche pas

bostak
Invité n'ayant pas de compte PHPfrance

20 déc. 2011, 00:08

Bonsoir,

J'ai encore un problème, alors voici mon code :

index.php

Code : Tout sélectionner

include("views/vueNavigation.php"); include("views/vueMenu.php"); include("pages/getBillet.php"); $table = getBillet(); var_dump($table); include("views/vueBillet.php");
getBillet.php

Code : Tout sélectionner

<?php function getBillet() { $ressource = mysql_query("SELECT idbillets, title, content FROM billets"); $result= array(); while($row=mysql_fetch_assoc($ressource)) { $result[]=$row; } return $result; } ?>
vueBillet.php

Code : Tout sélectionner

<html> <head> </head> <body> <div id="body"> <?php foreach ($table AS $row) { echo '<div id="titleBillet">'; echo $table[title]; echo '</div>'; echo '<div id="contentBillet">'; echo $table[content]; echo '</div>'; } ?> </div> </body> </html>
sur mon index.php mon var_dump sert à vérifier que la fonction me retourne bien un tableau qui contient bien des données c'est le cas ici.
Mais j'ai un problème avec mon code qui est situé dans vueBillet.php j'ai cette erreur là :

Notice: Undefined index: title in C:\wamp\www\blogblogblog\views\vueBillet.php on line 11
Notice: Undefined index: content in C:\wamp\www\blogblogblog\views\vueBillet.php on line 15

Le message d'erreur est clair, mais je ne comprend pas pourquoi.

Cordialement,

ViPHP
ViPHP | 2287 Messages

20 déc. 2011, 01:31

Bonsoir bostak,

Pour rappel, quand on écrit :
<?php foreach( $tableau as $element ){}
La première variable (avant le as) est le tableau sur lequel on va boucler (il s'agit donc d'une variable qui existe, est définie quelquepart précédemment dans le script, souvent juste avant le foreach).

La deuxième variable (après le as) est juste un nom, ne correspondant pas forcément à une variable qui existait avant le foreach, et désigne simplement le "curseur", c'est à dire l'item courant du tableau sur lequel on boucle (la partie qui change à chaque passage de la boucle quoi).

Quelques exemples simples (pour être sûr que ça rentre) :
<?php
foreach( $pile_dassiettes as $assiette ){ range($assiette); }

foreach( $semaine as $jour ){ echo $jour; }

foreach( $repertoire as $fichier ){ include($fichier); }
Le point commun entre les trois exemples ? Sauf exception, on n'utilise jamais dans le foreach() le tableau sur lequel on est en train de boucler. Par contre on devrait presque toujours y utiliser le curseur quelquepart.

Maintenant regarde bien ton foreach (et réfléchis au message d'erreur...). Rien ne te choque ? :)
vueBillet.php
 
<html>
<head>
</head>

	<body>
		<div id="body">
		<?php
			foreach ($table AS $row)
			{
				echo '<div id="titleBillet">';
				echo $table[title];
				echo '</div>';
			
				echo '<div id="contentBillet">';
				echo $table[content];
				echo '</div>';
			
			}
		
		
		
		
		?>


		</div>
</body>



</html>
if(!@work()){ Nespresso(); } else { what(); }
______________________________

bostak
Invité n'ayant pas de compte PHPfrance

20 déc. 2011, 01:43

Ah oui d'accord j'ai compris donc cela donne

Code : Tout sélectionner

echo $row['title'] echo $row['content']
Je viens de tester cela fonctionne parfaitement.

Merci beaucoup pour ces explications très claires qui m'ont bien fait comprendre ce fonctionnement. Encore une fois merci!

Cordialement,