Vous n'êtes pas identifié(e).
Bonjour,
J'ai rechercher un peu partout et j'ai un peu du mal à trouver je tourne en rond avec ma requête Si quelqu'un avait une idée ou une solution cela m'aiderais bien ^^
Voila j'ai un formulaire (devis) en fin je dois calculé le prix total d'une commande avec les frais de port et comme ce sont des tarifs de poste ça ce présente ainsi
0 > 500g 5.49 Euro
500 > 1000g 6.50 Euros
Etc...
donc ma requête ce présent ainsi :
$selectFP = "select * from poids_frais_port Where poids_mini >= '$total12' AND poids_max <= '$total12'";
$resultFP = mysql_query($selectFP) or die (''.mysql_error() );
while($rowFP = mysql_fetch_array($resultFP)) { $normal=$rowFP['normal'];
dans le cas ou ma commande fait 800g j'espérais qu'il me donne le tarifs 6.50 Euros mais la il ne me donne rien du tout si je met Or au lieu de And j'ai toutes la liste des tarifs ce qui ne m'arrange pas J'imagine que beaucoup ont du être confronté à ce genre de besoin donc si un petit coup de pouce était possible^^
D'avance merci
Amme
Hors ligne
quelle est la valeur de $total12 ?
a++
Hors ligne
Bonsoir Pierrot
La valeur de $total12 et le total en gramme de la commande celle-ci peuvent varier de 200g à 3400g en fonction du nombre (de livre) donc ça pourrait être 800g comme dans l'exemple donner (il n'y a pas le g dans la valeur je le précise juste pour rappeler que ce sont des grammes )
J'ai essayer juste ça
Where poids_mini >= '$total12'";
ou
Where poids_max <= '$total12'";
et dans les deux cas ça me donne une liste avec tous les prix = ou en dessous ou au dessus en fonction du where choisi c'est quand j'associe les deux dans la même requête que ça va plus
Cordialement.
Amm
Hors ligne
Donne moi la structure de ta table .
a++
Hors ligne
Bonjour Pierrot
Effectivement j'y ais penser une fois couché que j'aurais peut être du mettre la structure de ma table je soupçonne que mes deux champs ne soient pas valide au départ il étaient tous les deux en varchar et j'ai changer pour mediumint mais ça n'a rien changé.
id_rapport int(11) Non
poids_mini mediumint(9) Oui NULL
poids_max mediumint(9) Oui NULL
normal varchar(255) latin1_swedish_ci Oui NULL
R1 varchar(255) latin1_swedish_ci Non
colissimo varchar(255) latin1_swedish_ci Oui NULL
divers1 varchar(255) latin1_swedish_ci Oui NULL
divers2 varchar(255) latin1_swedish_ci Oui NULL
pour l'instant seul les champs poids_mini, poids_max, normal, colissimo sont utiliser.
Cordialement.
Amm
Dernière modification par ammesiah (21-10-2010 12:03:10)
Hors ligne
Bonjour,
Si le gramme est la plus petite unité de mesure que tu dois gérer, ton mediumint est suffisant, mais dans ce cas il faut considérer que toutes les valeurs enregistrées dans ta table sont des grammes. A toi de faire les conversions d'unité de mesure dans ton appli.
Ensuite il faut t'assurer que $total12 soit un entier non null et non une chaîne de caractères contenant un entier pour faire ta comparaison dans ton code php.
Ensuite si le champ <normal> représente le montant en Euros à payer pour un intervalle de poids donné, il faut le définir en decimal (decimal(6,2) par exemple.)
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Bonjour à tous
J'ai trouver comment réglé mon soucis
voici la requête après modification :
$selectFP = "select * from poids_frais_port Where poids_mini <'$total12' And poids_max >'$total12'";
$resultFP = mysql_query($selectFP) or die (''.mysql_error() );
while($rowFP = mysql_fetch_array($resultFP)) { $normal=$rowFP['normal']; }
Pour moi cette requête est complétement illogique mais elle fonction très bien à une seule condition c'est qu'il n'y ait pas de valeur identique dans le mini et dans le max
ce qu'il ne faut pas faire
0 à 500
500 à 1000
1000 à 1500
ce qu'il faut mettre
0 à 499
500 à 999
1000 à 1499
etc..
Voila si ça peu rendre service.
Par contre y à t'il moyen d'avoir une vrai relecture d'une requête car j'ai un soucis je m'explique dans ma page devis j'ai possibilité de supprimer des lignes donc la suppression ce fait bien et la page revient bien sur le devis modifier mais si je clique sur le bouton qui me permet de voir mon devis et bien le devis réapparait avec encore la ligne normalement supprimer il me faut cliquer 3 ou 4 fois sur le bouton pour enfin voir mon devis sans la ligne c'est comme si sql gardait des résultats qui n'ont plus lieu d'être.
D'avance merci.
amm
Hors ligne
Bonjour,
Pour que ça marche avec des plages de 0 à 500, 500 à 1000 etc il faut changer la clause where en conséquence :
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne