Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Pobieranie godziny z bazy danych
Forum PHP.pl > Forum > Przedszkole
mambus
Witam wszystkich serdecznie! To mój pierwszy post na tym forum. Od dawna wahałem się czy rejestrować się czy nie... samo czytanie wątków nie wystarczyło stąd jestem smile.gif.

I od razu uderzam z pewnym problemem, mianowicie...

Jestem w trakcie tworzenia modułu który pokazuje dane kolejowej stacji z której się odjeżdża i kolejowej stacji do której się przyjeżdża. Wszystkie elementy które stworzyłem do tej pory funkcjonują prawidłowo, ale mam problem który na chwilę obecną zablokował całkowicie moje prace...

1) Chciałbym aby z bazy MySQL wyciągało mi godziny odjazdów i na ich podstawie pokazywało godziny danego pociągu na danej stacji. Działa to na zasadzie sumowania się poprzednich rekordów, powiększanych o z góry zdefiniowaną w bazie wartość. Jak kilometry działają mi dobrze, tak mam problem z godzinami... niby pokazuje że są wstawione 3 rekordy, ale za nic nie chce się wyświetlić prawidłowa godzina. Szukałem i kombinowałem, ale nie mogę sobie dać z tym rady. Może pokażę kod:
CODE
<form name="godziny_odjazdow" method="get">
<select>
<?php
$downloadowanie = 'SELECT odjazd FROM odjazdy_skarzysko';
$zapytanko = mysql_query($downloadowanie);
while ($dane = mysql_fetch_assoc($zapytanko)) {
$skarzysko_odjazdy = $dane['odjazdy'];
$skarzysko_odjazdy_dwa = strtotime($skarzysko_odjazdy);
echo '<option>'.$skarzysko_odjazdy_dwa.'</option>'."\r\n";
}
?>
</select>
</form>

</select>
</form>


Myślałem także że problemem może jest typ danych w tabelce na MySQL, ale miałem ustawione i TIME, i nic... teraz ustawione jest INT i wpisana liczba sekund, też nic. Ktoś może spotkał się z podobnym problemem ?

2) Druga część problemu jest bardzo bliska pierwszej, a więc. Za nic nie chcą się zsumować mi godziny... dobrze je wyświetla, w dobrym formacie. Do godziny na każdej stacji dodaje się wartość jaka jest zdefiniowana w bazie, ale te godziny nie sumują się...
Pokaże kod:
CODE
$laczny_wynik = 'SELECT id, nazwa_stacji, kilometr, czas FROM stacje ORDER BY id';
$pobieranie = mysql_query($laczny_wynik);
while ($rekord = mysql_fetch_assoc($pobieranie)) {

$stacja = $rekord['nazwa_stacji'];
$czasy = $rekord['czas'];
$kilometry = $rekord['kilometr'];
$kolejnosc = $rekord['id'];

$sumator = $sumator + $kilometry;
$kilometr_cena = 0.16;
$cena_biletu = $sumator * $kilometr_cena;
$cena_biletu = number_format($cena_biletu, 2, '.','');
$cena_studencka = $cena_biletu - 37 * $cena_biletu /100;
$cena_studencka = number_format($cena_studencka, 2, '.','');

$sugestia = date("09:00");
$d1 = strtotime($sugestia);
$rozklad = $rozklad + $czasy;
$d = $d1 + $rozklad;
$rozklad = date("H:i", $d);


I co z tym począć ? sad.gif

Nie da rady nic ?
kowalcook
wszystkie operacje na godzinach wykonuj w formacie UNIX owym czyli sumując bądź odejmując sekundy, dopiero same wyniki konwertuj do formatu daty i godziny

pozatym z tego co widzę nie masz nigdzie zdefiniowanej watrtości $rozklad




masz tylko
  1. $rozklad = $rozklad+d1;




chyba że pokazałeś niepełny skrypt


pozdro kowalcook


mambus
Skrypt podałem pełny. Pod spodem jest tylko "echo" wyników. Za nic nie działa. I próbuje w UNIX owym i nic. Na końcu daje konwersje do formatu godziny za pomocą "date("H:i") i nic... wyświetla mi się tylko aktualna godzina. A jak nie dam tego "date" to wtedy wszystko działa poprawnie - czyli sumuje się tak jak ma się sumować, czasy się zgadzają, ale wyświetlają się w postaci sekund, a nie tak jak chciałbym - w postaci godzin i minut.
Eh, już nie mam do tego siły... pomóżcie sad.gif
tomm
Napisaleś że robisz date('H:i') a to wyswietla bieżącą godzinę, musisz jako drugi parametr podać wyliczony znacznik czasu
date('H:i', $znacznik);
mambus
CODE
$laczny_wynik = 'SELECT id, nazwa_stacji, kilometr, czas FROM stacje ORDER BY id';
$pobieranie = mysql_query($laczny_wynik);
while ($rekord = mysql_fetch_assoc($pobieranie)) {

$stacja = $rekord['nazwa_stacji'];
$czasy = $rekord['czas'];
$kilometry = $rekord['kilometr'];
$kolejnosc = $rekord['id'];

$sumator = $sumator + $kilometry;
$kilometr_cena = 0.16;
$cena_biletu = $sumator * $kilometr_cena;
$cena_biletu = number_format($cena_biletu, 2, '.','');
$cena_studencka = $cena_biletu - 37 * $cena_biletu /100;
$cena_studencka = number_format($cena_studencka, 2, '.','');

$sugestia = date("08:30");
$sugestia = strtotime($sugestia);
$rozklad = $sugestia + $czasy;
$rozklad = date('H:i', $rozklad);


Okej, prawidłowo wyświetla czasy, ale nie dodaje się.

Zasada działania wygląda w ten sposób, opiszę na przykładzie.

W MySQLu:
RADOM | 1800 <- (gdzie 1800 to inaczej 30 minut)
WARKA | 2700 <- (gdzie 2700 to inaczej 45minut)
PIASECZNO | 1800 <- (gdzie 1800 to inaczej 30minut)

Każdy z tych czasów to czas jaki należy przebyć pomiędzy tymi stacjami. A teraz działanie:

WARKA = 0 + 2700 (bo taki czas jazdy z Radomia do Warki)
PIASECZNO = 0 + 2700 + 1800 (bo taka suma czasu jazdy z Radomia przez Warkę do Piaseczna)

W ten sposób , w każdej następnej linijce sumuje się czas. W przypadku kilometrów, wystarczyło zastosować:
$kilometry = $kilometry + $odleglosc i wszystko działa, ale w przypadku czasu, jeśli użyje zmiennej $sugestia w której ustawie sobie np 09:00 , to zamiast sumować w powyższy sposób, to do 09:00 dodaje mi tylko czas jaki jest pomiędzy stacjami i w tym tkwi problem...hm.
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.