Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kalendarz i rezerwacje
Forum PHP.pl > Forum > PHP
grzes999
Witam
Mam za zadanie napisać skrypt rezerwacji. I musi być kalendarz z zaznaczonymi zajętymi datami.
Rezerwacji można dokonać na kilka dni. W bazie danych mam zapisane od kiedy oraz do kiedy jest rezerwacja i
nie bardzo wiem jak w kalendarzu zaznaczyć dni rezerwacji. Oczywiście chodzi mi o to jak zaznaczyć dni
pomiędzy początkiem; a końcem rezerwacji.
CuteOne
Temat: Data przymusic skrypt do wypisania dni

Przerób pod swoje potrzeby
grzes999
Dzięki wielkie tylko mam mały problem bo gdy rezerwacja jest w jednym miesiącu to wszystko działa jak należy.
Problem się pojawia gdy rezerwacja rozciąga się na dwa miesiące. Chodzi o napisane pętle tylko nie bardzo wiem jak je przerobić a może dodać kolejny warunek.
Mój kod
  1. <?php
  2. require_once("conect.php");
  3. $zapytanie=mysql_query("Select id_zaglowki from zaglowki where nazwa='zaglowka1'")
  4. or die("Błąd zapytania");
  5. $sql=mysql_fetch_assoc($zapytanie);
  6. foreach($sql as $id_zaglowki);
  7. $zapytanie1=mysql_query("Select od,do from rezerwacje where id_zaglowki=$id_zaglowki");
  8. while($daty=mysql_fetch_assoc($zapytanie1))
  9. {
  10. $poczatek_rez=explode("-",$daty['od']);
  11. $koniec_rez=explode("-",$daty['do']);
  12. for($poczatek_rez[2];$poczatek_rez[2]<=$koniec_rez[2];$poczatek_rez[2]++)
  13. {
  14. echo $poczatek_rez[1]."-";
  15. echo $poczatek_rez[2]."<br/>";
  16. }
  17. }
  18. ?>


Na prawdę nikt nie ma pomysłu co poprawić w kodzie żeby działało?
marins
z tego co piszesz - wiesz o jakim miesiacu jest mowa
do SQL w 7 linii dodaj warunek WHERE `od` BETWEEN miesc_start AND miesiac_stop OR `do` BETWEEN miesc_start AND miesiac_stop

ograniczysz w ten sposob liczbe rezerwacji do przemialu.

Cytat
Chodzi o napisane pętle tylko nie bardzo wiem jak je przerobić a może dodać kolejny warunek.


rozwin prosze pytanie - nie do konca rozumiem o co biega.
grzes999
Dzięki za podpowiedź; ale wydaje mi się, że nie porównam tak łatwo daty z formularza z tą zapisaną w bazie.
Rozwiązałem już swój problem tylko nie wiem czy nie za dużo tutaj pętli i może ktoś ma jakiś pomysł na optymalizację tego kodu.

  1. $zapytanie=mysql_query("Select id_zaglowki from zaglowki where nazwa='$nazwa'")
  2. or die("Błąd zapytania");
  3. $sql=mysql_fetch_assoc($zapytanie);
  4. foreach($sql as $id_zaglowki);
  5. $zapytanie1=mysql_query("Select od,do from rezerwacje where id_zaglowki=1");
  6. while($daty=mysql_fetch_assoc($zapytanie1))
  7. {
  8. $poczatek_rez=explode("-",$daty['od']);
  9. $koniec_rez=explode("-",$daty['do']);
  10. for($i=0;$i<count($poczatek_rez[1]);$i++)
  11. {
  12. for($j=0;$j<count($koniec_rez[1]);$j++)
  13. {
  14. if($poczatek_rez[1]==$koniec_rez[1])
  15. {
  16. for($poczatek_rez[2];$poczatek_rez[2]<=$koniec_rez[2];$poczatek_rez[2]++)
  17. {
  18. echo $poczatek_rez[1]."-";
  19. echo $poczatek_rez[2]."<br/>";
  20. }
  21. }
  22. else if($poczatek_rez[1]!=$koniec_rez[1])
  23. {
  24. for($poczatek_rez[2];$poczatek_rez[2]<=31;$poczatek_rez[2]++)
  25. {
  26. echo $poczatek_rez[1]."-";
  27. echo $poczatek_rez[2]."<br/>";
  28. }
  29. for($k=1;$k<=$koniec_rez[2];$k++)
  30. {
  31. echo $koniec_rez[1]."-";
  32. echo $k."<br/>";
  33. }
  34.  
  35. }
  36. }
  37. }
  38. }
marins
czy masz pokazac tylko aktualny miesiac z rezerwacja? czy moze liste wszystkich rezerwacji?

jezeli aktualny miesiac - to mozesz uzyc tylko trzech petli:

1 - do wyjecia wszystkich rezerwacji
2 - petla od 1 do ostatniego dnia
tutaj sprawdzasz czy rezerwacja jest w tym miesiacu i powiedzmy w arrayu z liczba dni zaznaczasz, ze 28,29,30 sa zajete.

3 petla po array z liczba dni - jezeli jest niepusty - czyli jest juz rezerwacja
grzes999
Zapomniałem dodać. Oczywiście muszę pokazać wszystkie rezerwację ten pobrane w tym skrypcie będą zaznaczane w kalendarzu wygenerowanym za pomocą JS; ale z tym raczej już sobie poradzę thumbsupsmileyanim.gif
marins
$rezerwacje = array(
0 => array("title" = "Rezerwacja1", "od" => 1, "do" => 20" ),
1 => array("title" = "Rezerwacja2", "od" => 5, "do" => 8" ),
2 => array("title" = "Rezerwacja3", "od" => 3, "do" => 2" ),
3 => array("title" = "Rezerwacja4", "od" => 5, "do" => 31" ),
);

taka jest moja propozycja - oczywiscie najlepiej jakbys to zrobił obiektowo
grzes999
Cytat(marins @ 11.12.2011, 11:41:02 ) *
$rezerwacje = array(
0 => array("title" = "Rezerwacja1", "od" => 1, "do" => 20" ),
1 => array("title" = "Rezerwacja2", "od" => 5, "do" => 8" ),
2 => array("title" = "Rezerwacja3", "od" => 3, "do" => 2" ),
3 => array("title" = "Rezerwacja4", "od" => 5, "do" => 31" ),
);

taka jest moja propozycja - oczywiscie najlepiej jakbys to zrobił obiektowo


Tak średnio rozumiem w jaki sposób miało by mi to pomóc. Jest mi potrzebne, żeby w pętli wypisywało mi wszystkie dni rezerwacji wraz z miesiącem.
czyli 11.12,12.12,13.12,itd. Chyba, że chodzi o to żeby mieć to wszystko zapisane w jednej tablicy.
marins
potem w js robisz petle `od` `do` i sobie tworzysz dni zarezerwowane po stronie htmla - nie wiem czy potrzebujesz wiecej od strony php - albo nadal nie mogę zrozumięć istoty skryptu
grzes999
No niby nie głupio mówisz będę musiał to trochę przerobić.

Jednak pojawił się problem gdyż nie bardzo wiem jak przekazać tablicę z datami, która jest w php do javascriptu.
CuteOne
JSON

plik dane.php
  1. <script>
  2. var dane = <?php echo json_encode($tablica); ?>;
  3. </script>
grzes999
Cytat(CuteOne @ 12.12.2011, 23:16:33 ) *
JSON

plik dane.php
  1. <script>
  2. var dane = <?php echo json_encode($tablica); ?>;
  3. </script>


Dzięki wielkie thumbsupsmileyanim.gif sam bym się pewnie męczył ze dwa dni i nic bym nie wymyślił wstydnis.gif
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.