Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z wyswietlaniem
Forum PHP.pl > Forum > Przedszkole
bart1996
Mam metodę getTime w klasie Schedule, która wygląda tak:

CODE
public function getTime($date,$id_empl)
{
$stmt = $this->pdo->prepare('SELECT count(id_schedule) as number,start_time,end_time FROM `schedule` WHERE id_employer=:id_employer AND date=:date');
$stmt->bindParam(':date', $date, PDO::PARAM_STR);
$stmt->bindParam(':id_employer', $id_empl, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

if ($result['number'] == 1) {
$this->session->set(['start_time' => $result['start_time'], 'end_time' => $result['end_time']], true);
} else {
$this->session->set(['start_time' => 0, 'end_time' => 0], true);
}
return null;
}


W bazie w tabeli schedule pole date jest w formacie varchar(10), start_time i end_time to float, a id_employer i id_schedule to int.
Przy wywołaniu tej metody z poprawnymi danymi zawsze wykonuje się else i nadaje start_time i end_time na 0. Nie mam pojęcia czemu, pomocy!
Z góry dziękuję!
trueblue
Sprawdź jakie dane (jakiego typu strukturę) otrzymujesz w wyniku działania fetchAll i co porównujesz w if.
Potem pomyśl czy nie da się zastąpić tej metody inną skoro i tak otrzymujesz rekordy w takiej, a nie innej liczbie.
bart1996
Cytat(trueblue @ 16.12.2017, 17:43:21 ) *
Sprawdź jakie dane (jakiego typu strukturę) otrzymujesz w wyniku działania fetchAll i co porównujesz w if.
Potem pomyśl czy nie da się zastąpić tej metody inną skoro i tak otrzymujesz rekordy w takiej, a nie innej liczbie.

jak jest fetchAll to mam tablicę dwuwymiarową i to jest zle wiec zmienilem na fetch, ale nie wiem co dalej
viking
Po wynikach z bazy musisz jeszcze przeiterować np foreach.
bart1996
Cytat(viking @ 16.12.2017, 18:38:02 ) *
Po wynikach z bazy musisz jeszcze przeiterować np foreach.

Iteruje przy wywołaniu, lecz number jest rowny 0, a start_time i end_time nic nie zwracają.
viking
Z kodu wyżej nie wynikało żebyś to zrobił. var_dump($result) i będziesz wiedział co zawiera.
bart1996
Cytat(viking @ 16.12.2017, 19:14:15 ) *
Z kodu wyżej nie wynikało żebyś to zrobił. var_dump($result) i będziesz wiedział co zawiera.

Po zastosowaniu var_dump: array(3) { ["number"]=> string(1) "0" ["start_time"]=> NULL ["end_time"]=> NULL }
viking
Zatem jak sam widzisz pobrany z bazy number jest 0 dlatego else.
bart1996
Baza wygląda tak:
CODE
$schedule = array(
array('id_schedule' => '1','date' => '12-18-2017','start_time' => '6','end_time' => '9.5','confirmation' => '0','id_employer' => '16'),
array('id_schedule' => '2','date' => '12-19-2017','start_time' => '6','end_time' => '11','confirmation' => '0','id_employer' => '16'),
array('id_schedule' => '3','date' => '12-20-2017','start_time' => '7','end_time' => '10','confirmation' => '0','id_employer' => '16'),
array('id_schedule' => '4','date' => '12-21-2017','start_time' => '6.5','end_time' => '12','confirmation' => '0','id_employer' => '16'),
array('id_schedule' => '5','date' => '12-22-2017','start_time' => '6.5','end_time' => '11','confirmation' => '0','id_employer' => '16')
);

i przy podanych atrybutach $date = 12-18-2017, $id_empl = 16 do metody getTime dalej jest else
viking
Usuń warunki i zobacz co zwróci. Zwłaszcza dla id_employer który ma widać inny typ danych.
bart1996
Cytat(viking @ 17.12.2017, 14:29:23 ) *
Usuń warunki i zobacz co zwróci. Zwłaszcza dla id_employer który ma widać inny typ danych.

Po skasowaniu warunków w select:
CODE
array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" } array(3) { ["number"]=> string(2) "10" ["start_time"]=> string(1) "6" ["end_time"]=> string(3) "9.5" }


Tak wywołuje w innym pliku tą metodę:
CODE
<?php
$_curDay = date("w") - 7;
$_curDate = date("d");
$_curMonth = date("n");

$users = new User($pdo, $session);
$result1 = $users->showUsers();

$schedule = new Schedule($pdo, $session);

$od = array();

if (!isset($_GET['offset'])) $_GET['offset'] = 0;

print("<a href='?page=schedule&amp;offset=" . ($_GET['offset'] - 1) . "'>previous</a> | <a href='?page=schedule&amp;offset=" . ($_GET['offset'] + 1) . "'>next</a></br></br>");

$_offset = $_GET['offset'] * 7;

echo '<table cellspacing="10" cellpadding="10"><tr><th>Employer</th><th>Monday</th><th>Tuesday</th><th>Wednesday</th><th>Thursday</th><th>Friday</th></tr><tr><th></th>';

for ($i = $_curDate - $_curDay + 1 + $_offset, $l = 0; $i < $_curDate + (5 - $_curDay) + 1 + $_offset; $i++, $l++) {
echo '<td>' . $data = date("m-d-Y", mktime(0, 0, 0, $_curMonth, $i, 2017)) . '</td>';
array_push($od, $data);
}
echo '</tr>';

foreach ($result1 as $res1) {
echo '<tr><th>' . $res1['name'] . '</br>' . $res1['surname'] . '</th>';
for($i=0;$i<5;$i++){
$result2 = $schedule->getTime($od[$i], $res1['id_employer']);
echo '<td>' . $session->get('start_time') . '-' . $session->get('end_time') . '</td>';
}
echo '</tr>';
}
}




nerdsmiley.png nerdsmiley.png nerdsmiley.png nerdsmiley.png nerdsmiley.png nerdsmiley.png
Serio nikt nie wie w czym problem? Może zaproponowałby ktoś jakieś inne rozwiązanie wyświetlenia tego start_time i end_time dla kazdego uzytkowanika?
viking
Jakim cudem masz w tym zrzucie liczby typu 9.5 skoro tam według Ciebie jest data?
bart1996
Cytat(viking @ 17.12.2017, 18:44:27 ) *
Jakim cudem masz w tym zrzucie liczby typu 9.5 skoro tam według Ciebie jest data?

Nie rozumiem za bardzo o co chodzi. start_time i end_time to są dane typu float, które oznaczają dla mnie godziny np. 9.5 to godzina 9:30.

Np. dla date=12-25-2017 i id_employer=16, powinno być odpowiednio number=1,start_time=5,end_time=11. A jest
CODE
12-25-2017 16 array(3) { ["number"]=> string(1) "0" ["start_time"]=> NULL ["end_time"]=> NULL }
viking
Sprawdziłeś te zapytania bez warunków? Skoro nic nie zwraca to znaczy że warunek nie jest spełniony.
bart1996
Cytat(viking @ 18.12.2017, 08:05:57 ) *
Sprawdziłeś te zapytania bez warunków? Skoro nic nie zwraca to znaczy że warunek nie jest spełniony.

Tak tylko dlaczego nie jest spełniony jak wyżej pokazałem wszystko w bazie się zgadza, jak inaczej napisać to zapytanie? Na początku myślałem, że może chodzi o maskowanie apostrofów, ale też nie działa chyba, że źle to robię.
nospor
Cytat
y jak wyżej pokazałem wszystko w bazie się zgadza

Ke?
Toz warunek robisz w php $result['number'] == 1
a z wydruku z bazy widac ze kazdy number to 10
Od kiedy 10 = 1?

przenosze
Toshikatsu
Cytat(bart1996 @ 16.12.2017, 16:56:45 ) *
W bazie w tabeli schedule pole date jest w formacie varchar(10), start_time i end_time to float


Pytanie główne jak dla mnie to: dlaczego? blink.gif
bart1996
Cytat(nospor @ 18.12.2017, 10:42:01 ) *
Ke?
Toz warunek robisz w php $result['number'] == 1
a z wydruku z bazy widac ze kazdy number to 10
Od kiedy 10 = 1?

przenosze

Gościówko ale tu nie o to chodzi! Zobacz sobie co napisałem wyżej, że przy warunkach nie działa. To nie było wtedy istotne, że jak number był równy 10 to nie wchodziło do ifa bo robiliśmy test. Przeczytaj najpierw wszystko i przemyśl, zanim coś napiszesz smile.gif
nospor
Cytat
Gościówko
LOL
To ty gosciowko przeczytaj wszystko i przemysl co robisz. To nie ja mam problem z banalna rzecza tylko ty
bart1996
Cytat(nospor @ 18.12.2017, 22:04:54 ) *
LOL
To ty gosciowko przeczytaj wszystko i przemysl co robisz. To nie ja mam problem z banalna rzecza tylko ty

Myślę nad tą banalną rzeczą lecz sobie nie mogę poradzić, więc piszę na forum żeby bardziej doświadczeni ode mnie mi pomogli, lecz przychodzi MISZCZ i mało inteligentnym argumentem chcę zamknąć nierozwiązany temat. Skoro jesteś taki orzeł to powiedz mi co mam zrobić żeby zadziałało, a nie pajacuj.
nospor
Cytat
Skoro jesteś taki orzeł to powiedz mi co mam zrobić żeby zadziałało, a nie pajacuj.
Przeciez ci napisalem, a pajacowac zaczales ty wiec sobie daruj kolejne durne komentarze.
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.