Tableau de réservations

Tableau de réservations - PHP - Programmation

Marsh Posté le 06-09-2013 à 20:48:43    

Bonjour tout le monde,
 
je souhaite concevoir un système (basique) de réservation de créneaux pour une salle de sport.
Le principe est que les utilisateurs vont en ligne choisir le jour et l'heure à laquelle ils veulent venir.
 
Mais je n'ai pas un esprit formaté à la construction php/mysql !! Alors je ne sais pas comment je peux faire fonctionner ça concernant le choix du créneau horaire.
 
Voici l'adresse du calendrier : http://www.osteopathe-82.com/KFWod/calendrier.php
 
Lorsqu'on clique sur la date on arrive à un tableau (tout de HTML vêtu) mais c'est là que se pose mon probleme.
Je souhaite faire apparaitre dans la colonne de droite la liste des utilisateurs qui sont déjà présents dans ce créneau (maximum 12 inscrits).
 
Mais je bugue.
 
J'ai crée une table mysql avec les champs: id, id_user, jour, mois, annee, heure... mais je ne sais pas comment afficher les résultats d'une requete de manière ordonnée.
Je peux toujours, pour chaque tranche horaire, lancer une requete différente... mais je vais pas faire le bourrin alors que je suis sûr qu'il y a moyen de faire différemment...
 
Je ne sais pas si je suis clair, mais j'aurai besoin d'éclaircissements sur la manière dont je dois concevoir ce projet..
 
D'avance merci !!


---------------
www.bubbleburstband.com
Reply

Marsh Posté le 06-09-2013 à 20:48:43   

Reply

Marsh Posté le 09-09-2013 à 13:03:05    

Up ? Personne pour essayer de me guider un petit peu ?


---------------
www.bubbleburstband.com
Reply

Marsh Posté le 10-09-2013 à 01:13:33    

Bonjour, pour obtenir une liste ordonnée des résultat il faut le trieréventuellement et pour faire ceci il semble que tu puisse regarder le mot clé ORDER.

Reply

Marsh Posté le 10-09-2013 à 23:28:53    

Bonjour et déjà merci pour cette première réponse, même si elle ne m'aide pas vraiment.
J'ai essayé de réfléchir aux ORDER BY / GROUP BY etc...
 
Finalement je viens de faire différemment mais je rencontre un probleme. Ma page génère de nombreuses requetes sql, ce qui actuellement fait ramer mon serveur mutualisé dès que j'essaie d'actualiser ma page.
 
Est ce que quelqu'un pourrait me dire si j'ai fait une erreur (boucle infinie ?) ou bien comment optimiser mon code de manière a alléger la charge serveur ?
 

Code :
  1. $tab_h = 10; // je définis l'heure de départ
  2. print('<table bgcolor="#fff">');
  3. while ($tab_h < 20)
  4. {
  5. print('
  6. <tr>
  7. <td align="center" valign="middle" bgcolor="#CCCCCC">'.$tab_h.' h</td>
  8. ');
  9. // quels users dans cette plage horaire ?
  10. $req = mysql_query('SELECT id_user, COUNT(id) AS nb FROM KFWod_calendrier WHERE heure="'.$tab_h.'" AND jour="'.$jour.'" AND mois="'.$mois.'" AND annee="'.$annee.'" ');
  11. $req2 = mysql_fetch_array($req);
  12. $nb = $req2['nb'];
  13. $nbdiff = 12 - $nb;
  14. if ($nb >= 12)
  15. {
  16.  $affich_reserver = "# COMPLET #";
  17.  $bgcolor = "#333333";
  18. }
  19. elseif ($nb > 9 && $nb < 12)
  20. {
  21.  $affich_reserver = "<a href=\"#\" class=\"cellule_dark\">Réserver ($nbdiff dispo)</a>";
  22.  $bgcolor = "#FF5353";
  23. }
  24. elseif ($nb > 6 && $nb <= 9)
  25. {
  26.  $affich_reserver = "<a href=\"#\" class=\"cellule_dark\">Réserver ($nbdiff dispo)</a>";
  27.  $bgcolor = "#EBE78B";
  28. }
  29. else
  30. {
  31.  $affich_reserver = "<a href=\"#\" class=\"cellule_dark\">Réserver ($nbdiff dispo)</a>";
  32.  $bgcolor = "#B5E8C9";
  33. }
  34. print('
  35. <td align="center" bgcolor="'.$bgcolor.'">'.$affich_reserver.'</td>
  36. <td bgcolor="#F8F8F8">
  37. ');
  38. while ($req3 = mysql_fetch_array($req))
  39. {
  40.  $id_user = $req3['id_user'];
  41.  $req_avatar = mysql_query('SELECT pseudo, avatar FROM KFWod_users WHERE id_user="'.$id_user.'" ');
  42.  $req2_avatar = mysql_fetch_array($req_avatar);
  43.  $pseudo = $req2_avatar['pseudo'];
  44.  $pseudo_majuscule = ucfirst($pseudo);
  45.  $avatar = $req2_avatar['avatar'];
  46.  if ($avatar != "defaut.jpg" )
  47.  {
  48.   $avatar = $id_user."_".$avatar;
  49.  }
  50.  else
  51.  {
  52.   $avatar = "defaut.jpg";
  53.  }
  54.  if (!$_SESSION['id_user'])
  55.  {
  56.   $avatar_affich = "";
  57.  }
  58.  else
  59.  {
  60.   $avatar_affich = "<a href=\"profile.php?id_user=$id_user_h\" class=\"info\"><img src=\"_img/avatars/$avatar\" width=\"30px\" align=\"absmiddle\" border=\"0\"><span>$pseudo_majuscule</span></a> ";
  61.  }
  62.   echo "$avatar_affich";
  63. $tab_h = ($tab_h+0.5);
  64. }
  65. print('
  66. </td>
  67. </tr>
  68. ');
  69. }
  70. print('</table>');


---------------
www.bubbleburstband.com
Reply

Marsh Posté le 24-09-2013 à 15:26:44    

Bon, malgré le manque d'enthousiasme concernant mon problème je l'ai résolu, même si c'est en feintant un peu au niveau du code.
Je posterai le résultat ici ce soir pour montrer ce que j'ai fait et si jamais quelqu'un veut l'améliorer ou m'indiquer comment faire ce sera avec plaisir!
 
Merci quand même ! ;)


---------------
www.bubbleburstband.com
Reply

Marsh Posté le 24-09-2013 à 22:30:20    

Code :
  1. $tab_h = 10; // je définis l'heure de départ
  2. // Affichage de la date choisie
  3. $date_affich = strftime('%A %d %B %Y',strtotime("$jour-$mois-$annee" ));
  4. $date_affich = utf8_encode($date_affich);
  5. $date_affich = ucfirst($date_affich); // jeudi 11 octobre 2012, 16:03
  6. print('
  7. <div class="archives_titre"><p align="center">'.$date_affich.'</p></div>
  8. <br />
  9. ');
  10. print('
  11. <table align="center" width="95%" border="0" cellpadding="4" cellspacing="1">
  12. <tr>
  13. <td width="40px" align="center" valign="middle" bgcolor="#999999" >Horaire</td>
  14. <td width="100px" align="center" bgcolor="#999999">Réserver</td>
  15. <td bgcolor="#999999">Adhérents déjà inscrits</td>
  16. ');
  17. if ($_SESSION['rank'] >= 8)
  18. {
  19. print('
  20. <td width="70px" align="center" bgcolor="#999999">Actions</td>
  21. ');
  22. }
  23. print('
  24. </tr>
  25. ');
  26. while ($tab_h < 20)
  27. {
  28. $day = explode(" ",$date_affich);
  29. $day = $day['0'];
  30. //si on est du lundi au jeudi
  31. if (($day == "Lundi" ) || ($day == "Mardi" ) || ($day == "Mercredi" ) || ($day == "Jeudi" ))
  32. {
  33.  if ($tab_h == 13)
  34.  {
  35.   $tab_h = $tab_h + 1;
  36.   continue;
  37.  }
  38. }
  39. //si on est samedi
  40. if (($day == "Samedi" ))
  41. {
  42.  if ($tab_h == 13)
  43.  {
  44.   $tab_h = $tab_h + 1;
  45.   continue;
  46.  }
  47.  elseif ($tab_h > 14)
  48.  {
  49.   break;
  50.  }
  51. }
  52. //si on est dimanche
  53. if (($day == "Dimanche" ))
  54. {
  55.  break;
  56. }
  57. $tab_h_affich = "$tab_h";
  58. $tab_h_affich30 = "";
  59. $cellule = "cellule";
  60. print('
  61. <tr>
  62. ');
  63. // combien d'users dans cette plage horaire ? et suis-je déja inscrit ?
  64. $req = mysql_query('SELECT COUNT(id) AS nb FROM KFWod_calendrier WHERE heure="'.$tab_h.'" AND jour="'.$jour.'" AND mois="'.$mois.'" AND annee="'.$annee.'" ');
  65. $req2 = mysql_fetch_array($req);
  66. // suis je deja inscrit ?
  67. $req_check = mysql_query('SELECT id_user FROM KFWod_calendrier WHERE heure="'.$tab_h.'" AND jour="'.$jour.'" AND mois="'.$mois.'" AND annee="'.$annee.'" AND id_user="'.$_SESSION['id_user'].'" ');
  68. if(mysql_num_rows($req_check) != 0)
  69. {
  70.  // deja inscrit
  71.  $status = "uncheck";
  72.  $lien = "cal_desinscrire";
  73. }
  74. else
  75. {
  76.  $status = "check";
  77.  $lien = "cal_inscrire";
  78. }
  79. $nb = $req2['nb'];
  80. $nbdiff = 12 - $nb;
  81. if ($nb >= 12)
  82. {
  83.  $affich_reserver = "<a href=\"$lien.php?jour=$jour&mois=$mois&annee=$annee&heure=$tab_h\" class=\"petit\"><img src=\"_img/$status.png\" border=\"0\" height=\"23\" /></a><br /><span class=\"petit\">COMPLET</span>";;
  84.  $class = "resa_rouge";
  85. }
  86. elseif ($nb > 9 && $nb < 12)
  87. {
  88.  $affich_reserver = "<a href=\"$lien.php?jour=$jour&mois=$mois&annee=$annee&heure=$tab_h\" class=\"petit\"><img src=\"_img/$status.png\" border=\"0\" height=\"23\" /></a><br /><span class=\"petit\">($nbdiff places)</span>";
  89.  $class = "resa_orange";
  90. }
  91. elseif ($nb > 6 && $nb <= 9)
  92. {
  93.  $affich_reserver = "<a href=\"$lien.php?jour=$jour&mois=$mois&annee=$annee&heure=$tab_h\" class=\"petit\"><img src=\"_img/$status.png\" border=\"0\" height=\"23\" /></a><br /><span class=\"petit\">($nbdiff places)</span>";
  94.  $class = "resa_jaune";
  95. }
  96. else
  97. {
  98.  $affich_reserver = "<a href=\"$lien.php?jour=$jour&mois=$mois&annee=$annee&heure=$tab_h\" class=\"petit\"><img src=\"_img/$status.png\" border=\"0\" height=\"23\" /></a><br /><span class=\"petit\">($nbdiff places)</span>";
  99.  $class = "resa_vert";
  100. }
  101. print('
  102. <td width="40px" align="center" valign="middle" class="'.$class.' '.$cellule.'">'.$tab_h_affich.'h'.$tab_h_affich30.'</td>
  103. <td width="100px" align="center" class="'.$class.'">'.$affich_reserver.'</td>
  104. <td bgcolor="#F8F8F8">
  105. ');
  106. $requete = mysql_query('SELECT id_user FROM KFWod_calendrier WHERE heure="'.$tab_h.'" AND jour="'.$jour.'" AND mois="'.$mois.'" AND annee="'.$annee.'" ');
  107. while ($req3 = mysql_fetch_array($requete))
  108. {
  109.  $id_user = $req3['id_user'];
  110.  $req_avatar = mysql_query('SELECT pseudo, nom, prenom, avatar FROM KFWod_users WHERE id_user="'.$id_user.'" ');
  111.  $req2_avatar = mysql_fetch_array($req_avatar);
  112.  $nom = $req2_avatar['nom'];
  113.  $prenom = $req2_avatar['prenom'];
  114.  $pseudo = $req2_avatar['pseudo'];
  115.  $pseudo_majuscule = ucfirst($pseudo);
  116.  $pseudo_majuscule = utf8_encode($pseudo_majuscule);
  117.  $avatar = $req2_avatar['avatar'];
  118.  if ($avatar != "defaut.jpg" )
  119.  {
  120.   $avatar = $id_user."_".$avatar;
  121.  }
  122.  else
  123.  {
  124.   $avatar = "defaut.jpg";
  125.  }
  126.  if (!$_SESSION['id_user'])
  127.  {
  128.   $avatar_affich = "";
  129.  }
  130.  else
  131.  {
  132.   if ($_SESSION['rank'] >= 8)
  133.   {
  134.    $avatar_affich = "<a href=\"profile.php?id_user=$id_user\" class=\"info2\"><img src=\"_img/avatars/$avatar\" width=\"30px\" align=\"absmiddle\" border=\"0\"><span>$pseudo_majuscule - $nom $prenom</span></a> ";
  135.   }
  136.   else
  137.   {
  138.    $avatar_affich = "<a href=\"profile.php?id_user=$id_user\" class=\"info\"><img src=\"_img/avatars/$avatar\" width=\"30px\" align=\"absmiddle\" border=\"0\"><span>$pseudo_majuscule</span></a> ";
  139.   }
  140.  }
  141.  echo "$avatar_affich";
  142. }
  143. print('
  144. </td>
  145. ');
  146. // si admin : afficher boutons
  147. if ($_SESSION['rank'] >= 8)
  148. {
  149.  print('
  150.  <td>
  151.  <a href="ajout_resa.php?jour='.$jour.'&mois='.$mois.'&annee='.$annee.'&heure='.$tab_h.'" class="info2">
  152.  <img src="_img/add_th.png" width="20" height="20" border="0" alt="Ajouter réservation" />
  153.  <span>Ajouter une réservation</span>
  154.  </a>
  155.  <a href="edit_resa.php?jour='.$jour.'&mois='.$mois.'&annee='.$annee.'&heure='.$tab_h.'" class="info2">
  156.  <img src="_img/edit_th.png" width="20" height="20" border="0" alt="Editer réservation"/>
  157.  <span>Editer les réservations</span>
  158.  </a>
  159.  <a href="#" class="info2">
  160.  <img src="_img/del_th.png" width="20" height="20" border="0" title="Supprimer réservation"/>
  161.  <span>Supprimer toutes les réservations sur ce créneau</span>
  162.  </a>
  163.  </td>
  164.     ');
  165. }
  166. print('
  167. </tr>
  168. ');
  169. $tab_h = $tab_h + 1;
  170. }
  171. mysql_close();
  172. print('</table>');


---------------
www.bubbleburstband.com
Reply

Sujets relatifs:

Leave a Replay

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