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

  FORUM HardWare.fr
  Programmation
  PHP

  Jouer avec les dates avec PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Jouer avec les dates avec PHP

n°1229818
limp15000
www.geneva-racing.ch
Posté le 24-10-2005 à 17:13:28  profilanswer
 

Bonjour!
J'ai plusieurs tables et pour l'instant je stockais les date en VARCHAR(10) au fomat suivant j-m-A (exemple: 01-12-2004).
Mais maintenant j'aimerais faire un test afin d'afficher les contrats vieux de 10 mois... Mais je  m'en sors plus. Voici mon code:

Code :
  1. $datsyst= mktime(0 ,0 ,0 ,date("m" ),date("d" ) ,date("Y" ));
  2. $rqt = "SELECT * FROM contrat";
  3. $resultcont = Mysql_Query($rqt) or die ($errReq);
  4. $contdata = mysql_fetch_assoc($resultcont);
  5. while ($ligne = mysql_fetch_array($resultcont))
  6. { extract ($ligne);
  7. $contdate = mktime($contdate);
  8. echo($contdate);echo("---" );echo($datsyst);
  9. if (($contdate + 79200) >= $datsyst)
  10. {
  11. ?>
  12. <form METHOD="POST" ACTION="?modcontrat">
  13. <fieldset>
  14. <label>Num&eacute;ro contrat:</label>
  15. <?echo (html_entity_decode($contdata['contnum']));?><br />
  16. <label>Date contrat:</label>
  17. <?echo (html_entity_decode($contdata['contdate']));?><br />
  18. <label>Num&eacute;ro client:</label>
  19. <?echo (html_entity_decode(utf8_decode($contdata['contclinum'])));?><br />
  20. <label>Num&eacute;ro repr&eacute;sentant:</label>
  21. <?echo (html_entity_decode(utf8_decode($contdata['contrepnum'])));?><br />
  22. </fieldset>
  23. </form>
  24. <?
  25. }
  26. }
  27. mysql_close();
  28. ?>


 
J'ai lu de la doc de partout, sur Nexen, mysql manual etc...  
J'ai la tête qui va exploser!
Merci de votre aide


Message édité par limp15000 le 24-10-2005 à 17:14:16
mood
Publicité
Posté le 24-10-2005 à 17:13:28  profilanswer
 

n°1229835
shakpana
des fois, j'me demande ...
Posté le 24-10-2005 à 17:39:01  profilanswer
 

arf, ça sent la pelle à clous(tm) ton histoire ...
si tu avais su, tu aurais mis tes dates dans ta db selon un format fait pour, genre DATE_TIME ...
(bah oui s'plus pratique que d'utiliser un tournevis pour attraper des spaghetti)
mais bon ...
 
et pis pourquoi selectionner TOUS les enregistrements de la db si tu n'en veux que certains [:pingouino]
in extenso : déplaces le test de date au niveau de la requête et laisses le serveur de DB faire le tri ...
Donc direction le manuel MySQL, cf le chapitre sur les dates ...
 
et par hasard : >= ça voudrait pas dire "plus grand ou égal à" ?
hmm, tu chercherais pas les contrats du futur, toi ?!? ...

n°1229846
limp15000
www.geneva-racing.ch
Posté le 24-10-2005 à 17:57:21  profilanswer
 

LOL,
je vais reprendre les choses tranquillement demain parce que là j'ai eu une rude journée... Au pire je vais modifier et mettre en date...
C'est vrai que ce serait plus simple de trier au niveau de la requête...
Je suis sur la bonne voie, on va mettre ça en pratique demain.
Bonne soirée

n°1229961
Xav_
The only one...
Posté le 24-10-2005 à 20:51:29  profilanswer
 

ben spa terrible la conception à la base, mais maintenant, t'a pu trop le choix (à moins de tout casser).
le moins chiant à mon avis, tu récupère la date système, tu cherche donc la date - 10 mois qui correspond, et tu la met sous la forme "jj-mm'aa" (comme ta BDD), et après tu fait un select uniquement des éléments correspondant...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°1230190
limp15000
www.geneva-racing.ch
Posté le 25-10-2005 à 09:15:25  profilanswer
 

Pour les dates qui vont servir au traitement, j'ai changé le format dans la base et j'ai trouvé une fonction qui me modifie l'affichage. Maintenant on va faire la requête qui trouve les contrats vieux de 10 mois...  
On verra ce que ça donne...

n°1230232
limp15000
www.geneva-racing.ch
Posté le 25-10-2005 à 10:28:48  profilanswer
 

Voilà ça fonctionne:

Code :
  1. <?
  2. /*
  3. ---------------------------------------------------------
  4. Module : Contrat à renouveller
  5. Auteur :  
  6. ---------------------------------------------------------
  7. */
  8. include('lib/connection.lib.php');
  9. include('lib/erreur.lib.php');
  10. include('lib/date.lib.php');
  11. $rqt = "SELECT * FROM contrat WHERE TO_DAYS(NOW()) - TO_DAYS(contdate) >= 360";
  12. $resultcont = Mysql_Query($rqt) or die ($errReq);
  13. while ($contdata = mysql_fetch_assoc($resultcont))
  14. {
  15. ?>
  16. <form METHOD="POST" ACTION="?modcontrat">
  17. <fieldset>
  18. <label>Num&eacute;ro contrat:</label>
  19. <?echo (html_entity_decode($contdata['contnum']));?><br />
  20. <label>Date contrat:</label>
  21. <?echo (html_entity_decode(dateFr($contdata['contdate'])));?><br />
  22. <label>Num&eacute;ro client:</label>
  23. <?echo (html_entity_decode(utf8_decode($contdata['contclinum'])));?><br />
  24. <label>Num&eacute;ro repr&eacute;sentant:</label>
  25. <?echo (html_entity_decode(utf8_decode($contdata['contrepnum'])));?><br />
  26. <input type="submit" name="boutonrenouv" value="Renouveler" />
  27. <input type="hidden" name="numcontrat" value="<?=$contdata['contnum'];?>" />
  28. </fieldset>
  29. </form>
  30. <?
  31. }
  32. mysql_close();
  33. ?>


 
Je cherche maintenant à augmenter l'année de 1 lorsqu'on clique sur le bouton renouveler...
Pour celà j'ai fait une page appeler modcontrat...
Mais je bloque, comment incrémenter seulement l'année sans trop se prendre la tête???

Code :
  1. <?
  2. /*
  3. ---------------------------------------------------------
  4. Module : Renouveller le contrat
  5. Auteur :  
  6. ---------------------------------------------------------
  7. */
  8. include('lib/connection.lib.php');
  9. include('lib/erreur.lib.php');
  10. $contchoisi = $_POST['numcontrat'];
  11. $rqt = "SELECT YEAR(contdate) FROM contrat WHERE contnum='$contchoisi'";
  12. $sql = "UPDATE contrat SET contdate = '' WHERE contnum='$contchoisi' LIMIT 1";
  13.  $sql_results = mysql_query($sql) or die ($errReq);
  14. echo "<div align='center'>";
  15. echo "<font face='verdana' size='3'>Le contrat a bien &eacute;t&eacute; renouvel&eacute;!</font>";
  16. echo "</div>";
  17. ?>

n°1230262
limp15000
www.geneva-racing.ch
Posté le 25-10-2005 à 11:06:02  profilanswer
 

Bon j'ai réussi avec la fonction mktime d'incrémenter d'une année...  
J'obtiens un timestamp, maintenant faut que je trouve comment convertir ce timestamp en date et ce sera tout bon ;)


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

  Jouer avec les dates avec PHP

 

Sujets relatifs
Script PHP, bonjour, bousoir[PHP 5] Encodage bizarre par défaut
[PHP] Session en objet ??[PHP] Connexion base de données
PHP XMLPHP Passer de la version php4.0.6 à PHP 4.3.8
des identifiants et des dates ...PHP Exécution de frame en séquentiel
Ou trouver des tutoriaux sur le PHPEst-il possible de developper en PHP sur PDA/PPC ?
Plus de sujets relatifs à : Jouer avec les dates avec PHP


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