Page 1 sur 1

foreach qui n'affiche pas toutes les valeurs de array

Posté : 13 janv. 2010, 15:44
par JeanJean
Bonjour,

J'ai réalisé un petit script :
<?php
$dossier = './pdf';
$lecture = scandir($dossier);

$selec = '-- SELECTIONNEZ --';
if(isset($_GET['modifier_news'])){
	$selectioned = $news['pdf'];
	$lecture[] = $selectioned;
	$lecture[] = $selec;
}
else{
	$lecture[] = $selec;
}
$tab = array_slice($lecture,2);
$renverse = array_reverse($tab);
$unique = array_unique($renverse);
foreach($unique AS $valeur){
	$list_pdf = '<option value="'.$valeur.'">'.$valeur.'</option>';
}
echo '<select name="pdf">'.$list_pdf.'</pdf>';
?>	
En faisait un print_r($unique); cela me renvoi ça :

Array ( [0] => -- SELECTIONNEZ -- [1] => recetteFromage1sf_ge.pdf [2] => SFParisMouf-degust-aperiSlowN1.pdf [3] => SFParisMouf-degust-From-vins26mars.pdf [4] => SFParisMouf-degust-10-12-2009.pdf [5] => PDF-SlowFood-vinsCorse.pdf )

Or la liste émise par le foreach me renvoi ça :

PDF-SlowFood-vinsCorse.pdf

Vous savez pourquoi ça ne me renvoi que la dernière valeur ? :s

Re: foreach qui n'affiche pas toutes les valeurs de array

Posté : 13 janv. 2010, 15:48
par stopher
Slt ,

tu as oublié le "." devant le égal pour concaténer
 $list_pdf .= '<option value="'.$valeur.'">'.$valeur.'</option>'; 
Ch.

Re: foreach qui n'affiche pas toutes les valeurs de array

Posté : 13 janv. 2010, 16:34
par JeanJean
Merci. ;)

Ca fonctionne maintenant. ^^

Cependant, je souhaite ajouter une fonction.

Si jamais on modifie une news, je souhaite que le champ qui s'affiche en premier sur la liste est celui qui à été préalablement choisis lors que la création de la news.

j'ai pense à ça :
		<?php
		$dossier = './pdf';
		$lecture = scandir($dossier);
		
		$selec = '-- SELECTIONNEZ --';
		if(isset($_GET['modifier_news'])){
			$selectioned = $news['pdf'];
			$lecture[] = $selectioned;
			$lecture[] = $selec;
		}
		else{
			$lecture[] = $selec;
		}
		$tab = array_slice($lecture,2);
		$renverse = array_reverse($tab);
		$unique = array_unique($renverse);	
		
		foreach($unique AS $valeur){
			$list_pdf .= '<option value ="'.$valeur.'">'.$valeur.'</option>';
		}
		if(isset($_GET['modifier_news'])){
			$list_pdf = str_replace('value="'.$news['pdf'].'"','value="'.$news['pdf'].'" selected="selected";',$list_pdf);
		}
		echo '<select name="pdf">'.$list_pdf.'</pdf>';
		?>	
Mais ça ne change strictement rien.

Si j'ajoute un . ici : $list_pdf .= str_replace('value="'.$news['pdf'].'"','value="'.$news['pdf'].'" selected="selected";',$list_pdf);

Je verrais toujours -- SELECTIONNEZ -- et quand je clique sur la liste, elle m'affiche deux fois le contenu du dossier. :s

Merci. ;)

Re: foreach qui n'affiche pas toutes les valeurs de array

Posté : 13 janv. 2010, 22:37
par Ryle
Dans ta liste d'options, tu as un espace entre le "value" et le "=", du coup, lorsque tu fais le replace, comme tu cherches une chaine sans espace, il ne la trouve pas et ne peut donc pas la remplacer...

Re: foreach qui n'affiche pas toutes les valeurs de array

Posté : 13 janv. 2010, 23:03
par JeanJean
Encore une fois, merci. =D>

Il faudrait sans doute que j'aille m'acheter des yeux... #-o

Re: foreach qui n'affiche pas toutes les valeurs de array

Posté : 14 janv. 2010, 10:12
par macgawel
Profites-en pour corriger ton HTML :
echo '<select name="pdf">'.$list_pdf.'</pdf>';
La balise fermante </pdf> n'existe pas en HTML (à ma connaissance) !