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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : seule la dernière ligne d'un tableau s'affiche

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

par Boro64 » 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:

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

par misterflo » 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...

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

par Boro64 » 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