Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1137 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  liste de dossier cree entre deux date de type vachar

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

liste de dossier cree entre deux date de type vachar

n°2221591
neodcb
Posté le 05-03-2014 à 20:06:17  profilanswer
 

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
mood
Publicité
Posté le 05-03-2014 à 20:06:17  profilanswer
 

n°2221621
Pablo Escr​obarbe
Retour d'exil
Posté le 06-03-2014 à 09:50:17  profilanswer
 

Veux-tu aussi des croissants et un café ?

n°2221626
neodcb
Posté le 06-03-2014 à 10:47:28  profilanswer
 

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é  ;-)
 
 

n°2221627
Pablo Escr​obarbe
Retour d'exil
Posté le 06-03-2014 à 10:52:14  profilanswer
 

Dans ce cas poste les et on t'aidera.

n°2221665
neodcb
Posté le 06-03-2014 à 15:26:18  profilanswer
 

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

n°2221689
neodcb
Posté le 06-03-2014 à 18:08:21  profilanswer
 

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
n°2221690
neodcb
Posté le 06-03-2014 à 18:16:24  profilanswer
 

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
n°2221775
Volkhen
Posté le 07-03-2014 à 10:50:31  profilanswer
 

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
n°2221863
neodcb
Posté le 08-03-2014 à 12:20:13  profilanswer
 

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 :

n°2221905
neodcb
Posté le 09-03-2014 à 10:06:37  profilanswer
 

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() );

mood
Publicité
Posté le 09-03-2014 à 10:06:37  profilanswer
 

n°2222366
neodcb
Posté le 14-03-2014 à 18:45:29  profilanswer
 

Up please

n°2222373
bistouille
Posté le 14-03-2014 à 20:24:23  profilanswer
 

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';

n°2222416
neodcb
Posté le 16-03-2014 à 13:03:10  profilanswer
 

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
n°2222431
neodcb
Posté le 16-03-2014 à 17:01:39  profilanswer
 

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'";

n°2222432
neodcb
Posté le 16-03-2014 à 17:23:33  profilanswer
 

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() );

n°2222454
bistouille
Posté le 17-03-2014 à 09:31:15  profilanswer
 

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  
 

n°2222742
neodcb
Posté le 20-03-2014 à 18:47:40  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  liste de dossier cree entre deux date de type vachar

 

Sujets relatifs
Qui saurait faire ce type de formulaire ?Liste dossiers et sous dossiers d'un disque
Intégrer liste/boucle php dans un tableau html.date création
type de retour de la fonction binomial_coefficient de boosttri d'une liste et débogage
JCombobox : comment remettre la liste à 0?Retirer une personne d'une liste de diffusion avant envoi
Problème création liste par VBAComment intégrer un module type carousel dans mon site ?
Plus de sujets relatifs à : liste de dossier cree entre deux date de type vachar


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR