requete MySql par tranches...

requete MySql par tranches... - PHP - Programmation

Marsh Posté le 08-12-2003 à 18:17:08    

Une chtite question...
j'ai besoin de faire des requetes du genre :
 
si $x est compris entre tel chiffre et tel chiffre... $resultat=$y
 
en PHP c facile je pense... mais n'existe t il pas une fonction MySQL deja toute faite pour ce genre de requetes ?
 
Si vous captez pas... je peux peut etre reformuler ma question ! lol
 
Merci
 
Freed


Message édité par freed102 le 08-12-2003 à 18:20:36
Reply

Marsh Posté le 08-12-2003 à 18:17:08   

Reply

Marsh Posté le 08-12-2003 à 18:25:28    

WHERE champ < ton_max AND champ >= ton_min


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-12-2003 à 18:31:39    

ok mais ça doit pas resoudre mon probleme... en gros je t'explique... j'ai une grille de prix dans une table MySQL... et je veux que ma requete donne reponse directement en fonction d'un chiffre entré par le client...
 
genre voici ma table :
 

Code :
  1. nb_pages  prix
  2. 20  0,70 €
  3. 40  1,02 €
  4. 55  1,26 €
  5. 80  1,67 €
  6. 95  1,92 €
  7. 115  2,29 €
  8. 140  2,74 €
  9. 165  3,14 €
  10. 190  3,53 €
  11. 220  4,00 €
  12. 240  4,27 €
  13. 290  5,37 €
  14. 330  5,91 €
  15. 390  6,58 €


 
 
je voudrais par exemple que si mon client tape "105" MySQL me retourne "2.29€"
 
est-ce possible ?


Message édité par freed102 le 08-12-2003 à 18:34:30
Reply

Marsh Posté le 08-12-2003 à 18:39:10    

select nb_page where nb_page>105 LIMIT 0,1 ? [:spamafote]
 


Message édité par Profil supprimé le 08-12-2003 à 18:39:50
Reply

Marsh Posté le 08-12-2003 à 18:39:50    

where nb_pages >= user_page order by nb_page limit 1


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-12-2003 à 18:47:05    

merci beaucoup... je vais essayer ça (quand le serveur sera de nouveau en fonction ! :) )

Reply

Marsh Posté le 08-12-2003 à 20:57:27    

Tu veux te faire des tartines de MySQL ?
http://www.csdm.qc.ca/cemis/panier/aliments/produits_cerealiers/images/pain_tranchesg.gif

Reply

Marsh Posté le 08-12-2003 à 22:52:24    

sinon where nb bitween (20,100);
?

Reply

Marsh Posté le 09-12-2003 à 13:11:25    

Alors j'ai tout essayé... apparement c pas ça.. :(
 
Il y a pas une fonction qui donne renvoie la valeur la plus proche ??? ce serait tout simplement ça qu'il me faut !

Reply

Marsh Posté le 09-12-2003 à 13:17:25    

freed102 a écrit :

je voudrais par exemple que si mon client tape "105" MySQL me retourne "2.29?"
 
est-ce possible ?

Si tu veux le premier chiffre supérieur à la valeur saisie, tu peux faire ca :
 
SELECT nb_pages, prix
FROM ta_table
WHERE nb_pages >= 105
ORDER BY nb_pages ASC
LIMIT 1

Reply

Marsh Posté le 09-12-2003 à 13:17:25   

Reply

Marsh Posté le 09-12-2003 à 13:20:41    

faut lire plus haut freed hin [:mlc2]

Reply

Marsh Posté le 09-12-2003 à 14:55:24    

j'ai fait ça :  
 

Code :
  1. $nb_pages=$_SESSION['nb_pages'];
  2.  $tarifs_finitions=$_SESSION['tarifs_finitions'];
  3.  //mysql_select_db("$bddname", $connect);  
  4.  $sqlconnect2 = "SELECT prix FROM $tarifs_finitions WHERE nb_pages_total >= $nb_pages ORDER BY nb_pages_total ASC LIMIT 1";
  5.  mysql_query($sqlconnect2);
  6.  $result2 = @MYSQL_QUERY($sqlconnect2) ;
  7.  $i=0;
  8.  $prix_reliure_unite= mysql_result($result2,$i,"prix" ) ;
  9.  echo mysql_error();


 
... j'ai pas d'erreur... Mais quand je veux afficher $prix_reliure_unite il n'affiche rien ! :??: !!!


Message édité par freed102 le 09-12-2003 à 14:56:32
Reply

Marsh Posté le 09-12-2003 à 15:56:52    

j'ai beau chercher... je comprends pas pourquoi il ne trouve pas de valeur avec ma requete !!!

Reply

Marsh Posté le 09-12-2003 à 16:01:17    

j'ai tenté avec un code plus basic :
 

Code :
  1. function finitions ()
  2.  {
  3.  $nb_pages=$_SESSION['nb_pages'];
  4.  $tarifs_finitions=$_SESSION['tarifs_finitions'];
  5.  $sqlconnect2 = "SELECT prix FROM $tarifs_finitions WHERE nb_pages_total=$nb_pages";
  6.  mysql_query($sqlconnect2);
  7.  $res = @MYSQL_QUERY($sqlconnect2) ;
  8.  $i=0;
  9.  $prix_reliure_unite= mysql_result($res,$i,"prix" ) ;
  10.  echo mysql_error();
  11.  $prix_reliure_total=$prix_reliure_unite*$nb_ex;
  12.  }


 
Mais il n'affiche rien !! :(

Reply

Marsh Posté le 09-12-2003 à 16:01:54    

ta fait des echo des valeur avant la requete?

Reply

Marsh Posté le 09-12-2003 à 16:15:48    

oui oui... je vois tout sauf le contenu de ma requete !
 
j'ai mis des commentaires en bas sur ma page.. avec l'affichage des variables  
 
http://www.clonecopy.net/php/devis [...] 2b07537b62
 
(je sais pas si ça marche les sessions d'un poste à l'autre... sinon :
 
http://www.clonecopy.net/php/devis/index_etape1.php
 
... puis passer les deux premieres etapes)
 
il me manque juste une valeur pour que ça marche !!! c le Prix unitaire qui est dans une table qui s'appelle tarifs_finitions_plastique ou tarifs_finitions_metalique en fonction du choix du client... (c'est la variable $tarifs_finitions qui selectionne la table)
 
mais la requete revient vide !!! je comprends pas ! :(


Message édité par freed102 le 09-12-2003 à 16:16:39
Reply

Marsh Posté le 09-12-2003 à 16:33:28    

ta tester dans un soft sql genre phpmyadmin?

Reply

Marsh Posté le 09-12-2003 à 16:48:01    

j'ai fait ça dans PhpMyAdmin:
 
SELECT * FROM `tarifs_finitions_plastique` WHERE nb_pages_total >= '100'
 
et il me revoit vers la table en question...

Reply

Marsh Posté le 09-12-2003 à 17:01:39    

ben ca voudrait dire qu'il n'y a pas de resultat [:spamafote]

Reply

Marsh Posté le 09-12-2003 à 17:18:11    

bah ma table est pas vide pourtant !!!
 
 nb_pages_total  prix  
Modifier  Effacer  20 2.50  
Modifier  Effacer  40 1.25  
Modifier  Effacer  55 0.92  
Modifier  Effacer  80 0.63  
Modifier  Effacer  95 0.53  
Modifier  Effacer  115 0.43  
Modifier  Effacer  140 0.35  
Modifier  Effacer  165 0.30  
Modifier  Effacer  190 0.27  
Modifier  Effacer  220 0.23  
Modifier  Effacer  240 0.22  
Modifier  Effacer  290 0.17  
Modifier  Effacer  330 0.15  
Modifier  Effacer  390 0.13  

Reply

Marsh Posté le 09-12-2003 à 17:22:59    

a la place de $res = @MYSQL_QUERY($sqlconnect2)
met
$res = MYSQL_QUERY($sqlconnect2) or die(mysql_error());
et dit ce que ca t'affiche

Reply

Marsh Posté le 09-12-2003 à 17:27:01    

et bien ça n'affiche rien !! c ça que je capte pas ! quand ya une erreur il l'indique... et là ya pas d'erreur !! mais ma variable $prix_reliure_unite est vide !! c'est pas normal ?? :??:

Reply

Marsh Posté le 09-12-2003 à 17:28:06    

$prix_reliure_unite= mysql_result($res,0);


Message édité par Profil supprimé le 09-12-2003 à 17:28:15
Reply

Marsh Posté le 09-12-2003 à 17:28:11    

Revoici le dernier code... pour les tests

Code :
  1. function finitions ()
  2.  {
  3.  $nb_pages=$_SESSION['nb_pages'];
  4.  $tarifs_finitions=$_SESSION['tarifs_finitions'];
  5.  $sqlconnect = "SELECT * FROM $tarifs_finitions";
  6.  mysql_query($sqlconnect);
  7.  $res = MYSQL_QUERY($sqlconnect) or die(mysql_error());
  8.  $i=0;
  9.  $sqlnb_pages_total= mysql_result($res,$i,"nb_pages_total" ) ;
  10.  $prix_reliure_unite= mysql_result($res,$i,"prix" ) ;
  11.  echo mysql_error();
  12.  mysql_close($connect);
  13.  $prix_reliure_total=$prix_reliure_unite*$nb_ex;
  14.  }

Reply

Marsh Posté le 09-12-2003 à 17:30:01    

     $res = MYSQL_QUERY($sqlconnect) or die(mysql_error());
      $hop=mysql_fetch_array($res);
      echo $sqlnb_pages_total= $hop["nb_pages_total"];
      echo $prix_reliure_unite=$hop["prix"];
 
test voir

Reply

Marsh Posté le 09-12-2003 à 17:37:18    

ah... là ya une amelioration.. j'ai un 2.24 qui s'est affiché en haut de la page...
mais mon calcul ne se fait pas... :-/ pourtant tu definis bien le $prix_reliure_unite ... c bizarre !

Reply

Marsh Posté le 09-12-2003 à 17:38:38    

le chiffre est bon dans mon cas... j'avais tapé "100" voici la bonne table
 
 nb_pages_total  prix  
Modifier  Effacer  10 1.52  
Modifier  Effacer  25 1.59  
Modifier  Effacer  40 1.67  
Modifier  Effacer  55 1.80  
Modifier  Effacer  75 1.96  
Modifier  Effacer  100 2.24  
Modifier  Effacer  130 2.92  
Modifier  Effacer  160 2.94  
Modifier  Effacer  190 2.96  
Modifier  Effacer  220 3.30  
Modifier  Effacer  280 3.32  
Modifier  Effacer  340 1.80


Message édité par freed102 le 09-12-2003 à 17:39:19
Reply

Marsh Posté le 09-12-2003 à 17:40:25    

tape ca plutot on vera mieux la distinction entre les 2 valeurs
      echo $sqlnb_pages_total= $hop["nb_pages_total"]."<br />";
      echo $prix_reliure_unite=$hop["prix"];
 
ca t'en resort que une toi?

Reply

Marsh Posté le 09-12-2003 à 17:44:59    

oui ça me sort qu'une valeur... visiblement c la deuxieme !

Reply

Marsh Posté le 09-12-2003 à 17:51:53    

j'arrive pas a afficher le nb_pages_total... Mais ça c pas trop grave dans mon cas.. là j'ai reussi à afficher le calcul... ce qui genait c que j'avais mis tout ça dans une fonction... je pensais que les variables restaient en dehors d'une fonction.. et visiblement pas (dans un include)... je sais pas trop pourquoi ! lol

Reply

Marsh Posté le 09-12-2003 à 19:30:42    

Eh non :D  
PHP est un super langage où on ne déclare pas les nouvelles variables, mais où il faut re-déclarer dans une fonction les variables globales :pt1cable:

Reply

Marsh Posté le 09-12-2003 à 19:32:14    

mrBebert a écrit :

Eh non :D  
PHP est un super langage où on ne déclare pas les nouvelles variables, mais où il faut re-déclarer dans une fonction les variables globales :pt1cable:  

En clair pour ceux qui sont dur de la feuille : PHP c'est de la merde en boîte :D

Reply

Marsh Posté le 09-12-2003 à 19:35:04    

Yahooooooo !! mon programme marche maintenant !! Merci !! :) :) :) !!!
 
mes calculs sont exacts... tout baigne !!!
 
kewl !!!

Reply

Marsh Posté le 09-12-2003 à 19:36:52    

pour les fonctions... je les utilise jamais.. car à chaque fois ça fait pas ce que je veux... c peut etre pour ça alors ! lol !

Reply

Marsh Posté le 09-12-2003 à 20:35:36    

mrBebert a écrit :

Eh non :D  
PHP est un super langage où on ne déclare pas les nouvelles variables, mais où il faut re-déclarer dans une fonction les variables globales :pt1cable:  


 
les variables globales, c mal :o

Reply

Marsh Posté le 10-12-2003 à 11:32:57    

je me sers jamais des variables globales... en fait surtout parceque je ne les connais pas ! lol !

Reply

Marsh Posté le 10-12-2003 à 12:10:39    

cela dit j'ai des erreurs dans mes calculs... je comprends pas trop pourquoi...
 
si je choisi "reliures plastiques"... il choisi pas la bonne valeur.. exemple :
 
si je tape 10 .... il me revoit "0.43€" au lieu de "2.50€"
 
voici la table :
 

Code :
  1. nb_pages_total  prix 
  2. Modifier  Effacer  20 2.50
  3. Modifier  Effacer  40 1.25
  4. Modifier  Effacer  55 0.92
  5. Modifier  Effacer  80 0.63
  6. Modifier  Effacer  95 0.53
  7. Modifier  Effacer  115 0.43
  8. Modifier  Effacer  140 0.35
  9. Modifier  Effacer  165 0.30
  10. Modifier  Effacer  190 0.27
  11. Modifier  Effacer  220 0.23
  12. Modifier  Effacer  240 0.22
  13. Modifier  Effacer  290 0.17
  14. Modifier  Effacer  330 0.15
  15. Modifier  Effacer  390 0.13


 
et voici le code pour les calculs :
 

Code :
  1. $nb_ex=$_SESSION['nb_ex'];
  2. $nb_pages_coul=$_SESSION['nb_pages_coul'];
  3. $nb_pages_nb=$_SESSION['nb_pages_nb'];
  4. $tarifs_finitions=$_SESSION['tarifs_finitions'];
  5. $nb_pages_coul_nb=$nb_pages_coul+$nb_pages_nb;
  6. if ($tarifs_finitions != "agraffes" )
  7.  {
  8.  include("../includes/variables.php" );
  9.  $sqlconnect = "SELECT prix FROM $tarifs_finitions WHERE nb_pages_total >= '$nb_pages_coul_nb' ORDER BY nb_pages_total ASC LIMIT 1";
  10.  mysql_query($sqlconnect);
  11.       $res = MYSQL_QUERY($sqlconnect) or die(mysql_error());
  12.       $hop=mysql_fetch_array($res);
  13.        $prix_reliure_unite=$hop["prix"];
  14.  echo mysql_error();
  15.   $total_reliure_ht=$prix_reliure_unite*$nb_ex;
  16.  $total_reliure_ttc=$total_reliure_ht*$tva3;
  17.  $total_reliure_tva=$total_reliure_ttc-$total_reliure_ht;
  18.  }


Message édité par freed102 le 10-12-2003 à 12:15:38
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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