Requete COUNT par menu deroulant.

Requete COUNT par menu deroulant. - PHP - Programmation

Marsh Posté le 12-05-2010 à 17:12:46    

Hello,  
 
bon, je sèche complètement sur un problème. :sweat:  
 
Je souhaite afficher une page, sur laquelle on pourra choisir le mois, le jour, l'heure par menu déroulant, et en validant, on calcule le nombre d'entrée avec COUNT.
Par exemple, je voudrais savoir combien Seb à traité de fiche en 2010 au mois de mai et le 12.
 
Dans ma base ,c'est un champ datetime, et un champ modo.
 
Pour l'instant, j'affiche sans probleme le nombre de fiche validé par un modo, mais pour le reste, j'en suis loiiiiiiiiin  :sweat:  
 

Code :
  1. <form method="post" action="stats.php">
  2. <table width="600" border="0" align="center" cellpadding="0" cellspacing="0" id="tableprincipale">
  3.   <tr>
  4.     <td width="100" class="td4">Op&eacute;rateur : </td>
  5.     <td width="100" class="td5">
  6. <label>
  7.        <select name="operateur" id="operateur">
  8.         <option value="">Choix</option>
  9.         <option value="operateur01">operateur 01</option>
  10.         <option value="operateur02">operateur 02</option>
  11.         <option value="operateur03">operateur 03</option>
  12.         <option value="operateur04">operateur 04</option>
  13.         </select>
  14.     </label> </td>
  15.     <td class="td5">Ann&eacute;e</td>
  16.     <td class="td5">0</td>
  17.     <td class="td5">Mois</td>
  18.     <td class="td5">0</td>
  19.     <td class="td5">Jour</td>
  20.   </tr>
  21.   <tr>
  22.     <td colspan="9" class="td4"><input type="submit" name="Submit" value="Envoyer" /></td>
  23.     </tr>
  24. </table>
  25. </form>
  26. <br />
  27.     <?php
  28. // connexion a la base
  29. require_once("connexion.php" );
  30. $BD_link = mysql_connect("${'BD_host'}${'BD_port'}", $BD_login, $BD_pass) or die("Connexion de la base impossible : ". mysql_error());
  31. $operateur = $_POST["operateur"];
  32. //comptage des entrées
  33.     $req = mysql_query("SELECT COUNT(*) as Count FROM `prospect` WHERE valid ='1' AND operateur = '$operateur' " );
  34.       if ($req)
  35.       {
  36.          $res = mysql_fetch_array($req);
  37.     echo '<center>L\' ',$operateur,' à traité</center>';
  38.     echo '<center>Il y a '.$res["Count"].' annonce(s)</center>';
  39.       }
  40. ?>

Reply

Marsh Posté le 12-05-2010 à 17:12:46   

Reply

Marsh Posté le 12-05-2010 à 17:16:14    

qu'est-ce qui te pose problème? Il suffit d'ajouter les champs qui composent la date à ton formulaire, et de rajouter une condition "and madate = ?" à ta requête...?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-05-2010 à 17:40:47    

C'est que je me complique, et que je n'arrete pas de bloquer sur des choses évidentes  :(  
Tu va voir l'engin  [:al zheimer]  
 

Code :
  1. <form method="post" action="stats.php">
  2. <table width="600" border="0" align="center" cellpadding="0" cellspacing="0" id="tableprincipale">
  3.   <tr>
  4.     <td width="100" class="td4">Op&eacute;rateur : </td>
  5.     <td width="100" class="td5">
  6. <label>
  7.        <select name="operateur" id="operateur">
  8.         <option value="">Choix</option>
  9.         <option value="operateur01">operateur 01</option>
  10.         <option value="operateur02">operateur 02</option>
  11.         <option value="operateur03">operateur 03</option>
  12.         <option value="operateur04">operateur 04</option>
  13.         </select>
  14.     </label> </td>
  15.     <td class="td5">Ann&eacute;e</td>
  16.     <td class="td5"><select name="annee" id="annee">
  17.   <option value="2009">2009</option>
  18.       <option value="2010">2010</option>
  19.       <option value="20111">2011</option>
  20.     </select></td>
  21.     <td class="td5">Mois</td>
  22.     <td class="td5"><select name="mois" id="mois">
  23.  <option value="01">01</option>
  24.  <option value="02">02</option>
  25.  <option value="03">03</option>
  26.  <option value="04">04</option>
  27.  <option value="05">05</option>
  28.  <option value="06">06</option>
  29.     </select></td>
  30.     <td class="td5">Jour</td>
  31.     <td class="td5"><select name="jour" id="jour">
  32.       <option value="01">01</option>
  33.       <option value="02">02</option>
  34.       <option value="03">03</option>
  35.       <option value="04">04</option>
  36.       <option value="05">05</option>
  37.       <option value="06">06</option>
  38.   <option value="06">06</option>
  39.  <option value="07">07</option>
  40.  <option value="08">08</option>
  41.  <option value="09">09</option>
  42.  <option value="10">10</option>
  43.  <option value="11">11</option>
  44.  <option value="12">12</option>
  45.  <option value="13">13</option>
  46.  <option value="14">14</option>
  47.  <option value="15">15</option>
  48.  <option value="16">16</option>
  49.  <option value="17">17</option>
  50.  <option value="18">18</option>
  51.     </select></td>
  52.   </tr>
  53.   <tr>
  54.     <td colspan="10" class="td4"><input type="submit" name="Submit" value="Envoyer" /></td>
  55.     </tr>
  56. </table>
  57. </form>
  58. <br />
  59.     <?php
  60. // connexion a la base
  61. require_once("connexion.php" );
  62. $BD_link = mysql_connect("${'BD_host'}${'BD_port'}", $BD_login, $BD_pass) or die("Connexion de la base impossible : ". mysql_error());
  63. $operateur = $_POST["operateur"];
  64. $annee = $_POST["annee"];
  65. $mois = $_POST["mois"];
  66. $jour = $_POST["jour"];
  67. $madate = $jour." ".$mois." ".$annee;
  68. //comptage des entrées
  69. //$jour." ".$mois." ".$annee;  
  70.     $req = mysql_query("SELECT COUNT(*) as Count FROM `prospect` WHERE valid ='1' AND operateur = '$operateur' AND date = '$madate'  " );
  71.       if ($req)
  72.       {
  73.          $res = mysql_fetch_array($req);
  74.     echo '<center>L\' ',$operateur,' à traité</center>';
  75.     echo '<center>Il y a '.$res["Count"].' annonce(s)</center>';
  76.       }
  77. ?>


Reply

Marsh Posté le 14-05-2010 à 16:28:28    

Une âme charitable, car j'ai rien comme resultat qui s'affiche avec mon second code, il trouve toujours 0 snifff.


Message édité par fscalda le 14-05-2010 à 16:29:22
Reply

Marsh Posté le 16-05-2010 à 01:24:34    

DATETIME attend une date ET une heure.
http://dev.mysql.com/doc/refman/5.0/fr/datetime.html
Si tu utililises juste une date, utilise le type DATE.
De plus, utilise un point ou un tiret comment séparateur plutot qu'un espace...
 
Ensuite je te conseille de tester tes requetes via phpmyadmin pour voir si le problème vient de ta requete.
 
Et ca :  
 

"${'BD_host'}${'BD_port'}"


 
Fait gerber...


Message édité par Pascal le nain le 16-05-2010 à 01:25:20
Reply

Marsh Posté le 17-05-2010 à 15:46:42    

Hello Pascal le nain, désolé de t'avoir fait  :sweat:  avec ma requête de connexion.  
 
DATETIME est utile dans mon cas, car j'aurais besoin de faire des stats à l'heure.

Reply

Marsh Posté le 17-05-2010 à 15:53:02    

Dans ce cas là, il faut que tu castes ta date lors de ta requete SQL ou que tu précises une heure à chaque fois.
 
'SELECT COUNT(*) as Count FROM `prospect` WHERE valid ='1' AND operateur = '$operateur' AND date = CAST("'.$madate.'" AS DATETIME)

Reply

Marsh Posté le 17-05-2010 à 17:12:03    

:cry:  Marche pas plus, pourtant j'ai refait ma variable madate en me disant ça doit venir de la, et rien.
 

Code :
  1. $madate = $annee."-".$mois."-".$jour;


 

Reply

Marsh Posté le 17-05-2010 à 17:42:23    

plutôt qu'un CAST, y'a la fonction DATE_FORMAT() ;) Ca permet de travailler sur l'année, sur le mois, sur la semaine, sur le jour...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-05-2010 à 09:22:46    

J'ai lu la notice du CAST, j'en suis loin d'avoir tout compris, et attenant, je me suis fait un bricolage qui fonctionne. Je vais regarder DATE_FORMAT() pour voir si je m'en sors mieux  [:aztechxx]  
 
Merci à tous de vos contributions, ça me fait avancer.

Reply

Marsh Posté le 18-05-2010 à 09:22:46   

Reply

Marsh Posté le 18-05-2010 à 09:37:05    

ben CAST(), ça fait la même chose qu'en C, ça "convertit" un type de donnée en un autre, d'une façon plus ou moins heureuse parfois. DATE_FORMAT() est fait spécialement pour modifier le format d'affichage d'une date/heure (par ex, afficher la semaine correspondante, ou uniquement l'année sur 4 chiffres et le mois sur 2...)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-05-2010 à 09:55:00    

Merci RUFO pour ces précisions, je vais tenter un nouveau select avec cette fonction.

Reply

Sujets relatifs:

Leave a Replay

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