SQL et SELECT OPTION

[Résolu]
Signaler
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Bon habituellement je post pas parce que je m'en tire bien... mais la c'est un peu la merde :/

Voila un extrait de ma base SQL :

TABLE voiture {
prix INT(11)
}

Et dans un de mes selects, j'ai ca :
<select name="prix">
<option value="1">Inférieur à 1000?</option>
<option value="2">Entre 1001 et 5000?</option>
<option value="3">Supérieur à 5001?</option>
</select>

Ma liste de select est bien sur plus grande que ca. Comment je peux faire pour arriver à savoir si je dois utiliser les signes < ou > ou alors un BETWEEN x AND y ?
J'ai trouvé une solution alternative qui consiste à garder la séquence SQL mais j'aurais voulu trouver un autre moyen (genre un parsing spécial ou autre).

Si quelqu'un a une idée, je suis preneur :)
Merci =)

13 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Bah si t'as des fourchettes différentes je pense que c'est la seule solution, ça sera pas gourmand et rapide à faire, car sinon t'es bon pour changer ta structure de table et tes données

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Hello :-)

bah ouais, d'accord avec Antho.
Sinon, c'est tjrs un between ta clause, finalement, et t'es pas obligé de mettre les valeurs 1, 2 dans tes options.
On peut imaginer du 1_1000, 1001_5000 etc...
Puis un truc du genre : prix BETWEEN ('.str_replace ('_', ' AND ', $_POST['monSelect']).')

c'est bourrin mais bon...
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut FhX,

tu veux faire quoi au juste ? tu génères dynamiquement ton select non ? si oui tu le génères comment ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Bah je le génère dynamiquement. Pour le moment, j'ai ca :

table voitures {
prix INT(11)
}
table prix {
id INT(11), // ID AUTOINCREMENT
name VARCHAR(255), // NOM DE l'OPTION
}

Donc pour alimenter mes selects, je fais ca :
query('SELECT id, name FROM prix');
while ( $data = fetch_array() ) {
echo '<option value="'.$data['id'].'">'.$data['name'].'</option>';
}

Voila comment sont généré pour le moment mes selects.

Et la, je vois pas comment m'en sortir.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Oui mais tu veux faire quoi au juste ? t'as une liste de prix, et en fonction du prix de la bagnole tu veux que le select se positionne sur le prix le plus proche ?
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
J'ai oublié ca :

Dans ma table voitures, le prix est affiché en clair. A savoir : 9000, ou alors 74839, ou bien 30938.

Dans ma table prix, j'ai ca :
id => autoincrement (donc on s'en cogne)
name = 'Inférieur à 1000?'; 'Entre x et y ?', 'Supérieur à z ?';

Me reste plus qu'à changer ca en requète SQL... mais suis paumé.
A moins que t'es une solution totalement différente, dans lequel des cas je suis preneur !
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Nanan, jveux faire un listing des bagnoles qui sont dans la fourchette de prix :)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
ah bah dans ce cas si j'étais toi je prendrais deux select (prix minimum et maximum) avec un between (+ index sur le champ prix)

si tu veux qu'un seul select, mettons que t'ais ça :

<select name="fourchette_prix">
<option value="0">Entre 1 et 1000 euros</option>
<option value="1">Entre 1001 et 2000 euros</option>
</select>

tu peux faire ceci :

<?php
if(isset($_POST['fourchette_prix']) AND ctype_digit($_POST['fourchette_prix']))
{
$prix_min=$_POST['fourchette_prix']*1000+1;
$prix_max=$prix_min+1000;

//ton select avec le between $prix_min AND $prix_max
}
?>

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Ah ouaip, ca m'arrange :)

Merci, chui de pas y avoir pensé de plus tot ...
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Voui non en faite, ca m'arrange pas...
Car j'ai des options qui sont de ce type :
<option value="1">Entre 1 et 1000</option>
<option value="2">Entre 1001 et 5000</option>
etc...

Sinon en 2 select, ouais c'est pas con... jvais voir ca :)
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Okay okay, jvais voir ca dans la journée ou demain :)

Mici beaucoup =)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Malalam > je fais ça dans mon marquage de "lus/non lus" de mon forum, enfin avec un explode mais l'esprit est le même :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Bon ben donc c'est efficace ;-) lol.