Page 1 sur 1

Un <select> a la place d'un <input>

Posté : 17 févr. 2006, 12:35
par newbee
Bonjour à tous, c'est encore moi!

J'ai récupéré, lors d'un précédent post, un morceau de code pour inserer un nouvel utilisateur dans ma Bdd. Etant encore en apprentissage Php, je n'ai pas tout dercypté, donc pas tout compris, donc galère pour la modif que je veux faire...

Pour l'instant j'ai plusieurs champs à remplir qui se présentent sous la forme :
<input name="ville" type="text" value="<?php if (isset($_POST['ville'])) echo stripslashes(htmlentities(trim($_POST['ville']))); ?>" size="90">
Je voudrais remplacer un de ces champs par un menu deroulant <select...>.
Mais que dois-je mettre dans mes différentes "values" dans les options que je devrais choisir?
En plus clair :
<option value="[b]???[/b]"> ville 1 </option>
<option value="[b]re-???[/b]"> ville 2 </option>
etc...
Merci d'avance :)

Posté : 17 févr. 2006, 12:44
par charabia
<?php
if (isset($_POST['ville']))
{
$ville_aff = stripslashes(htmlentities(trim($_POST['ville'])));
?>
<select>
/* BOUCLE ICI */
<option value="<?php echo $ville_aff; ?>"><?php echo ville_aff; ?></option>
/* FIN BOUCLE ICI */
</select>
<?php
}
else
{blabla}
?>
Le isset peut se mettre à un autre niveau ;)

Posté : 17 févr. 2006, 12:54
par Ryle
Le champ value n'est pas obligatoire si c'est le même que le texte affiché. En cas d'absence, c'est le libellé qui est envoyé comme valeur :)
<select name="ville"> 
<option><?php echo ville_aff; ?></option> 
...
</select> 
fonctionnera donc tout aussi bien :)

Posté : 17 févr. 2006, 12:57
par newbee
Merci, ultra rapide!

Mais je ne vois pas ou rentrer toute ma liste de ville...


Pardonnez mon ignorance, un jour viendra ou...

Posté : 17 févr. 2006, 12:59
par charabia
Le champ value n'est pas obligatoire si c'est le même que le texte affiché. En cas d'absence, c'est le libellé qui est envoyé comme valeur :)
<select name="ville"> 
<option><?php echo ville_aff; ?></option> 
...
</select> 
fonctionnera donc tout aussi bien :)
one point ;)
Merci, ultra rapide!

Mais je ne vois pas ou rentrer toute ma liste de ville...
Dans ta base de données ;)

Posté : 17 févr. 2006, 13:02
par Ryle
Tout dépend comment est géré ta liste de ville... si c'est dans une base de données, tu viens la lire et tu boucles sur chaque enregistrement. Si c'est dans un tableau php, idem.
Si tu n'as pas de liste en base, tu peux tout aussi bien faire un select en dur en html :)

Code : Tout sélectionner

<select name="ville"> <option>Milan</option> <option>New York</option> <option>Paris</option> <option>Melun Sud</option> ... <select>

Posté : 17 févr. 2006, 13:09
par newbee
Mais je ne vois pas ou rentrer toute ma liste de ville...
Dans ta base de données ;)
Donc il faut que je me crée une nouvelle table avec toute mes villes dans ma Bdd, puis que je fasse un :
$sql = 'SELECT * FROM liste_villes ';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br > '.mysql_error());
dans ma page, j'imagine?

Est ce que je me trompe?

Posté : 17 févr. 2006, 13:17
par charabia
Si tu utilises une base de données oui c'est ça ;)

Au lieu de "*", si tu récupères juste le champ ville, fait un "SELECT ville FROM liste_villes" au cas où tu aurais d'autres champs en plus de la ville, ce qui sera sûrement la cas ;)

Posté : 17 févr. 2006, 15:58
par newbee
Bon, ça ne marche pas comme je veux. Donc je vais faire plus simple.
Juste le menu deroulant avec la liste des villes dedans.

=> mon code
Param de connexion...
$sql3='SELECT ville from entite';
$req3='mysql_query($sql3) or die ... ;
=> mon tableau (ici je pense le soucis)
while ($data3 = mysql_fetch_assoc ($req3))
 {
  $ville = $data3['ville'];
 }
=> Mon select
<select>
<option value="<?php echo $ville; ?>"><?php echo ville; ?></option>
</select> 
Vous pouvez m'aider siouplait?

Posté : 17 févr. 2006, 16:38
par charabia
Bé tu as quasiment tout fait lol
<?php
Param de connexion... 
$sql3='SELECT ville from entite'; 
$req3='mysql_query($sql3) or die ... ';
?>
<select>
<?php
while ($data3 = mysql_fetch_assoc ($req3)) 
{ 
  $ville = $data3['ville'];
  echo '<option value="'.$ville.'">'.$ville.'</option>';
}
?>
</select>


Posté : 17 févr. 2006, 17:28
par newbee
YES, juste mettre les <options...> dans la boucle.
Evidemment ;)

Merci à tous.
Et un petit [résolu] de plus, un!