[PHP] Probleme avec des dates...

Probleme avec des dates... [PHP] - PHP - Programmation

Marsh Posté le 01-09-2005 à 18:52:48    

Bonjour,
 
je suis en train de coder une réservation en ligne pour un club de tennis.
J ai besoin des dates en cours et celles choisies pour reserver afin de les comparer et de bloquer la reservation avec 15jours de delais maximum.
 
En fait la comparaison des dates marche sauf lorsque le mois choisis est septembre. Celui m'affiche une date du genre 'dd-0-YYYY' sur les autres mois cela m'affiche 'dd-mm-YYYY' sans probleme.  
Voici mon code en esperant que cela puisse etre résolu.
 
 
Menu.php

Code :
  1. <? session_start();
  2. if (isset($_POST['send']))
  3. {
  4. $send = $_POST['send'];
  5. {
  6. switch($send){
  7. case 'log':
  8. {
  9. if (isset($_POST['login']) && $_POST['login'] <> NULL && $_POST['password'] <> NULL) {
  10.  
  11.   $db = mysql_connect('localhost', 'using', 'testing');
  12.   mysql_select_db('usm', $db);
  13.  
  14.  
  15.  
  16.   $loggued = mysql_query('SELECT login, password FROM users WHERE login="'.$_POST['login'].'" AND password="'.$_POST['password'].'"');
  17.   $varlog = mysql_fetch_array($loggued, MYSQL_ASSOC);
  18.   if (($_POST['login'] == $varlog["login"]) && ($_POST['password'] == $varlog["password"])) //Test du login/pass
  19.   {
  20.       $_SESSION['login2'] = $_POST['login'];   //Login de l'utilisateur identifié de la session
  21.   $_SESSION['date'] = $vardate;
  22.        header('Location : current');
  23.   }
  24.   else
  25.       echo "<script type='text/javascript' language='Javascript'>alert('Login or Password incorrect')</script>";
  26.   mysql_close($db);
  27. }
  28. }
  29. break;
  30. case 'continuer' :
  31. if (isset($_POST['month']))
  32. {
  33. $month = $_POST['month'];
  34. {
  35. switch($month){
  36. case '01':
  37. $_SESSION['month'] = Janvier;
  38. $_SESSION['month2'] = 01;
  39. break;
  40. case '02':
  41. $_SESSION['month'] = Février;
  42. $_SESSION['month2'] = 02;
  43. break;
  44. case '03':
  45. $_SESSION['month'] = Mars;
  46. $_SESSION['month2'] = 03;
  47. break;
  48. case '04':
  49. $_SESSION['month'] = Avril;
  50. $_SESSION['month2'] = 04;
  51. break;
  52. case '05':
  53. $_SESSION['month'] = Mai;
  54. $_SESSION['month2']= 05;
  55. break;
  56. case '06':
  57. $_SESSION['month'] = Juin;
  58. $_SESSION['month2']= 06;
  59. break;
  60. case '07':
  61. $_SESSION['month'] = Juillet;
  62. $_SESSION['month2'] = 07;
  63. break;
  64. case '08':
  65. $_SESSION['month'] = Aout;
  66. $_SESSION['month2'] = 08;
  67. break;
  68. case '09':
  69. $_SESSION['month'] = Septembre;
  70. $_SESSION['month2'] = 09;
  71. break;
  72. case '10':
  73. $_SESSION['month'] = Octobre;
  74. $_SESSION['month2'] = 10;
  75. break;
  76. case '11':
  77. $_SESSION['month'] = Novembre;
  78. $_SESSION['month2'] = 11;
  79. break;
  80. case '12':
  81. $_SESSION['month'] = Décembre;
  82. $_SESSION['month2'] = 12;
  83. break;
  84. }}}
  85. break;
  86. case 'continuer2' :
  87. if (isset($_POST['jour']))
  88. {
  89. $_SESSION['jour'] = $_POST['jour'];
  90. }
  91. break;
  92. }}}
  93. echo'<table width="650" border="1" cellspacing="0" cellpadding="0" align="center">
  94. <tr>
  95. <td width>';
  96. if (isset($_SESSION['login2']))
  97. {
  98. echo'<a href=resa.php>Resa</a> ';
  99. echo '</td>';
  100. }
  101. else
  102. {
  103. echo'<form method="post">   
  104.   <table><tr><td>&nbsp Login:<input type="text" name="login" size=20></td>
  105.    </tr>
  106.    <tr><td>Pass: <input type="password" name="password" size=20></td>
  107.    </tr>
  108.      <tr align="center"><td colspan="2"><input type="submit" name="send" value="log"></td></tr></table>
  109. </form>';
  110. echo '</td>';
  111. }


 
Resa.php

Code :
  1. <?
  2. require_once("test.php" );
  3. $db = mysql_connect('localhost', 'using', 'testing');
  4.   mysql_select_db('usm', $db);
  5.   $datin = mysql_query('SELECT Date FROM cours WHERE ID_cours=1');
  6.   $dating1 = mysql_fetch_array($datin, MYSQL_ASSOC);
  7. echo '<td>';
  8. echo'<form name="form1" method="post" action="">
  9. <table>
  10. <tr>'; echo 'Choix de la date et heure de reservation</tr>
  11. <tr>';
  12. {
  13. $Mois1 = $_SESSION['month2'];
  14. $Jour1 = $_SESSION['jour'];
  15. $Annee1 = 2005;
  16. $Date0 = $Jour1 . "-" . $Mois1 . "-" . $Annee1;
  17. $Date1 = mktime( 0, 0, 0, $Mois1, $Jour1, $Annee1 );
  18. $Mois2 = date("m" );
  19. $Jour2 = date("j" );
  20. $Annee2 = date("Y" );
  21. $Date02 = $Jour2 . "-" . $Mois2 . "-" . $Annee2;
  22. $Date2 = mktime( 0, 0, 0, $Mois2, $Jour2, $Annee2 );
  23. $nb = floor(($Date1 - $Date2)  / (60*60*24)) ;
  24. if (isset($_SESSION['jour'])) {
  25. echo '<br>'; echo $_SESSION['month2'];
  26. echo '<br>Vous avez choisis le : ';
  27. echo $Date0;
  28. echo ' '; echo $Date1;
  29. echo '<br>';
  30. echo 'Nous sommes le : ';
  31. echo $Date02; echo ' '; echo $Date2;
  32. echo '<br>';
  33. echo 'Nombre de jour séparant date choisie avec date du jour : '; echo $nb;
  34. echo '<nb>';
  35. }
  36. else
  37. {
  38. if (isset($_SESSION['month'])) {
  39. echo '<td>';
  40. echo 'Mois : ';
  41. echo $_SESSION['month'];
  42. echo '</td></tr>';
  43. echo '<td>';
  44. echo' Jour :</td> <td><select name=jour>';
  45. $i = 1;
  46. while ( $i < 32 )
  47. {
  48. echo '<option>';echo $i; echo'</option>';
  49. $i++;
  50. }
  51. echo '</select></td><td> <input type="submit" name="send" value="continuer2"></td></tr></table></form>';}
  52. else
  53. {
  54. echo' <td>';
  55. echo' Mois : </td>
  56. <td> <select name=month> <option>01</option> <option>02</option> <option>03</option> <option>04</option> <option>05</option> <option>06</option>
  57. <option>07</option> <option>08</option> <option>09</option> <option>10</option> <option>11</option> <option>12</option>
  58. </select><td>
  59. <td> <input type="submit" name="send" value="continuer"></td></tr></table></form>
  60. ';
  61. }
  62. }}
  63. ?>


 
Merci de votre aide si possible :p

Reply

Marsh Posté le 01-09-2005 à 18:52:48   

Reply

Marsh Posté le 01-09-2005 à 19:23:31    

Bon, déjà, ne met pas de zéro devant un nombre, 01 est une notation en octal et pas en décimal, ce qui pourrait expliquer le problème avec 09 :)

Reply

Marsh Posté le 01-09-2005 à 19:35:19    

L'indentation est horible, j'y comprend rien.
et puis, plsuieurs "}" d'affilé ca complique la compréhension.
D'habitude j'arrive à comprendre comment marche les scripts mais là, j'y pige rien alors que c'est des pages bateau.
 
Au fait, il y a des fonctions pour comparer des dates.
Et pas besoin de mettre dans des sessions des données qu'on peut retrouver super facilement telle que le nom du mois en toute lettre : suffit de faire un tableau

Code :
  1. NOmDuMois=array('Janvier','Février',...)

que tu mets dans un fichier inclus par les pages où t'en as besoin. En ton case de 50 lignes deviendrais un simple "si nombre compris entre 1 à 12" alors on met ce chiffre dans la session sinon ..." et pour récupérer le nom du mois, ca donera

Code :
  1. NOmDuMois[$_SESSION['month2']]


 
enfin bref, là, j''arrive pas à comprendre assez bien ton code pour te donner la solution, mais t'as déjà de quoi l'améliorer. ;)

Reply

Marsh Posté le 01-09-2005 à 19:47:57    

nothing else pour m'aider ?

Reply

Marsh Posté le 01-09-2005 à 19:50:28    

T'as fait ce qu'a dit naceroth  déjà ? Ce serait logique que ça vienne de là (même si le mois d'août serait censé déconner de la même façon que septembre).


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 01-09-2005 à 19:53:03    

oui ca serait logique que ca deconne tout autant.
je viens de tester et ca marche le probleme sera pour apres lorsque je vais comparer avec une date contenu dans ma BD sous mysql.
Les dates sont en 'dd' donc bon j'aurais bien voulu éviter :p

Reply

Marsh Posté le 02-09-2005 à 01:04:01    

7wX a écrit :

oui ca serait logique que ca deconne tout autant.
je viens de tester et ca marche le probleme sera pour apres lorsque je vais comparer avec une date contenu dans ma BD sous mysql.
 
Les dates sont en 'dd' donc bon j'aurais bien voulu éviter :p


 
Que tes dates en bdd soit avec un ou X chiffres ca n'a AUCUNE influence sur les traitement que t'y applique
 
je vois pas en quoi ca te genes : apprends à utiliser la fonction date() :
date([format],[timestamp])  
 
donc :  
 
$tadate = date('Y-m-d',mktime(0,0,0,$mois,$jour,$annee);
--> http://www.php.net/date
 
probleme résolu?
 
PS : à voir ton code ca doit pas faire longtemps que tu connais PHP


Message édité par Profil supprimé le 02-09-2005 à 01:04:57
Reply

Marsh Posté le 02-09-2005 à 01:18:06    

7wX a écrit :


Code :
  1. switch($month){
  2. case '01':
  3. $_SESSION['month'] = Janvier;
  4. $_SESSION['month2'] = 01;
  5. break;
  6. case '02':
  7. $_SESSION['month'] = Février;
  8. $_SESSION['month2'] = 02;



 :sweat: très étrange comme code

Code :
  1. $_SESSION['month2'] = (int)$month;


 ça ne serait pas plus simple ?  
(et comme vu au dessus, un p'tite fonction genre  

Code :
  1. $_SESSION['month'] = nb2mois((int)$month);


 ça ne t'aiderais pas ?

Citation :


e viens de tester et ca marche le probleme sera pour apres lorsque je vais comparer avec une date contenu dans ma BD sous mysql.  


uhm, tu peux faire tes comparaisons directement dans ta base de donnée ou en php (cf post au dessus)
 
Il y a des fonctions mysql très pratiques, je trouve, pour faire des comparaisons de date, genre DATE_ADD, etc. (en plus avec le mots clès BETWEEN, tu peux choisir un intervalle de date, etc)
 
Note : un champ date utilise le format ISO yyyy-mm-dd c'est c'est plus simple pour faire la comparaison d'une date.
 
bref, que tu fasse ça du coté PHP, ou du coté de MySQL tu ne devrais avoir aucun problème...

Reply

Marsh Posté le 02-09-2005 à 13:43:43    

merci a tous je vais voir ce que je peux faire pour arranger mon code :p

Reply

Sujets relatifs:

Leave a Replay

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