Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] System bukowania PROBLEM
Forum PHP.pl > Forum > Przedszkole
Spyder
Witam mam taki kod

  1. <?
  2.  
  3. $current_month = date("m");
  4. $select = mysql_query("SELECT * FROM calendar WHERE room = 1 AND MONTH(STR_TO_DATE(date_from, '%d/%m/%Y')) = ".$current_month." ORDER BY STR_TO_DATE(date_from, '%d/%m/%Y')");
  5. while($AFR = mysql_fetch_array($select)){
  6.  
  7.  
  8. $from_day = substr($AFR['date_from'], 0, 2);
  9. $from_month = substr($AFR['date_from'], 3, 2);
  10. $from_year = substr($AFR['date_from'], 6, 4);
  11.  
  12. $to_day = substr($AFR['date_to'], 0, 2);
  13. $to_month = substr($AFR['date_to'], 3, 2);
  14. $to_year = substr($AFR['date_to'], 6, 4);
  15.  
  16. echo $from_day." - ".$to_day."<br/>";
  17.  
  18. $from_day = ($from_day*10)/10;
  19.  
  20. while ( $from_day <= $to_day ) { echo $from_day."<br/>"; $from_day++; }
  21.  
  22. $base_yr = date("Y"); 
  23. $base_mon = date("m");
  24. $base_day = date("d");
  25. $month = date('F');
  26.  
  27. $ilosc_dni_w_miesiacu= date ("t",mktime (0,0,0,$base_mon,$base_day,$base_yr)); 
  28. echo $month." - ".$ilosc_dni_w_miesiacu." days<br/>";
  29.  
  30. $i = 1;
  31. $tr = 0;
  32. echo '<table cellspacing="5" style="margin-top:5px;" width="100"><tr>';
  33.  
  34. while ( $i <= $ilosc_dni_w_miesiacu )
  35. {
  36. if ($tr == 7)
  37. {
  38.  echo '</tr>';
  39.  $tr = 0;
  40. }
  41.  if ($tr == 0)
  42. echo '<tr>';
  43. $tr++;
  44.  
  45.  
  46. if ( $from_day == $i ) echo "<td bgcolor='#FF0000'>".$i."</td>";
  47. if ( $from_day != $i ) echo "<td bgcolor='#ffffff'>".$i."</td>";
  48. $i++;
  49. }
  50.  
  51. if ($tr != 0)
  52. echo '</tr>';
  53. echo '</table>';
  54. }
  55. ?>


Kod pobiera date od/do z tabeli w formacie 12/02/2008 i 24/02/2008 rysuje dni obecnego miesiaca oraz w zamysle mial podswietlac na inny kolor dni w ktorych pokoj jest zabukowany.

odpowiedziale za to w jakich dniach od/do pokoj jest zabukowany jest ta petla:

  1. <?php
  2. while ( $from_day <= $to_day ) { echo $from_day."<br/>"; $from_day++; }
  3. ?>


i wyswiela ona poprawnie dni obliczone z daty od/do. Petla nr 2 rysuje dni obecnego miesiaca. Problem jest taki ze te petle dzialaja niezaleznie i nie wiem jak zrobic kiedy dzien miesiaca bedzie rowny dniu z petli 1 kolor podswietlenia zostanie zmieniony. Tu jest zamysl ktory nie dziala:

  1. <?php
  2. if ( $from_day == $i ) echo "<td bgcolor='#FF0000'>".$i."</td>";
  3. if ( $from_day != $i ) echo "<td bgcolor='#ffffff'>".$i."</td>";
  4. ?>
nowotny
Spróbuj coś takiego:
  1. <?php
  2. if ($i>=$from_day && $i<=$to_day) echo "<td bgcolor='#FF0000'>".$i."</td>";
  3. else echo "<td bgcolor='#ffffff'>".$i."</td>";
  4. ?>
Spyder
nie dziala, przy moim zapisie podswietlalo piatka z dziwnego powodu a dni zabukowane byly 2,3,4

przy twoim nic nie podswietla

ale poza tym musi byc w druga strone czyli podswietlac dni zabukowane bo dat moze byc kilka nie jedna.
nowotny
Aaaa... no tak... przed pętlę:
  1. <?php
  2. while ( $from_day <= $to_day ) { echo $from_day."<br/>"; $from_day++; }
  3. ?>

wstaw sobie
  1. <?php
  2. $from=$from_day;
  3. ?>

I w tym co ci napisałem wsześniej zamień sobie "$from_day" na "$from"...
Spyder
dziala smile.gif tylko nie wiem jak bedzie z kilkoma datami nie mam dostepu do bazy teraz bo wiesz jak petla wykona sie raz podswietli mi dla daty 12/02/2008 do 15/02/2005
liczby 12 13 14 15 to jak bedzie juz 2 data na tym samym kalendarzu np 18/02/2008 do 24/02/2008 to to stare zostanie zmienione na biale znowu questionmark.gifquestionmark.gif

Wiec napotkalem problem poniewaz jak jest jedna data w mies jest wszystko ok ale jak juz sa 2 to kalendarz wyswietla sie 2x. Pewnie mozna to zrobic zapisaniem wynikow do tablisy i odczytaniem ich ale nie wiem jak sie za to zabrac...
  1. <?
  2. require_once "db.php";
  3. $current_month = date("m");
  4. $select = mysql_query("SELECT * FROM calendar WHERE car = 1 AND MONTH(STR_TO_DATE(date_from, '%d/%m/%Y')) = ".$current_month." ORDER BY STR_TO_DATE(date_from, '%d/%m/%Y')");
  5.  
  6. while($AFR = mysql_fetch_array($select)){
  7.  
  8.  
  9. $from_day = substr($AFR['date_from'], 0, 2);
  10. $from_month = substr($AFR['date_from'], 3, 2);
  11. $from_year = substr($AFR['date_from'], 6, 4);
  12.  
  13. $to_day = substr($AFR['date_to'], 0, 2);
  14. $to_month = substr($AFR['date_to'], 3, 2);
  15. $to_year = substr($AFR['date_to'], 6, 4);
  16.  
  17.  
  18. echo $AFR['date_from']." - ".$AFR['date_to']."<br/>";
  19. $from_day = ($from_day*10)/10;
  20. $from=$from_day;
  21.  
  22. while ( $from_day <= $to_day ) { echo $from_day; $from_day++; }
  23.  
  24.  
  25. $base_yr = date("Y"); 
  26. $base_mon = date("m");
  27. $base_day = date("d");
  28. $month = date('F');
  29.  
  30. $ilosc_dni_w_miesiacu= date ("t",mktime (0,0,0,$base_mon,$base_day,$base_yr)); 
  31. echo "<br/>".$month." - ".$ilosc_dni_w_miesiacu." days<br/>";
  32.  
  33. $i = 1;
  34. $tr = 0;
  35. echo '<table cellspacing="5" style="margin-top:5px;" width="100"><tr>';
  36.  
  37. while ( $i <= $ilosc_dni_w_miesiacu )
  38. {
  39. if ($tr == 7)
  40. {
  41.  echo '</tr>';
  42.  $tr = 0;
  43. }
  44.  if ($tr == 0)
  45. echo '<tr>';
  46. $tr++;
  47.  
  48. if ($i>=$from && $i<=$to_day) echo "<td bgcolor='#FF0000'>".$i."</td>";
  49. else echo "<td bgcolor='#ffffff'>".$i."</td>";
  50. $i++;
  51. }
  52.  
  53. if ($tr != 0)
  54. echo '</tr>';
  55. echo '</table>';
  56. }
  57. ?>
nowotny
Pokaż jeszcze strukturę i zawartość tabeli...
Spyder
`calendar` (
`id` int(5) NOT NULL auto_increment,
`car` varchar(50) NOT NULL,
`date_from` varchar(50) NOT NULL,
`date_to` varchar(50) NOT NULL,
`name` varchar(100) NOT NULL,
`surname` varchar(100) NOT NULL,
`address` varchar(300) NOT NULL,
`city` varchar(100) NOT NULL,
`country` varchar(100) NOT NULL,
`postcode` varchar(10) NOT NULL,
`phone` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
nowotny
Coś takiego mi wyszło:
  1. <?php
  2. $current_month = date("m");
  3. $select = mysql_query("SELECT * FROM calendar WHERE car = 1 AND MONTH(STR_TO_DATE(date_from, '%d/%m/%Y')) = ".$current_month." ORDER BY STR_TO_DATE(date_from, '%d/%m/%Y')");
  4. $dates=array();
  5. while($AFR = mysql_fetch_array($select)){
  6. $from_day = substr($AFR['date_from'], 0, 2);
  7. $to_day = substr($AFR['date_to'], 0, 2);
  8. for($i=$from_day;$i<=$to_day;$i++){
  9. if(!in_array($i,$dates)) $dates[]=$i;
  10. }
  11. }
  12.  
  13. $ilosc_dni_w_miesiacu= date ("t",mktime (0,0,0,date("m"),date("d"),date("Y"))); 
  14. echo "<br/>".date('F')." - ".$ilosc_dni_w_miesiacu." days<br/>";
  15.  
  16. $tr = 0;
  17. echo '<table cellspacing="5" style="margin-top:5px;" width="100"><tr>';
  18.  
  19. for($i=1; $i <= $ilosc_dni_w_miesiacu;$i++ ){
  20. if ($tr == 7){
  21. echo '</tr>';
  22. $tr = 0;
  23. }
  24. if ($tr == 0) echo '<tr>';
  25. $tr++;
  26.  
  27.  
  28. if (in_array($i,$dates)) echo "<td bgcolor='#FF0000'>".$i."</td>";
  29. else echo "<td bgcolor='#ffffff'>".$i."</td>";
  30.  
  31. }
  32.  
  33. if ($tr != 0)
  34. echo '</tr>';
  35. echo '</table>';
  36. ?>
Spyder
A sprawdziles moze bo mi nic nie wyswietla tzn czysty kalendarz questionmark.gif?
nowotny
Sprawdziłem... u mnie działa... przed "$ilosc_dni_w_miesiacu=..." wstaw sobie:
  1. <?php
  2. print_r($dates);
  3. ?>
i pokaż co wyświetla...
Spyder
Oki dziala smile.gif)))) Jestes wielki smile.gif Musze podszkolic sobie dzialania na tablicach bo nie kumam do konca Dzieki wielkie Pozdro exclamation.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.