czesc,

nie zabardzo wychodzi mi warunek przy petli ktory mialby wypelniac tabele pustymi td w razie gdyby record byl znaleziony. A wiec:

  1.  
  2. public function tableRow() {
  3.  
  4.  
  5. $reservations = new Application_Model_DbTable_Booking;
  6. $calendar = $reservations->fetchDate();
  7. $toCompare=[];
  8.  
  9. $times = $reservations->fetchTime();
  10.  
  11. foreach($calendar as $date){
  12.  
  13.  
  14. foreach($times as $time){
  15. $toCompare[] = $date->date_reservation.$time->time;
  16. }
  17. }
  18.  
  19.  
  20. for ($i = 1; $i <= 8; $i++) {
  21. echo "<tr></tr>";
  22.  
  23. for ($j = 0; $j <= 7; $j++) {
  24.  
  25. if ($j == 0) {
  26. echo '<td width="30px" style="background: #c0c0c0;">' . $this->giveTime(9 + $i - 1) . '</br></td>';
  27.  
  28.  
  29. }
  30.  
  31. elseif(in_array($test[]=$this->reservationDay($j, '+').$this->giveTime(9+$i -1), $toCompare)){
  32. echo '<td width="25px" style="background: #c0c0c0;">X</td>';
  33.  
  34. } else {
  35.  
  36. echo '<td><input type="checkbox" name="Reservation[' . $this->giveTime(9+$i -1) . '][' . $this->reservationDay($j, '+') . ']" value="1"></br></td>' . "\n";
  37. }
  38. }
  39.  
  40.  
  41. }
  42. }
  43.  


Ktora daje mi taka ladna tablice [to tylko kawalek]
  1. 2016-03-07<td><input type="checkbox" name="Reservation[10:00:00][2016-03-08]" value="1"></br></td>
  2. 2016-03-08<td><input type="checkbox" name="Reservation[10:00:00][2016-03-09]" value="1"></br></td>
  3. 2016-03-09<td><input type="checkbox" name="Reservation[10:00:00][2016-03-10]" value="1"></br></td>
  4. 2016-03-10<td><input type="checkbox" name="Reservation[10:00:00][2016-03-11]" value="1"></br></td>
  5. 2016-03-11<td><input type="checkbox" name="Reservation[10:00:00][2016-03-12]" value="1"></br></td>
  6. 2016-03-12<td><input type="checkbox" name="Reservation[10:00:00][2016-03-13]" value="1"></br></td>



Zalozmy, ze mam po jednej rezerwacji w dniu 8.03 i 09.03 a ten waruenk pokazuje, ze mam po 3 z kazdego dnia i o tej samej godzinie. Why?





PS. Rozwiazac problem moge latwo przez dodanie odpowiedniego Value i wtedy wrzucic to do db, fetch i porownac. powinno wyjsc. Zastanawia mnie co jest nie tak, ze dostaje zle wyniki w obecnej konfiguracji.
PS2. Zeby nie bylo, probowalem rozne wariacje przy tablicach ktore porownuje np. $test[$this->reservationDay($j, '+')]=$this->giveTime(9+$i -1); i odpowiednie dla $toCompare . To samo..

Wiem co program robi nie tak ale nie wiem jak to zmienic.

Taka oto sobie zrobilem array z bazy danych z datami i godz

Array ( [0] => 2016-03-07 [1] => 2016-03-08 ) Array ( [0] => 11:00:00 [1] => 13:00:00 )

do tego funckja ktora porownuje

  1. elseif(in_array($this->giveTime(9+$i -1), $t) && in_array($this->reservationDay($j, '+'), $dato))
  2.  
  3.  
  4. {
  5. $this->html.='<td><input type="text" name="Reservation[' . $this->giveTime(9+$i -1) . '][' . $this->reservationDay($j, '+') . ']" value="'.($counter +1).'disabled "></br></td>' . "\n";
  6.  
  7.  
  8. }
  9. else {
  10. $this->html.='<td><input type="checkbox" name="Reservation[' . $this->giveTime(9+$i -1) . '][' . $this->reservationDay($j, '+') . ']" value="'.($counter +1).'"></br></td>' . "\n";
  11. }
  12. }
  13.  


Za kazdym razem jak znajdzie match to przestawia <td>. Chodzi o to, ze on znajduje match w dniu 2016-03-08 i do tego wszystkie godziny podane. Wiec robi mi rezerwacje z godziny ktora powinna byc w dniu poprzednim (07.03) i vice versa. Niestety, czas mi sie skonczyl dzisiaj na programowanko, gdyby ktos cos jakos porade to chetnie skorzystam.

Thx

Dobra, rozwiazalem.

Maly zmiana przy pobieraniu danych tak, zeby pobieral dzien i godzinie. Nastepnie lacze je jako string i wrzucam do tablicy $nt. Tak wiec wychodzi mi
  1. Array ( [0] => 2016-03-0711:00:00 [1] => 2016-03-0813:00:00
itd.

Nastepnie wrzucam to do in_array i smiga.

  1. elseif (in_array($this->reservationDay($j, '+') . $this->giveTime(9 + $i - 1), $nt)) {
  2.  
  3. $this->html.= '<td width="25px" style="background: #c0c0c0;">X</td>' . "\n";
  4. } else