Liste déroulante "tout", "un peu"...

emilyfr Messages postés 10 Date d'inscription jeudi 30 novembre 2000 Statut Membre Dernière intervention 27 avril 2006 - 14 mars 2006 à 22:51
emilyfr Messages postés 10 Date d'inscription jeudi 30 novembre 2000 Statut Membre Dernière intervention 27 avril 2006 - 18 mars 2006 à 11:17
Bonjour,

Je me creuse la tête sur un problème qui est peut-être tout simple, mais...

Je m'explique :
J'ai une liste d'annonces avec des situations géographiques par villes.
J'ai une page "recherche" avec un petit moteur de recherche où il y a une liste déroulante avec les villes.
Il y a plus de 100 villes en tout et j'aimerais limiter un peu tout ça. Du genre "Toutes les villes", "Les villes à 5km de X", "Les villes à 10km de X"... etc.

Pour "Toutes les villes", c'est ok, je sais faire.
Par contre, je me creuse la tête pour les autres options de la liste déroulante...

J'ai ajouté un champ "secteur" dans ma table 'ville' (avec un secteur '1' pour 5km et secteur '2' pour 10km).

Dans la liste déroulante, ça devrait être un truc du genre :
"Les villes à 5km de X" = secteur 1
"Les villes à 10km de X" = secteur 1 + secteur 2

Mais... J'ai beau me triturer l'esprit, je ne vois pas trop comment mettre ça...

J'ai fait un truc du genre :
<select name="villes" size="1" id="villes">
<option value="" selected>Toutes</option>
<option value=secteur1>5km de X</option>
<option value=secteur2>10km de X</option>
while ( $data = mysql_fetch_assoc($query) )
{
echo '<option value="'.$ville["ville"].'">'.$ville["ville"].'</option>';
}
echo '</select>';

Mais comme ça, ça ne marche pas.

Quelqu'un aurait-il une idée ? J'ai les neurones qui fondent et je ne vois plus rien à force de chercher...

Un grand merci par avance !!!

Mimi

7 réponses

xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
14 mars 2006 à 23:42
<select name="villes" size="1">
<option value=""> < à5Km</option>
<?PHP
$query = select secteur,ville from table where secteur=1
$envoie = mysql_query($query);
while($date = mysql_fetch_array($envoie)){
echo "<option value=$data['ville']>$data['ville']</option>";
}
?>
</select>

<select name="villes" size="1">
<option value=""> < à10Km</option>
<?PHP
$query = select secteur,ville from table where secteur=1 OR secteur=2
$envoie = mysql_query($query);
while($date = mysql_fetch_array($envoie)){
echo "<option value=$data['ville']>$data['ville']</option>";
}
?>
</select>

L0rD...
0
emilyfr Messages postés 10 Date d'inscription jeudi 30 novembre 2000 Statut Membre Dernière intervention 27 avril 2006
15 mars 2006 à 09:47
Merci pour le coup de pouce, xactise ! :)
Ca m'éclaire un peu les idées...

Le seul problème (et en fait, c'est ça qui me pose le plus gros problème), c'est que j'aimerai tout mettre dans une seule et même liste déroulante !
Du genre :
"Toute les villes"
"Villes à 5km" (sans lister aucune ville)
"Villes à 10km" (idem)
"Ville 1"
"Ville 2"
"Ville 3"
"Ville 4"
etc...

Mais je ne suis persuadée qu'on puisse faire des 'query' et des 'fetch_array' pour chaque <option> de la liste déroulante. :-/
Me trompe-je ?
0
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
15 mars 2006 à 10:20
dans c K la :
<select name=ville size=1>
<option value="">toute les villes</option>
<option value="">ville à 5Km</option>
<option value="">ville à 10Km</option>
<?PHP
$query = "select secteur,ville from table";
$envoie = mysql_query($query);
while($date = mysql_fetch_array($envoie)){
echo "<option value=$data['ville']>$data['ville']</option>";
}
?>
</select>

L0rD...
0
stiml Messages postés 132 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 18 juin 2009
15 mars 2006 à 10:37
Moi je pense qu'il a oublié quelque chose xactise. Car la dans ce cas on sait pas quand t'envoi ton formulaire quel secteur à été choisi dans le menu déroulant.
Voila ce que je propose :


<select name=ville size=1>
<option value="ville like %">toute les villes</option>
<option value="ville like % and secteur = 1">ville à 5Km</option>
<option value="ville like % and secteur = 2">ville à 10Km</option>
<?PHP
$query = "select ville from table";
$envoie = mysql_query($query);
while($date = mysql_fetch_array($envoie)){
echo "<option value'ville ".$data['ville']."'>".$data['ville']."</option>";
}
?>
</select>

et voila ce que tu met dans ta requête quand tu envoi ton formulaire :

$sql = "SELECT secteur, ville FROM table WHERE ".$_POST['ville'];
$query = mysql_query($sql,$nom_de_connexion) or die(mysql_error());
$resultat = mysql_fetch_assoc($query);

echo "liste des villes du secteur ".$resultat['secteur']" :
";
while($resultat = mysql_fetch_assoc($query))
{
echo $resultat['ville']."
";
}

voila j'espère que ça peut t'aider! :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
15 mars 2006 à 11:22
bon vu que tu me pique je vais te piquer ausi tonc ode n'est pas bon car le secteur 2 comprend aussi le secteur 1 (logique ;))
<option value="ville like % and secteur = 2 and secteur =1">ville à 10Km</option>
0
emilyfr Messages postés 10 Date d'inscription jeudi 30 novembre 2000 Statut Membre Dernière intervention 27 avril 2006
15 mars 2006 à 12:23
Bonjour,

Merci à vous deux, c'est très sympa de vouloir m'aider.
Je comprends le "truc", stiml.
En fait, on envoie à ma page de résultat un '$ville' qui, par exemple, va ajouter la fin à mon "SELECT" : "SELECT secteur, ville FROM table WHERE *ville like % and secteur = 1*";
C'est malin ! ;)

Vu qu'il me mettait une erreur de syntax MySQL "near '% and secteur=2' at line 1", j'ai fait un :
$idvilles = $_POST['idvilles'];
et puis dans mon SELECT = "WHERE '".$idvilles."' ";

Je n'ai plus l'erreur de syntax... mais ça ne fonctionne pas ! :(

Je vous met mon code ?
0
emilyfr Messages postés 10 Date d'inscription jeudi 30 novembre 2000 Statut Membre Dernière intervention 27 avril 2006
18 mars 2006 à 11:17
Rebonjour !
Merci à vous deux !!!!
J'y suis presque ! En fait, vous m'aviez mis sur la bonne voie mais j'ai voulu me compliquer la vie...

Dans ma page de formulaire, j'ai (entre autre) :
<select name= "idvilles" size="1" id="idvilles">
<option value="" selected>Toutes</option>
<option value="villes.secteur=1">Jusqu'à 5km de X</option>
<option value="villes.secteur=2 AND villes.secteur=1">Jusqu'à 10km de X</option>
</select>

Et dans ma page qui affiche le résultat :
$select = "SELECT * FROM datahouse,villes,moyen,bien WHERE datahouse.idvilles=villes.idvilles AND ... bla bla etc etc ... ";
if(!empty($idvilles))
$select. = " AND" .$_POST['idvilles'];
$select.= " ORDER BY idddata ASC ";

Sauf que ça fonctionne à merveille pour "villes.secteur=1" ou "villes.secteur=2" mais pas pour "villes.secteur=2 AND villes.secteur =1". Et je ne vois vraiment pas pourquoi !!!

Une idée ??? Merci d'avance
0
Rejoignez-nous