Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+mysql] Umieszczenie rekordow z bazy w kalendarzu
Forum PHP.pl > Forum > Przedszkole
wcg
Witam. Mam taki problem. Mam bazę danych w niej rekordy zawierające numer rezerwacji, datę przyjazdu, datę wyjazdu, oraz nr pokoi od 1 do 7. Potrzebuje zrobić cos takiego jak grafik (na wzór exela - kolumny to numery pokoi, a wiersze to dni) zeby w odpowiednim dniu i numerze pokoju zaznaczyło numer rezerwacji. Już przy pomocy forum zrobiłem że wyświetla mi daty i teraz nie wiem za bardzo jak umieścić odpowieni numer przy dacie i pokoju. Mam coś takiego
  1. <?
  2. include ('naglowek.html');
  3. include('connect.php');
  4. print "<div id='right'>";
  5. function printdates($start_date, $end_date, $format = '%Y-%m-%d') {
  6. for($i = strtotime($start_date); $i < strtotime($end_date); $i+=86400)
  7. $array[] = strftime($format, $i);
  8. return $array;
  9. }
  10. $edit = @mysql_query("SELECT * FROM dg");
  11. if (!$edit) {
  12. exit ('Problem podczas pobierania listy' . mysgl_error() . '</p>');
  13. }
  14. $edit = mysql_fetch_array($edit);
  15. $id = $edit['id'];
  16. $przyjazd = $edit['przyjazd'];
  17. $wyjazd = $edit['wyjazd'];
  18. $pok1 = $edit['pok1'];
  19. $pok2 = $edit['pok2'];
  20. $pok3 = $edit['pok3'];
  21. $pok4 = $edit['pok4'];
  22. $pok5 = $edit['pok5'];
  23. $pok6 = $edit['pok6'];
  24. $pok7 = $edit['pok7'];
  25. print "<h1>Grafik</h1>";
  26. print "<TABLE class=tab border=0 cellpadding=0 cellspacing=0 width=600 align=left>";
  27. print "<tr><th width=70>data</th>";
  28. print "<th>1</th>";
  29. print "<th>2</th>";
  30. print "<th>3</th>";
  31. print "<th>4</th>";
  32. print "<th>5</th>";
  33. print "<th>6</th>";
  34. print "<th>7</th></tr>";
  35. $dates = printdates('2006-06-01', '2006-08-31');
  36. foreach ($dates as $ad) {
  37. print "<tr><td>$ad</td>";
  38. if ($ad == $przyjazd) {
  39. print "<td>$id</td>";
  40. } else {
  41. print "<td>  </td>";
  42. }
  43. print "<td>  </td>";
  44. print "<td>  </td>";
  45. print "<td>  </td>";
  46. print "<td>  </td>";
  47. print "<td>  </td>";
  48. print "<td>  </td>";
  49. print "</tr>";
  50. }
  51. print "</tr></table>";
  52. print '<br>';
  53. print '</div>';
  54. include ('stopka.html');
  55. ?>

Teraz jak to podpale to pokaże zaznaczoną datę z pierwszego rekordu z bazy, ale co z kolejnymi? Czy mógłby ktoś poradzić jak sie za to zabrać?

Już prawie sobie poradziłem. Wyświetla rekordy ale problem w tym ze grafik jest w tabeli od 01.06.-31.08. i pierwszy rekord dobrze wyświetla, dla następnych tworzy znow od 1.06.-08. kolejne wiersze. Wynik jest taki ze zamiast ok 90 wierszy powstaje 90 X ilość rekordów w bazie;(
Teraz to wygląda tak:

  1. <?
  2. include ('naglowek.html');
  3. include('connect.php');
  4. print "<div id='right'>";
  5. function printdates($start_date, $end_date, $format = '%Y-%m-%d') {
  6. for($i = strtotime($start_date); $i < strtotime($end_date); $i+=86400)
  7. $array[] = strftime($format, $i);
  8. return $array;
  9. }
  10. print "<h1>Grafik</h1>";
  11. print "<TABLE class=tab border=0 cellpadding=0 cellspacing=0 width=600 align=left>";
  12. print "<tr><th width=70>data</th>";
  13. print "<th>1</th>";
  14. print "<th>2</th>";
  15. print "<th>3</th>";
  16. print "<th>4</th>";
  17. print "<th>5</th>";
  18. print "<th>6</th>";
  19. print "<th>7</th></tr>";
  20. $wynik = mysql_query("SELECT * FROM dg");
  21. while ($edit = mysql_fetch_array($wynik)) {
  22. $id = $edit['id'];
  23. $przyjazd = $edit['przyjazd'];
  24. $wyjazd = $edit['wyjazd'];
  25. $pok1 = $edit['pok1'];
  26. $pok2 = $edit['pok2'];
  27. $pok3 = $edit['pok3'];
  28. $pok4 = $edit['pok4'];
  29. $pok5 = $edit['pok5'];
  30. $pok6 = $edit['pok6'];
  31. $pok7 = $edit['pok7'];
  32.  
  33. $dates = printdates('2006-06-01', '2006-08-31');
  34. foreach ($dates as $ad) {
  35. // pok 1
  36. print "<tr><td>$ad</td>";
  37. if ($wyjazd > $ad AND $przyjazd <= $ad AND $pok1==1) {
  38. print "<td>$id</td></td>";
  39. } else {
  40. print "<td>  </td>";
  41. }
  42. // pok 2
  43. if ($wyjazd > $ad AND $przyjazd <= $ad AND $pok2==1) {
  44. print "<td>$id</td>";
  45. } else {
  46. print "<td>  </td>";
  47. }
  48. // pok 3
  49. if ($wyjazd > $ad AND $przyjazd <= $ad AND $pok3==1) {
  50. print "<td>$id</td>";
  51. } else {
  52. print "<td>  </td>";
  53. }
  54. // pok 4
  55. if ($wyjazd > $ad AND $przyjazd <= $ad AND $pok4==1) {
  56. print "<td>$id</td>";
  57. } else {
  58. print "<td>  </td>";
  59. }
  60. // pok 5
  61. if ($wyjazd > $ad AND $przyjazd <= $ad AND $pok5==1) {
  62. print "<td>$id</td>";
  63. } else {
  64. print "<td>  </td>";
  65. }
  66. // pok 6
  67. if ($wyjazd > $ad AND $przyjazd <= $ad AND $pok6==1) {
  68. print "<td>$id</td>";
  69. } else {
  70. print "<td>  </td>";
  71. }
  72. // pok 7
  73. if ($wyjazd > $ad AND $przyjazd <= $ad AND $pok7==1) {
  74. print "<td>$id</td>";
  75. } else {
  76. print "<td>  </td>";
  77. }
  78. }
  79. print "</tr>";
  80. }
  81. print "</table>";
  82. print '<br>';
  83. print '</div>';
  84. include ('stopka.html');
  85. ?>

Może ktoś będzie wiedział jak temu zaradzić?
Fipaj
No niby można kombinować, ale ja bym proponował użycie jakiejś biblioteki do generowania tzw. datagridu. Przejrzyj Google'a.

Osobiście radzę zacząć poznawanie PEAR-owego pakietu: http://datagrid.webitecture.org/ ...
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.