8797 sujets

Développement web côté serveur, CMS

Bonjour à tous

Voilà, je suis en train de construire un menu déroulant, et au lieu de lister les options, mon script liste les différentes entrées inscrite dans mysql.
Là, mon but est de lister des encres d'imprimerie. Donc dans mysql, j'ai :

id encrage
1 cyan
2 magenta
3 jaune
...

No problemo jusque là, mais ça devient chaud quand je veux que la selection choisie deviennent la selection par defaut, et qu'en plus, elle reste affichée quand la page s'actualise.

Pour mieux comprendre, voilà la partie de mon script qui me pose problème :
________________________________________________

<form action = "encre_imprime.php" method = "POST"> 
<p> 
<i>Encrage</i><br /><select name = "encrage_color"> 

<?php // Séléction des encres 
$select_encre = mysql_query ('SELECT encrage FROM impression_encrage'); 
while ($choix_encre = mysql_fetch_array ($select_encre)) 
{ 
?><option [b]selected[/b] value = "<?php echo $choix_encre['encrage']; ?>"><?php echo $choix_encre['encrage']; ?> </option> 
<?php 
} 
?> 
</select> 
<input type = "submit" value = "ok" /> 
</p> 
</form> 


_______________________________________________

Pour faire en sorte que ça reste selectionné par défaut, j'ai essayé avec 'selected' mais dans ce cas, c'est le dernier enregistrement de ma base mysql qui devient le choix par défaut.

Bref, y'a un truc que je pige pas.

Si quelqu'un peut m'aider ?

Merci d'avance Smiley cligne
Modifié par thunder (22 Oct 2006 - 01:56)
Hello thunder Smiley cligne ,

Si tu mets selected pour toutes les options c'est la dernière qui sera prise en compte. Tu pourrais par exemple rajouter le champs par_defaut dans ta table et faire quelque chose comme :
<option <?php if ($par_defaut['encrage'] == 'O' ) echo "selected='selected'" ?> value = "...


@+ Smiley smile

PS : c'est plus lisible (et plus esthétique) de mettre en forme ton code Smiley lol
Salut Heyoan,

En fait, je ne met pas "selected" sur chaque option.
Je cherche juste à faire en sorte que l'option choisie par le visteur devienne l'option par défaut.
Pour être plus clair : mon menu déroulant liste les données contenu dans le champs "encrage" de ma table, et ce que je souhaite, c'est que lorsque le visiteur selectionne une encre (par ex. cyan), celle ci devienne l'encre par défaut.

Voilà.
Administrateur
Bonjour et bienvenue thunder,

afin de rendre ton message plus lisible, merci de bien vouloir l'éditer pour placer le code entre balises [ code] ici_le_code [ /code] (sans les espaces) comme expliqué dans l'Aide du Forum Smiley cligne

Felipe
Re-Salut !

Euh... Dans le code que tu as mis toutes les options auront bel et bien l'attribut selected et c'est donc bien la dernière qui sera sélectionnée Smiley rolleyes

Ce que je n'avais pas compris c'est que la notion de "par défaut" ne doit s'appliquer qu'au visiteur et pas au site.

Donc dans ce cas 2 options :

* soit il s'agit d'un paramétrage à long terme pour un visiteur régulier auquel cas le plus simple est l'emploi d'un cookie. Ce qui donnera quelque chose comme :
$encre_defaut = (isset($_COOKIE['encre_defaut'])) ? $_COOKIE['encre_defaut'] : '';
[b]... et plus loin :[/b]
<option <?php if ( $choix_encre['encrage'] == $encre_defaut ) echo "selected='selected'" ?>value = "...

* soit il s'agit d'un formulaire qui ne sera envoyé qu'occasionnellement ce qui donnera quelque chose comme :
$encre_defaut = (isset($_POST['encrage_color'])) ? $_POST['encrage_color'] : '';
[b]... et plus loin :[/b]
<option <?php if ( $choix_encre['encrage'] == $encre_defaut ) echo "selected='selected'" ?>value = "...


Et si je suis encore à côté de la plaque il faudrait que tu clarifies ce que tu entends par :
thunder a écrit :
Je cherche juste à faire en sorte que l'option choisie par le visteur devienne l'option par défaut.
ou que tu donnes un lien pour voir le site en question Smiley biggol

@+
Modifié par Heyoan (21 Oct 2006 - 23:51)
Hip,

J'ai pas tout suivi ton sujet... Smiley langue
Un choix d'encre en imprimerie ???

Euh... à part avec des encres Pantones, c'est rare d'avoir un client qui ne veut ses imprimés que dans une seule des primaires ?

De plus, si ta liste ne doit afficher que les primaires, tu n'as même pas besoin d'une requête lourde sur une table ?
Une liste au départ d'un array() et basta. Smiley cligne

Pour le reste, si tu veux garder une variable en passnt de page en page, soit tu optes pour la session, soit pour un cookie si cela doit durer au delà de la navigation en cours.

Bref tes explications sont un rien trop floues pour apporter une solu précise et pérenne.
HyWaN a écrit :
Bison aime les array(); Smiley biggrin


(et je marche dans ces traces Smiley cligne )

Il suffit simplement de savoir que l'array est l'élément que PHP gère le mieux, son point fort.
Il suffit de consulter la liste des fonctions liées pour s'en rendre compte.
L'usage des tableaux n'offrent que des avantages.

Dans 99% des cas d'utilisation, c'est la simplicité et l'efficacité le tout lié à une rapidité d'exécution, sans compter une lisibilité sans pareille.

Pourquoi donc s'en priver ?
Parfaitement Smiley smile
j'arrête pas de le dire, mais apparement cette notion semble compliquer pour les personnes débutantes en PHP, je ne ne comprend pas trop pourquoi ...
Mais c'est pas le sujet de ce topic Smiley langue