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

Eléphant du PHP | 74 Messages

17 févr. 2006, 12:35

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 :)

Avatar du membre
ViPHP
ViPHP | 3008 Messages

17 févr. 2006, 12:44

<?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 ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 févr. 2006, 12:54

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 :)

Eléphant du PHP | 74 Messages

17 févr. 2006, 12:57

Merci, ultra rapide!

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


Pardonnez mon ignorance, un jour viendra ou...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

17 févr. 2006, 12:59

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 ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 févr. 2006, 13:02

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>

Eléphant du PHP | 74 Messages

17 févr. 2006, 13:09

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?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

17 févr. 2006, 13:17

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 ;)

Eléphant du PHP | 74 Messages

17 févr. 2006, 15:58

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?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

17 févr. 2006, 16:38

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>


Eléphant du PHP | 74 Messages

17 févr. 2006, 17:28

YES, juste mettre les <options...> dans la boucle.
Evidemment ;)

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