Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] błąd w wyniku odejmowania dat
Forum PHP.pl > Forum > Przedszkole
PiiiT
Witam serdecznie, mam problem z otrzymaniem poprawnego wyniku odejmowania dat. Poniższy kod zmienia datetime na czas unixowy oraz różnice podaje w minutach i jest wszystko ok, jak wstawie żeby pokazywał w godzinach i minutach wstawiam "H:i" zamiast "i" to wynik jest 01.03 w przypadku odliczenia 3 minut. Zaznaczam że daty różnią się tylko ilością 3 minut i pojawia się błędny wynik. Jaka jest przczyna? Wynik chciałbym aby pojawił się w minutach chyba ze czas przyekroczy godzinę to wtedy w godzinach i minutach. Z góry dziękuję za pomoc.

  1. <?php
  2. $start=strtotime(mysql_result($wyniko,$y, "start"));      
  3.  
  4.       $stop=strtotime(mysql_result($wyniko,$y, "stop"));
  5.  
  6.       $roznica=$stop-$start;
  7.  
  8.       $mysqldate = date( 'i', $roznica );
  9.  
  10.             print "$mysqldate" ;
  11.  
  12. ?>






 

Proszę o informację jak korzystac z bbcode ponieważ wpisałem kod w znacznikach "[code][/code]" i kod wyświetlił się w jednej linii, zmieniłem na "
CODE
" i wyświetliło poprawnie ale mimo to wpis został poprawiony przez Ociu.

"Ten post edytował Ociu 14 minut temu
Powód edycji: Poprawiłem bbCode (ociu)"

Jeżeli zaznacze tekst który jest kodem i klikam w edytorze postów na ikone "Umieśc jako kod" kod wyświetla się w jednej linii.. Proszę o odpowiedź bo chciałbym pisac poprawnie posty i nie marnowac czyjegoś czasu na sprawdzanie i poprawianie takich błędów. Z góry dziękuję za podpowiedź
Ociu
Mi bardziej chodziło o to, że do wyświetlania kodu PHP jest specjalne bbcode stworzone przez naszych deweloperów (button z napisem PHP nad polem treści posta).
pozdrawiam, Wojtek.
PiiiT
Rozumiem i czytałem o tym ale u mnie przyciski PHP MANUAL SQL HTML i XML nie działają.. Widzę przyciski ale po zaznaczeniu tekstu i kliknięciu na np. button php nic się nie dzieje.. W operze widac który button jest zaznaczony,w IE nic nie widzę i nic się nie dzieje..Jak najeżdzam na któryś to w operze obok buttona pojawia się podświetlone pole ale nic w nim nie ma. Działa jedynie "umieśc jako kod" i pozostałe opcje do edycji i formatowania tekstu . Pozdrawiam Piotr.


---- Edited by ociu
Nie działają ? Sprawdzimy co się dzieje, możesz podać wersję swojej przeglądarki ? Powracając do bbCode, istnieje możliwość ręcznego umieszczenia znacznika to co jest napisane na buttonie odpowiada temu, co trzeba wstawić w [].

---Edited--- Używam Opery Wersja 9.26 Kompilacja 8835

----PiiiT edit---  Wpisanie "[php]" zamiast [code] pomaga i tekst jest poprawnie wyświetlony..mam taką nadzieje. dzięki za wskazówke. Pozdrawiam
oscar17
A może lepiej od razu z bazy wyciągnąć różnicę czasów zapytaniem:
Kod
"SELECT TIMEDIFF(time2, time1) AS diff FROM tabela"

Możesz też przeliczyć na sekundy i potem z nich stworzyć sobie odpwiedni format, wtedy dodajesz
Kod
"SELECT TIME_TO_SEC(TIMEDIFF(time2, time1)) AS diff FROM tabela"


A co do przycisków (PHP, MANUAL etc.) to mnie też nie działają (firefox 3 RC1)... :/
PiiiT
Próbowałem tak zrobic ale nic mi nie wychodziło bo jak dla mnie mam zbyt skomplikowane zapytanie z którym też trochę walczyłem i tak dokońca nie wiem jak i gdzie to wkąponowac. Poniżej zamieszczam cały kod:
  1. <?php
  2. mysql_connect("localhost", "xxxx", "xxxxxx")or die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych
  3. mysql_select_db("prog")or die("Wystąpił błąd podczas wybierania bazy danych");
  4.  
  5. $wyniko=mysql_query("SELECT mechanicy.imiem, mechanicy.nazwiskom, zlecenia.nr_zlecenia, obsluga.
    start, obsluga.stop 
  6. FROM mechanicy, obsluga, zlecenia WHERE mechanicy.id_mech=obsluga.id_mechanika A
    ND zlecenia.id_zlec=obsluga.id_zlecenia"
    );
  7. $ilosco=mysql_num_rows($wyniko);
  8.  
  9. print("<table border=\"1\">");
  10. print("<tr><td colspan=6 align=center><b>OBSŁUGA ZLECEŃ</b></td></tr>"); 
  11. print("<tr>");
  12. print("<td width=\"200px\"><b>Imię mechanika</b></td>\n");
  13. print("<td width=\"200px\"><b>Nazwisko mechanika</b></td>\n");
  14. print("<td width=\"200px\"><b>Numer zlecenia</b></td>\n");
  15. print("<td width=\"200px\"><b>Początek</b></td>\n");
  16. print("<td width=\"200px\"><b>Koniec</b></td>\n");
  17. print("<td width=\"200px\"><b>Rb/h w minutach</b></td>\n");
  18. print("</tr>");
  19.  
  20. for ($y = 0; $y < $ilosco; $y++) {
  21. print("<tr><td>");
  22. print(mysql_result($wyniko,$y, "imiem"));
  23. print("</td><td>");
  24. print(mysql_result($wyniko,$y, "nazwiskom"));
  25. print("</td><td>");
  26. print(mysql_result($wyniko,$y, "nr_zlecenia"));
  27. print("</td><td>");
  28. print(mysql_result($wyniko,$y, "start"));
  29. print("</td><td>");
  30. print(mysql_result($wyniko,$y, "stop"));
  31. print("</td><td>");
  32. $start=strtotime(mysql_result($wyniko,$y, "start"));
  33. $stop=strtotime(mysql_result($wyniko,$y, "stop"));
  34. $roznica=$stop-$start;
  35.  $godzin=($roznica/60);
  36. if ($godzin) {
  37. echo round($godzin);} 
  38. print("</td></tr>");
  39. }
  40. print("</table>");
  41. ?>
oscar17
Dziwna konstrukcja trochę, ale tak na szybko tylko, zapytanie możesz zmodyfikować:
  1. <?php
  2. $wyniko=mysql_query("SELECT mechanicy.imiem, mechanicy.nazwiskom, zlecenia.nr_zlecenia, TIMEDIFF(obsluga.stop, obsluga.start) AS roznica,
  3. FROM mechanicy, obsluga, zlecenia WHERE mechanicy.id_mech=obsluga.id_mechanika A
    ND zlecenia.id_zlec=obsluga.id_zlecenia"
    );
  4. ?>

A potem przy wyświetlaniu dajesz coś takiego:
  1. <?php
  2. print(mysql_result($wyniko,$y, "roznica"));
  3. ?>

Powinno wyświetlić różnicę w czasie od końca do początku.
Jak już pisałem wyżej możesz to jeszcze w zapytaniu zamienić na sekundy i potem przetworzyć sekundy, w zależności jak chcesz mieć wyświetlone
PiiiT
Zapytanie jest dziwne bo pobiera dane z trzech tabel jednocześnie, takie coś znalazłem na http://www.w3schools.com/sql/sql_join.asp i działa. Po poprawieniu kodu na to co podałeś zapytanie nie zwraca żadnych wyników pojawia się błąd w 6 linii:
mysql_num_rows(): supplied argument is not a valid MySQL result resource in...
PiiiT
Wawala coś takiego:
  1. Something IS wrong IN your syntax obok '(obsluga.stop, obsluga.start) AS roznica FROM mechanicy, obsluga' w linii 1
  2. Warning: mysql_num_rows(): supplied argument IS NOT a valid MySQL result resource IN c:\usr\krasnal\www\prog\obslugatest.php ON line 7
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.