seule la dernière ligne d'un tableau s'affiche

Eléphant du PHP | 250 Messages

07 avr. 2011, 22:19

Bonjour
Je cherche à écrire toutes les lignes (clé + valeur) d'un tableau dans un fichier texte pour affichage.
Or, ne s'écrit ( et donc ne s'affiche) que la dernière ligne du tableau...
voici mon code:
if (isset($_POST['creer'])){

$titre = $_POST['titre'];
$infobdp = $_POST['infobdp'];
	
		// on affiche le nombre de champs du formulaire
		echo 'Vous venez de créer une carte avec => '.$_POST['nb_champs'].' lignes<br /><br />';
		echo 'Titre: ' .$titre.' <br /><br />';

		// on affiche la valeur des champs du formulaire
		for ($i=1; $i<=$_POST['nb_champs']; $i++){
				$champ_plat = 'plat_'.$i;
				$champ_prix = 'prix_'.$i;
				$value = $_POST[$champ_plat];
				$value2 = $_POST[$champ_prix];
				echo 	'Plat '.$i.' : '.$value.' Prix '.$i.' : '.$value2.'<br /><br /><br />';

				
				$insert_titre 	= '<p class="carte">'.$titre.' :</p>';
				$ligne = array($value => $value2);
				while (list($plat, $prix) = each($ligne))
				{
				$newligne = '<p class="plat"><span>'.$plat.'</span> '.$prix.'</p>';
				}
				$insert_bdp 	= '<p class="plat"><span class="note">'.$infobdp.'</span></p>';

				$newmenu = ($insert_titre . $newligne . $insert_bdp);
		$texte = chmod('../codes/menu.txt', 0777);
		$file = fopen('../codes/menu.txt', 'w+');
		
		fseek($file, 0);	
		fputs($file, $newmenu);

	fclose($file);			
		
		}
				echo 'Information supplémentaire: '.$infobdp.' ';
				
}
Dans cet exemple j'ai utilisé une boucle while, mais j'ai aussi testé avec foreach avec toujours le même résultat.
Pourriez vous me dire, où est mon erreur ou oubli?
D'avance merci
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

Eléphant du PHP | 241 Messages

07 avr. 2011, 22:33

Bonsoir,
dans ton while tu change à chaque fois la valeur de ton $newligne, il faudrait faire une concaténation.
 while (list($plat, $prix) = each($ligne))
{
$newligne .= '<p class="plat"><span>'.$plat.'</span> '.$prix.'</p>';
//Il y a un point avant le =
}
Regarde du côté des fonctions file_get_contents http://php.net/manual/fr/function.file-get-contents.php et file_put_contents http://www.php.net/manual/fr/function.f ... ntents.php
C'est mieux que un fopen fputs...

Eléphant du PHP | 250 Messages

07 avr. 2011, 22:38

:oops: Merci toi misterflo...je me doutais bien que c'était un simple problème de "boulet" :mrgreen:
Oui, pour le reste aussi je vais améliorer ça, mais c'était surtout cette bête concaténation qui me bloquait.
Un immense merci à toi! :pouce:
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."