Mauvaise requete MySQL

Mauvaise requete MySQL - PHP - Programmation

Marsh Posté le 03-02-2004 à 18:08:42    

voici le contenu de ma table MySQL :
 

nb_pages_total  prix  temps  
Modifier  Effacer  20 0.70 2.50  
Modifier  Effacer  40 1.02 1.25  
Modifier  Effacer  55 1.26 0.92  
Modifier  Effacer  80 1.67 0.63  
Modifier  Effacer  95 1.92 0.53  
Modifier  Effacer  115 2.29 0.43  
Modifier  Effacer  140 2.74 0.35  
Modifier  Effacer  165 3.14 0.30  
Modifier  Effacer  190 3.53 0.27  
Modifier  Effacer  220 4.00 0.23  
Modifier  Effacer  240 4.27 0.22  
Modifier  Effacer  290 5.37 0.17  
Modifier  Effacer  330 5.91 0.15  
Modifier  Effacer  390 6.58 0.13


 
voici ma requete :
 
 

Code :
  1. $sqlconnect = "SELECT prix,temps FROM $tarifs_finitions WHERE nb_pages_total >= $nb_pages_coul_nb ORDER BY nb_pages_total ASC LIMIT 1";
  2.       $res = mysql_query($sqlconnect) or die(mysql_error());
  3.       $hop=mysql_fetch_array($res);
  4.        $prix_reliure_unite=$hop["prix"];
  5.  $temps_reliure_minutes=$hop["temps"];


 
le prob c'est que quand je par exemple $nb_pages_coul_nb = "47"
... il me reponds que le $prix_reliure_unite="2.29" !!!
 
C pas tres logique... I did a mistake... but WHERE ????
 
Merci
 
Freed

Reply

Marsh Posté le 03-02-2004 à 18:08:42   

Reply

Marsh Posté le 03-02-2004 à 18:37:12    

bouhhhhh !! ya personne qui veut m'aider !! :((( (ouiiiiiiiin!)

Reply

Marsh Posté le 03-02-2004 à 19:37:25    

Tu aurais la structure de la table (par la commande "EXPLAIN nom_de_la_table" ) ?
(en particulier le type de la colonne "nb_pages_total" :ange: )

Reply

Marsh Posté le 03-02-2004 à 19:40:22    

requête SQL
 
requête SQL : [Modifier]
EXPLAIN tarifs_finitions_plastique  
 
 
 
 
Field  Type  Null  Key  Default  Extra  
nb_pages_total varchar(8)     0    
prix varchar(8)          
temps varchar(8)     0    

Reply

Marsh Posté le 03-02-2004 à 19:41:53    

j'ai ça aussi :
 

Citation :


# Structure de la table `tarifs_finitions_plastique`
#
 
CREATE TABLE tarifs_finitions_plastique (
  nb_pages_total varchar(8) NOT NULL default '0',
  prix varchar(8) NOT NULL default '',
  temps varchar(8) NOT NULL default '0'
) TYPE=MyISAM COMMENT='tarif finitions plastique';
 
#
# Contenu de la table `tarifs_finitions_plastique`
#
 
INSERT INTO tarifs_finitions_plastique VALUES ('20', '0.70', '2.50');
INSERT INTO tarifs_finitions_plastique VALUES ('40', '1.02', '1.25');
INSERT INTO tarifs_finitions_plastique VALUES ('55', '1.26', '0.92');
INSERT INTO tarifs_finitions_plastique VALUES ('80', '1.67', '0.63');
INSERT INTO tarifs_finitions_plastique VALUES ('95', '1.92', '0.53');
INSERT INTO tarifs_finitions_plastique VALUES ('115', '2.29', '0.43');
INSERT INTO tarifs_finitions_plastique VALUES ('140', '2.74', '0.35');
INSERT INTO tarifs_finitions_plastique VALUES ('165', '3.14', '0.30');
INSERT INTO tarifs_finitions_plastique VALUES ('190', '3.53', '0.27');
INSERT INTO tarifs_finitions_plastique VALUES ('220', '4.00', '0.23');
INSERT INTO tarifs_finitions_plastique VALUES ('240', '4.27', '0.22');
INSERT INTO tarifs_finitions_plastique VALUES ('290', '5.37', '0.17');
INSERT INTO tarifs_finitions_plastique VALUES ('330', '5.91', '0.15');
INSERT INTO tarifs_finitions_plastique VALUES ('390', '6.58', '0.13');

Reply

Marsh Posté le 03-02-2004 à 19:49:38    

j'ai essayé directement dans PHPMyAdmin :
 

Citation :


requête SQL
 
requête SQL : [Modifier]
SELECT prix,temps FROM tarifs_finitions_plastique WHERE nb_pages_total >= 47 ORDER BY nb_pages_total ASC LIMIT 1  
 
 
 
 
 prix  temps  
Modifier  Effacer  2.29 0.43


 
INCROYABLE ! lol !
 
... logiquement il aurait du me repondre :  
Prix : 1.26
Temps : 0.92
 
!!! ... non ???


Message édité par freed102 le 03-02-2004 à 19:52:10
Reply

Marsh Posté le 03-02-2004 à 20:03:42    

le nombre de pages, c'est un entier, pourquoi tu le définis en VARCHAR() ? :pfff:  
 
(idem pour le prix et le temps, faut prendre un type de données qui correspond aux données [:proy] )

Reply

Marsh Posté le 03-02-2004 à 20:18:52    

je pensais pas que ça avait une reelle importance... je connais pas trop ces parametres là... là j'ai mis "FLOAT"... je sais pas si c bien... mais en tous cas ça a l'air de mieux fonctionner !! :))))) c Keeeeewl !!! Thanx !

Reply

Marsh Posté le 03-02-2004 à 20:21:20    

C'est un entier -> mets INT [:spamafote]

Reply

Marsh Posté le 03-02-2004 à 20:22:26    

quand je mais INT il me supprime ma virgule !! :(( ! j'ai essayé plusieurs trucs.... ça fait pareil ! avec Float ça marche... mais je sais pas ce que ça veut dire !

Reply

Marsh Posté le 03-02-2004 à 20:22:26   

Reply

Marsh Posté le 03-02-2004 à 20:34:38    

je parlais du nombre de pages en fait.
Pour les flottants, je crois qu'il existe un type "DECIMAL", plus adapté que FLOAT qui peut provoquer des problèmes d'arrondi.
Pour le temps -> TIME


Message édité par mrbebert le 03-02-2004 à 20:34:56
Reply

Marsh Posté le 03-02-2004 à 20:42:47    

freed102 a écrit :

quand je mais INT il me supprime ma virgule !! :(( ! j'ai essayé plusieurs trucs.... ça fait pareil ! avec Float ça marche... mais je sais pas ce que ça veut dire !


 
Le INT est un entier et le FLOAT est un flottant (une décimale)  :sleep:

Reply

Marsh Posté le 03-02-2004 à 20:44:17    

bien ! donc je vais laisser FLOAT pour mon champ "prix"... et pour "temps" aussi d'ailleurs ! car ce sont finament que des valeurs avec decimales !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed