czesc,
nie zabardzo wychodzi mi warunek przy petli ktory mialby wypelniac tabele pustymi td w razie gdyby record byl znaleziony. A wiec:
public function tableRow() {
$reservations = new Application_Model_DbTable_Booking;
$calendar = $reservations->fetchDate();
$toCompare=[];
$times = $reservations->fetchTime();
foreach($calendar as $date){
foreach($times as $time){
$toCompare[] = $date->date_reservation.$time->time;
}
}
for ($i = 1; $i <= 8; $i++) {
for ($j = 0; $j <= 7; $j++) {
if ($j == 0) {
echo '<td width="30px" style="background: #c0c0c0;">' . $this->giveTime(9
+ $i - 1) . '</br></td>';
}
elseif(in_array($test[]=$this->reservationDay($j, '+').$this->giveTime(9
+$i -1
), $toCompare)){ echo '<td width="25px" style="background: #c0c0c0;">X</td>';
} else {
echo '<td><input type="checkbox" name="Reservation[' . $this->giveTime(9
+$i -1) . '][' . $this->reservationDay($j, '+') . ']" value="1"></br></td>' . "\n"; }
}
}
}
Ktora daje mi taka ladna tablice [to tylko kawalek]
2016-03-07
<td><input type="checkbox" name="Reservation[10:00:00][2016-03-08]" value="1"></br></td>2016-03-08
<td><input type="checkbox" name="Reservation[10:00:00][2016-03-09]" value="1"></br></td>2016-03-09
<td><input type="checkbox" name="Reservation[10:00:00][2016-03-10]" value="1"></br></td>2016-03-10
<td><input type="checkbox" name="Reservation[10:00:00][2016-03-11]" value="1"></br></td>2016-03-11
<td><input type="checkbox" name="Reservation[10:00:00][2016-03-12]" value="1"></br></td>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
elseif(in_array($this->giveTime(9
+$i -1
), $t) && in_array($this->reservationDay($j, '+'), $dato))
{
$this->html.='<td><input type="text" name="Reservation[' . $this->giveTime(9+$i -1) . '][' . $this->reservationDay($j, '+') . ']" value="'.($counter +1).'disabled "></br></td>' . "\n";
}
else {
$this->html.='<td><input type="checkbox" name="Reservation[' . $this->giveTime(9+$i -1) . '][' . $this->reservationDay($j, '+') . ']" value="'.($counter +1).'"></br></td>' . "\n";
}
}
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
Array ( [0] => 2016-03-0711:00:00 [1] => 2016-03-0813:00:00
itd.
Nastepnie wrzucam to do in_array i smiga.
elseif (in_array($this->reservationDay($j, '+') . $this->giveTime(9
+ $i - 1
), $nt)) {
$this->html.= '<td width="25px" style="background: #c0c0c0;">X</td>' . "\n";
} else
Ten post edytował JakubBab 21.03.2016, 20:56:57