8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je possède un petit code php qui me permet d'afficher 5 listes déroulantes :

	
		$list_equips1 = '<option value="0">Laisser vide</option>';

		$equipsquery = mysql_query("SELECT id, name FROM ".$mysql->pref."_equips ORDER by name ASC");
		while ($equipsrow = mysql_fetch_assoc($equipsquery)) {
	
			$list_equips1 .= '<option value="'.$equipsrow['id'].'">'.$equipsrow['name'].'</option>';
		}
		
		$list_equips2 = '';
		
		for ($i=1; $i<=5; $i++)
		{		
			$list_equips2 .= 'Equip. '.$i.' : <select name="list_equips_'.$i.'">'.$list_equips1.'</select><br><br>';
		}

echo $list_equips2;


Mais j'ai un petit problème. J'aimerais sélectionner dans chacune des listes déroulante une valeur avec ceci : selected="selected"

J'ai une variable :

$list_items = '78,79,50,0,0';

78 est la valeur à sélectionner dans la première liste
79 est la valeur à sélectionner dans le deuxième liste
etc...

Mais je vois pas comment je peux sélectionner à cause de la boucle.

Quelqu'un peut-il m'aider ?

Merci d'avance
hum, si je comprends bien les 5 menus déroulants on tous les mêmes options?

et tu veux éviter de reconstruire 5 fois la liste d'options. sinon pb trivial.

il te faut faire un remplacement du coup. a partir d'une donnée identifiable
le champs values peut peut-etre suffire


$list_items = '78,79,50,0,0';  
$tab_items = explode(',',$list_items);

for ($i=1; $i<=5; $i++)

{		

 $list_equips2 .= 'Equip. '.$i.' : <select name="list_equips_'.$i.'">'.
preg_replace('!option value="'.$tab_items[$i-1].'"!',
'option value="'.$tab_items[$i-1].'" selected="selected"',$list_equips1)
.'</select><br><br>';

}


quelquechose comme ça.
Merci de m'avoir aidé, mais malheureusement ton code ne semble pas fonctionner. Ca sélectionne toutes les valeurs des listes et pas seulement une seule.

Je te remontre le code après modif :


		$list_equips1 = '<option value="0">Laisser vide</option>';

		$equipsquery = mysql_query("SELECT id, name FROM ".$mysql->pref."_equips ORDER by name ASC");
		
		while ($equipsrow = mysql_fetch_assoc($equipsquery)) {

			$select1 = ($pnjrow['type_sell'] == 0) ? 'selected="selected"' : null;

			
			$list_equips1 .= '<option value="'.$equipsrow['id'].'" '.$select1.'>'.$equipsrow['name'].'</option>';
		}
		$list_equips2 = '';		
		$list_items = '78,79,50,0,0';
		$tab_items = explode(',',$list_items);

		for ($i=1; $i<=5; $i++)

		{

			$list_equips2 .= 'Equip. '.$i.' : <select name="list_equips_'.$i.'">'.
			preg_replace('!option value="'.$tab_items[$i-1].'"!',
			'option value="'.$tab_items[$i-1].'" selected="selected"',$list_equips1)
			.'</select><br><br>';

		}
Re,

je serais curieux de voir le code html produit par quelqu'un de tes <option ....>

avant et après modification par le preg_match.

surement une amélioration a faire dans l'expression régulière du preg_replace

ou une mauvaise initialisation de tes variables.

tu as rajouté:

$select1 = ($pnjrow['type_sell'] == 0) ? 'selected="selected"' : null;


typiquement si $pnjrow['type_sell'] vaut 0 c'est cuit. hors on voit pas d'où sort cette valeur.
Modifié par CPascal (08 Apr 2010 - 22:20)
En effet j'avais oublié de supprimer cette ligne. Je confirme que ca fonctionne.

Merci beaucoup Cpascal
De rien.

peux-tu s.t.p éditer ton premier post et de mettre au titre [Resolu] devant.(cf règle du forum)

Merci.
Modifié par CPascal (09 Apr 2010 - 11:56)