Requête selon minimum et maximum

Eléphanteau du PHP | 13 Messages

01 avr. 2008, 15:29

Chers Tous,

J'ai une table contenant :

Largeur | Hauteur | Montant
1500 | 1200 | 900
1800 | 1200 | 1000
...
1500 | 1500 | 1200
1800 | 1500 | 1300
...

J'ai effectué ma requête ci-dessous :

Code : Tout sélectionner

CREATE TABLE ... SELECT * FROM `products_ajax` WHERE (largeur >= 'code1') AND (hauteur >= 'code2') ORDER BY largeur, hauteur
Elle fonctionne correctement et l'affichage est correct dans du code PHP et HTML avec formulaire. Cependant, lorsque je demande : Largeur dans 'code1' 1100 et Hauteur dans 'code2' 1200, ceci m'affiche effectivement le Montant de 900, alors que je n'ai aucune donnée de 1100 dans ma base de donnée.

Je recherche le moyen, dans cette requête, de contrôler que les données saisies pour Largeur et hauteur soient bien comprises entre mes valeurs entrées dans ma base de donnée.

Merci de votre aide.[/code]

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

01 avr. 2008, 15:55

Euh... c'est un peu logique qu'avec un " >= code1 " il te retourne les valeurs égales ou supérieures à code1 :)

J'ai pas bien compris le sens de la question, mais éventuellement, avant de demander à l'utilisateur de saisir une valeur, tu peux faire un

Code : Tout sélectionner

SELECT MAX(largeur) AS largeur_max, MIN(largeur) AS largeur_min, MAX(hauteur) AS hauteur_max, MIN(hauteur) AS hauteur_min FROM ...
Et informer ton utilisateur (ou vérifier en javascript puisque c'est vraissemblablement pour du confort utilisateur) que la largeur saisie est bien comprise entre le min et le max disponible :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 13 Messages

01 avr. 2008, 16:22

Merci Ryle,

En fait, mes valeurs sont stockées dans une base de donnée. J'appelle ma base de donnée depuis un formulaire avec plusieurs INPUT de type TEXT, dont un se nomme Largeur et l'autre Hauteur.

Ces données saisies par l'utilisateur sont envoyées par AJAX à un fichier où se trouve ma requête et insère le résultat obtenu de ma requête dans le même formulaire pour un affichage direct des dimensions et montants.

Ma demande va dans le sens d'effectuer une requête comportant la recherche de la valeur directement supérieure si celle-ci entrée n'est pas trouvée, mais de trier ma requête si les valeurs sont effectivement comprises dans ma base de donnée.

Merci de votre soutien.

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

04 avr. 2008, 11:54

Oki, j'avions pas compris ça....

Assure toi que les champs largeur et hauteur de ta base sont bien de type numérique (int, double, ...) et pas texte (varchar) sans quoi la comparaison se fait de manière alphabétique, auquel cas "10" est situé avant "9" puisqu'il commence par un "1" :)

Il faudra également retirer les apostrophes autours des valeurs numériques dans ta requête (s'il y en a) :
... WHERE (largeur >= 1100) AND ...
et pas
... WHERE (largeur >= '1100') AND ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...