Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]System wybierania terminów ?
Forum PHP.pl > Forum > Przedszkole
matejbos
Witam. Bardzo bym prosił w tym temacie o naprowadzenie, niż o poprawianie kodu(kod jest pisany na szybko, oraz jest to dopiero szkic kodu wlasciwego). Generalnie mamy tabele w której generowane sa godziny oraz data. Tabela automatycznie zmienia się danego dnia oraz co godzinę odejmując dni i godziny danego miesiąca. Wszystko fajnie działa, zapisuję do bazy termin, teraz chciałbym z bazy odczytać dane i (zablokować, usunąć, zmienić kolor danego przycisku(obojętnie) aby ponownie nie można było wybrać tego samego terminu. Ogólnie koncepcja jest taka, może ktoś ma lepszy pomysł na działanie takiego systemu. Pozdrawiam.



  1. <!DOCTYPE html>
  2. <body>
  3.  
  4.  
  5. <form action="#" method="POST">
  6. <table border="1" >
  7. <tr>
  8. <th></th>
  9.  
  10. <?php
  11. $pdo = new PDO('mysql:host=localhost;dbname=baza', 'm', 'm');
  12. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  13.  
  14.  
  15. $t = date("t");
  16. $akt_d = date("j");
  17. $akt_g = date("H");
  18. $akt_m = date("m");
  19. //echo time().'<br>';
  20. //echo(date("H",time()));
  21.  
  22. for ($i = $akt_d; $i <= $t; $i++) {
  23. echo '<th>'.$i.'.'.$akt_m.'</th>';
  24. }
  25. ?>
  26. </tr>
  27.  
  28. <?php
  29.  
  30. for ($i = $akt_g; $i <= 18; $i++) {
  31. echo '<tr>';
  32. echo '<th>'.$i.'.00'.'</th>';
  33. for ($j = $akt_d; $j <= $t; $j++) {
  34. echo '<td>';
  35. echo '<input type="hidden" value="'.$i.$j.'">
  36. <input type="submit" name="wybierz" value="'.$i.$j.'">';
  37. echo '</td>';
  38. }
  39. echo '</tr>';
  40. }
  41.  
  42. ?>
  43. </form>
  44. <?php
  45.  
  46.  
  47. if(isset($_POST['wybierz'])){
  48.  
  49. $godzina = substr($_POST['wybierz'], 0, 2);
  50. echo $ready_godzina= $godzina.':'.'00'.':'.'00'.'<br>';
  51. $data = substr($_POST['wybierz'], 2, 4);
  52. echo $ready_data = date("Y").'-'.$akt_m.'-'.$data.'<br>';
  53.  
  54. $stmt = $pdo-> prepare('INSERT INTO `pacjenci` (data, godzina) VALUES(:data, :godzina)');
  55.  
  56. $stmt -> bindValue(':data', $ready_data, PDO::PARAM_STR);
  57. $stmt -> bindValue(':godzina', $ready_godzina, PDO::PARAM_STR);
  58.  
  59. $stmt -> execute();
  60.  
  61. }
  62.  
  63. ?>
  64. <?php
  65.  
  66.  
  67.  
  68. $tab = array();
  69. $stmt = $pdo -> query("SELECT data, godzina FROM pacjenci");
  70. while($l = $stmt -> fetch())
  71. {
  72. $tab[1] = $l['data'];
  73. $tab[2] = $l['godzina'];
  74. $godzina = substr($tab[2], 0, 2);
  75. $data = substr($tab[1], 8, 10);
  76. echo $tab[3] = $godzina.$data.'<br>';
  77. }
  78.  
  79. return $tab;
  80.  
  81.  
  82. ?>
  83.  
  84. </body>
  85. </html>
bostaf
To co pokazałeś to nie koncepcja, tylko implementacja. A mógłbyś omówić koncepcję tak, żeby nie trzeba się było przebijać przez te kolorowe mróweczki i zgadywać, czy kod robi to co powinien robić? Nie wiadomo nawet, czy kod działa tak jak zaplanowałeś. Wiesz, opisz słowami algorytm - będzie wiadomo co miałeś na myśli i czy to dobre podejście czy nie.

PS. Duży plus za PDO.
pmir13
Przede wszystkim dane z bazy trzeba pobrać zanim wygenerujesz tabelkę html w tej podwójnej pętli for.
Na podstawie tych danych do komórki wpisujesz lub nie formularz/przycisk z godziną rezerwacji (lub też blokujesz go w jakikolwiek wybrany sposócool.gif.
Swoją drogą dlaczego liczysz tylko od bieżącej godziny? Jeśli dziś jest prawie koniec dnia to jutro na wcześniejsze godziny nie da rady zarezerwować...
Polecałbym również założenie dni do tygodnia naprzód, a do tego dodatkowa linijka z ręcznie wprowadzaną datą (lub przy pomocy kalendarza) pobierająca dostępne godziny po wybraniu dnia (ajax+jquery), bo może się zdarzyć, że ktoś sobie zażyczy rezerwację na przykład za rok.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.