liste de dossier cree entre deux date de type vachar

liste de dossier cree entre deux date de type vachar - PHP - Programmation

Marsh Posté le 05-03-2014 à 20:06:17    

Bonjour, à tous.  
 
Je cherche le code php pour afficher une liste des dossier actif entre deux année de type varchar(300)  :pt1cable:  exemple: 2001-10-20
 
désolé je ne peux pas changer le format des date de vachar en format date (je sais cela me limite beaucoup  :jap:  )  
 
Voici la table SQL  qui se nome gestion_dossier_client
 
https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-ash3/t1/1965011_10200580704719529_1955473177_n.jpg
 
voici le résulta de la requette
 
2004 = 2 lien_vers_page.php qui vas afficher la liste des deux dossier de 2004
2005 = 3 lien_vers_page.php qui vas afficher la liste des deux dossier de 2005
2006 = 4 lien_vers_page.php qui vas afficher la liste des deux dossier de 2006
2007 = 4 lien_vers_page.php qui vas afficher la liste des deux dossier de 2007
2008 = 2 lien_vers_page.php qui vas afficher la liste des deux dossier de 2008
2009 = 1 lien_vers_page.php qui vas afficher la liste des deux dossier de 2009  
 
ensuite j'aimerais le code qui sera mit dans lien_vers_page.php
 
En vous remerciant d'avance.


Message édité par neodcb le 05-03-2014 à 20:14:46
Reply

Marsh Posté le 05-03-2014 à 20:06:17   

Reply

Marsh Posté le 06-03-2014 à 09:50:17    

Veux-tu aussi des croissants et un café ?

Reply

Marsh Posté le 06-03-2014 à 10:47:28    

Je comprend ton humour mais perso si je viens demander un coup de main c'est que j'ai déjà tenter plusieurs code sans succès et non demander un café  ;-)
 
 

Reply

Marsh Posté le 06-03-2014 à 10:52:14    

Dans ce cas poste les et on t'aidera.

Reply

Marsh Posté le 06-03-2014 à 15:26:18    

ce que je vais te poster sont des exemple d'autre site sur des date de type date et non vachar voilà pourquoi je n'ai pas mit les codes, ça ne ferais que polluer pour rien

Reply

Marsh Posté le 06-03-2014 à 18:08:21    

Voici ce que j'ai créé mais qui ne fonctionne pas  
 

Code :
  1. <?php
  2. include("./templates/header.tpl" );
  3. include('config.php');
  4. if(isset($_SESSION['username']))
  5.  {
  6.   include("./templates/login.tpl" );
  7.   include("./templates/menu.tpl" );
  8. ?>
  9.      <table cellpadding="0" cellspacing="0">
  10.                             <tr>
  11.                                 <td width="990" height="224" align="left" valign="top" colspan="3">
  12.                                     <table class="cadre" width="100%" bgcolor="#FFFFCC">
  13.                                         <tr>
  14.                                             <td width="986">
  15.                                                 <p><b><span style="font-size:11pt;">&nbsp;RESULTAT DE LA RECHERCHE: CLIENTS PAS MIT A JOUR</span></b></p>
  16.                                             </td>
  17.                                         </tr>
  18.                                         <tr>
  19.                                             <td width="986" height="290" align="left" valign="top">
  20.                                                 <div style="width:986px; height:610px; background-color:rgb(255,255,255); overflow:auto; border:solid 1px black;">
  21. <?php
  22. $limite=$_GET['limite'];
  23. $nombre = 20;  // on va afficher 5 résultats par page.
  24. if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois  
  25.                // on met limite à 0.
  26.    
  27. $path_parts = pathinfo($_SERVER['PHP_SELF']);
  28. $page = $path_parts['basename'];
  29. $limitesuivante = $limite + $nombre;
  30. $limiteprecedente = $limite - $nombre;
  31. function displayNextPreviousButtons($limite,$total,$nombre,$page) {
  32. $limitesuivante = $limite + $nombre;
  33. $limiteprecedente = $limite - $nombre;
  34. echo  '<table><tr>'."\n";
  35. if($limite != 0) {
  36.         echo  '<td valign="top">'."\n";
  37.         echo  '<form action="'.$page.'" method="post">'."\n";
  38.         echo  '<input type="submit" value="précédents">'."\n";
  39.         echo  '<input type="hidden" value="'.$limiteprecedente.'" name="limite">'."\n";
  40.         echo  '</form>'."\n";
  41.         echo  '</td>'."\n";
  42. }
  43. if($limiteSuivante < $total) {
  44.         echo  '<td valign="top">'."\n";
  45.         echo  '<form action="'.$page.'" method="post">'."\n";
  46.         echo  '<input type="submit" value="suivants">'."\n";
  47.         echo  '<input type="hidden" value="'.$limitesuivante.'" name="limite">'."\n";
  48.         echo  '</form>'."\n";
  49.         echo  '</td>'."\n";
  50.            
  51. }
  52. echo  '</tr></table>'."\n";
  53. }
  54. function affichePages($nombre,$page,$total) {
  55.         $nbpages=ceil($total/$nombre);
  56.         $numeroPages = 1;
  57.         $compteurPages = 1;
  58.         $limite  = 0;
  59.         //echo '<table border = "0" ><tr>'."\n";
  60.         while($numeroPages <= $nbpages)  {
  61.         //  echo '<td ><a href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'/'.$nbpages.'</a></td>'."\n";
  62.         $limite = $limite + $nombre;
  63.         $numeroPages = $numeroPages + 1;
  64.         $compteurPages = $compteurPages + 1;
  65.             if($compteurPages == 20) {
  66.             $compteurPages = 1;
  67.             echo ''."\n";
  68.             }
  69.         }
  70.         // echo '</tr></table>'."\n";
  71.  echo ''.$nbpages.'';
  72. }
  73. $select = "SELECT count(id) FROM gestion_client WHERE maj_info=0";
  74. $result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() );
  75. $row = mysql_fetch_row($result);
  76. $total = $row[0];
  77. $select = "select * FROM gestion_client WHERE maj_info=0 ORDER BY id ASC limit $limite,$nombre";
  78. $result = mysql_query($select,$db)  or die ('Erreur : '.mysql_error() );
  79. if($total) {
  80.     // début du tableau
  81.     echo '<table bgcolor="#FFFFFF" border="1" width="986">'."\n";
  82.         // première ligne on affiche les titres prénom et surnom dans 2 colonnes
  83.      echo '<tr>';
  84.         echo '<td width="12"><p>&nbsp;</p></td>';
  85.         echo '<td width="190" bgcolor="#66FFFF"><b>N° de dossier client:</b></td>';
  86.         echo '<td width="100" bgcolor="#66FFFF"><p><b>Civilité</b></p></td>';
  87.         echo '<td width="330" bgcolor="#66FFFF"><p><b>Prenom et Nom</b></p></td>';
  88.         echo '<td bgcolor="#66FFFF"><p><b>Date de Naissance</b></p></td>';
  89.         echo '<td  align="right" bgcolor="#66FFFF"><p><b>Téléphone</b></p></td>';
  90.         echo '<td width="10"><p>&nbsp;</p></td>';
  91.      echo '</tr>'."\n";
  92.     // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.     
  93.     while($row = mysql_fetch_array($result)) {
  94.      echo '<tr>';
  95.         echo '<td width="12"><p>&nbsp;</p></td>';
  96.  echo '<td width="190"><a href="fiche_client.php?id='.$row['id'].'"><b>N° de dossier client: '.$row['id'].'</b></a></td>';
  97.         echo '<td width="100"><p>'.$row['civil_client'].'</p></td>';
  98.         echo '<td width="330"><p>'.$row['prenom_client'].' '.$row['nom_client'].'</p></td>';
  99.         echo '<td><p><i>'.$row['ne_le_client'].'</i></p></td>';
  100.         echo '<td  align="right"><p>'.$row['tel_client'].'</p></td>';
  101.         echo '<td width="10"><p>&nbsp;</p></td>';
  102.      echo '</tr>'."\n";
  103.     }
  104.     echo '</table>'."\n";
  105. if($total > $nombre) {
  106. ?><p align="center"><?php
  107. if($limite != 0) {
  108.     echo '<a href="'.$page.'?limite='.$limiteprecedente.'">Page précédente</a>&nbsp;-&nbsp;';
  109. }
  110. else
  111. {
  112. echo 'Page précédente&nbsp;-&nbsp;';
  113. }
  114.     // affichage des liens vers les pages
  115. $resa = $limite + $nombre;
  116. $resb = $resa / $nombre;
  117. echo 'page '.$resb.' / ';
  118.     affichePages($nombre,$page,$total);
  119.     // affichage des boutons
  120. if($limitesuivante < $total) {
  121.     echo '&nbsp;-&nbsp;<a href="'.$page.'?limite='.$limitesuivante.'">Page Suivante</a>';
  122.   }
  123. else
  124.   {
  125. echo '&nbsp;-&nbsp;Page Suivante';
  126. }
  127. ?></p><?php
  128. }
  129.     // fin du tableau.
  130. }
  131. else echo 'Pas d\'enregistrements dans cette table...';
  132. // on libère le résultat
  133. mysql_free_result($result);
  134. ?>
  135.            </div>
  136.                                             </td>
  137.                                         </tr>
  138.                                     </table>
  139.                                 </td>
  140.                             </tr>
  141.                         </table>
  142. <?php
  143. }
  144. else
  145.  {
  146.   include("./templates/login_out.tpl" );
  147.   include("./templates/menu_out.tpl" );
  148.   include("./templates/index_out.tpl" );
  149.   //include_once("./templates/accueil_out.tpl" );
  150.  }
  151. include("./templates/footer.tpl" );
  152. mysql_close ();
  153. ?>


Message édité par neodcb le 06-03-2014 à 18:09:11
Reply

Marsh Posté le 06-03-2014 à 18:16:24    

ce que je veux changer c'est

 
Code :
  1. $select = "SELECT count(id) FROM gestion_client WHERE maj_info=0";
 

et que ca devienne un truc du genre: (sachant que les date son format varchar et non date dans le sql)

 
Code :
  1. $select = "SELECT count(id) FROM gestion_client where '2004-01-01' < date_effet > '2004-12-31'  AND  '2004-01-01' < date_résiliation  > '2004-12-31' ";

Message cité 1 fois
Message édité par neodcb le 06-03-2014 à 18:17:58
Reply

Marsh Posté le 07-03-2014 à 10:50:31    

neodcb a écrit :

ce que je veux changer c'est  
 

Code :
  1. $select = "SELECT count(id) FROM gestion_client WHERE maj_info=0";


 
et que ca devienne un truc du genre: (sachant que les date son format varchar et non date dans le sql)  
 

Code :
  1. $select = "SELECT count(id) FROM gestion_client where '2004-01-01' < date_effet > '2004-12-31'  AND  '2004-01-01' < date_résiliation  > '2004-12-31' ";



Si tu as la main sur le schéma de la base, remplacer les varchar par des champs de type date ça aiderait.
 
Si c'est trop tard pour changer le schéma :

Code :
  1. $select = "SELECT count(id) FROM gestion_client WHERE YEAR(STR_TO_DATE(date_effet, '%Y-%m-%d') = 2004 AND  YEAR(STR_TO_DATE(date_resiliation, '%Y-%m-%d') = 2004 "


http://dev.mysql.com/doc/refman/5. [...] tions.html


---------------
Main/Alt1/Alt2/Alt3
Reply

Marsh Posté le 08-03-2014 à 12:20:13    

J'ai modifier comme tu m'a conseiller :  
 

Code :
  1. $select = "SELECT count(id) FROM gestion_assur_prevoyance WHERE YEAR(STR_TO_DATE(date_effet, '%Y-%m-%d') = 2004 AND  YEAR(STR_TO_DATE(date_resiliation, '%Y-%m-%d') = 2004 ";
  2. // $select = "SELECT count(id) FROM gestion_client WHERE maj_info=0";
  3. $result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() );
  4. $row = mysql_fetch_row($result);
  5. $total = $row[0];
  6. // $select = "select * FROM gestion_assur_prevoyance WHERE maj_info=0 ORDER BY id ASC limit $limite,$nombre";
  7. $select = "SELECT count(id) FROM gestion_assur_prevoyance WHERE YEAR(STR_TO_DATE(date_effet, '%Y-%m-%d') = 2004 AND  YEAR(STR_TO_DATE(date_resiliation, '%Y-%m-%d') = 2004  ORDER BY id ASC limit $limite,$nombre";
  8. $result = mysql_query($select,$db)  or die ('Erreur : '.mysql_error() );


 
 
mais réponse -> Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 :

Reply

Marsh Posté le 09-03-2014 à 10:06:37    

Bon j'ai créé ceci: mais n'affiche que les dossier avec la date annuel d'effet 2004
mais comment lui dire si par exemple un dossier a comme date effet 2003-06-01 et date résiliation 2009-06-01 donc dois être compté dans les année 2003, 2004, 2005, 2006, 2007, 2008, 2009 donc dan la liste dois être aussi compté  
 
 
 

Code :
  1. $select = "SELECT count(id) FROM gestion_assur_prevoyance WHERE LEFT(date_effet, 4) = 2004";
  2. $result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() );
  3. $row = mysql_fetch_row($result);
  4. $total = $row[0];
  5. $select = "select * FROM gestion_assur_prevoyance WHERE LEFT(date_effet, 4) = 2004 ORDER BY id ASC limit $limite,$nombre";
  6. $result = mysql_query($select,$db)  or die ('Erreur : '.mysql_error() );

Reply

Marsh Posté le 09-03-2014 à 10:06:37   

Reply

Marsh Posté le 14-03-2014 à 18:45:29    

Up please

Reply

Marsh Posté le 14-03-2014 à 20:24:23    

Si ta colonne est en varchar et que tu as bien un format date, y'a pas trop de souci, au mieux tu peux transtyper pour être sûr de ne pas avoir d'erreur.
 
Ça pourrait donner un truc du genre :
 

Code :
  1. SELECT * FROM gestion_assur_prevoyance WHERE CAST(date_effet as DATE) >= '2003-06-01' AND CAST(date_resiliation AS DATE)  <= '2009-06-01';

Reply

Marsh Posté le 16-03-2014 à 13:03:10    

Nikel ça fonctionne en partie : Je m'explique je pense que la formule est pas fini ou entière.
J'ai testé ceci:  
 

Code :
  1. $select = "SELECT * FROM gestion_assur_prevoyance WHERE CAST(date_effet as DATE) >= '2003-01-01' AND CAST(date_effet AS DATE)  <= '2003-12-31'";


 
Ce qui me donne les dossiers créés dans l'année 2003 mais pas la totalités des dossier actifs lors de l'année 2003
exemple si j'ai 12 dossiers crées en 2002 mais actifs jusque 2005, ces 12 dossiers doivent être compris dans l'année 2003 + ceux créés en 2003.
 
Faudrait une formule qui affiche Tous les actifs entre 2003-01-01 et 2003-12-31.
 
et c'est là que je bloque.  
 
Merci d'avance pour votre aide


Message édité par neodcb le 16-03-2014 à 13:03:41
Reply

Marsh Posté le 16-03-2014 à 17:01:39    

J'ai testé ceci mais cela ne fonctionne pas  
 

Code :
  1. $select = "SELECT * FROM gestion_assur_prevoyance WHERE
  2. CAST(date_effet as DATE) >= '2003-01-01'
  3. AND CAST(date_effet AS DATE)  <= '2003-12-31'
  4. AND CAST(date_resiliation as DATE) >= '2003-01-01'
  5. AND CAST(date_resiliation AS DATE)  <= '2003-12-31'";

Reply

Marsh Posté le 16-03-2014 à 17:23:33    

J'ai penser a faire ceci aussi mais cela ne fonctionne pas  
 

Code :
  1. //$select = "SELECT count(id) FROM gestion_assur_prevoyance WHERE LEFT(date_effet, 4) = 2004";
  2. $select = "SELECT * FROM gestion_assur_prevoyance WHERE
  3. CAST(date_effet as DATE) >= '2003-01-01'
  4. and CAST(date_effet AS DATE)  <= '2003-12-31'";
  5. $select2 = "SELECT * FROM gestion_assur_prevoyance WHERE CAST(date_resiliation as DATE) >= '2003-01-01' and CAST(date_resiliation AS DATE)  <= '2003-12-31'";
  6. $select3 = $select + $select2;
  7. $result = mysql_query($select3,$db) or die ('Erreur : '.mysql_error() );
  8. $row = mysql_fetch_row($result);
  9. $total = $row[0];
  10. //$select = "select * FROM gestion_assur_prevoyance WHERE LEFT(date_effet, 4) = 2004 ORDER BY id ASC limit $limite,$nombre";
  11. $select = "SELECT * FROM gestion_assur_prevoyance WHERE
  12. CAST(date_effet as DATE) >= '2003-01-01'
  13. and CAST(date_effet AS DATE)  <= '2003-12-31' ORDER BY id ASC limit $limite,$nombre";
  14. $select2 = "SELECT * FROM gestion_assur_prevoyance WHERE
  15. CAST(date_resiliation as DATE) >= '2003-01-01'
  16. and CAST(date_resiliation AS DATE)  <= '2003-12-31' ORDER BY id ASC limit $limite,$nombre";
  17. $select3 = $select + $select2;
  18. $result = mysql_query($select3,$db)  or die ('Erreur : '.mysql_error() );

Reply

Marsh Posté le 17-03-2014 à 09:31:15    

Bah c'est simple.
 
Tu dois prendre tout ce qui commence avant ou pendant 2003, et finit après ou pendant 2003.
Ta requête devrait ressembler à un truc comme :
 

Code :
  1. SELECT * FROM gestion_assur_prevoyance WHERE YEAR(date_effet) <= '2003' AND YEAR(date_resiliation) >= '2003';


 
Je sais pas si j'ai bien pigé ce que tu veux faire vu que ça me parait trop simple ce que je t'ai mit  :D  
 

Reply

Marsh Posté le 20-03-2014 à 18:47:40    

bistouille a écrit :

Bah c'est simple.
 
Tu dois prendre tout ce qui commence avant ou pendant 2003, et finit après ou pendant 2003.
Ta requête devrait ressembler à un truc comme :
 

Code :
  1. SELECT * FROM gestion_assur_prevoyance WHERE YEAR(date_effet) <= '2003' AND YEAR(date_resiliation) >= '2003';


 
Je sais pas si j'ai bien pigé ce que tu veux faire vu que ça me parait trop simple ce que je t'ai mit  :D  
 


 
je pense que cela fonctionne que dans le cas ou les date sont du type date et non varchar comme précisé dans le premier poste.

Reply

Sujets relatifs:

Leave a Replay

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