Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP i MySQL]Czas obecny a rekord z bazy-jak porównac aby sformatować?
walldeck
post
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 13.03.2006
Skąd: Rogoźno Wlkp.

Ostrzeżenie: (0%)
-----


Czy idzie pobierając dane z tabeli o wartosci TIME porownac z aktualnym czasem i powidzmy kiedy zbliza sie data jej uplyniecia pogrubia oraz wyswietla, formatuje ten tekst z tabeli(chodzi o ta date) na kolor czerwony wywalając stosowny komunikat??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
Chrom
post
Post #2





Grupa: Zarejestrowani
Postów: 240
Pomógł: 17
Dołączył: 28.12.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


idzie
time" title="Zobacz w manualu PHP" target="_manual

pobierz dane i porównaj użyj do tego w/w funkcji i w zależności od ilości pozostałego czasu zastosuj kolorowanie

Ten post edytował Chrom 4.03.2008, 21:59:50
Go to the top of the page
+Quote Post
walldeck
post
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 13.03.2006
Skąd: Rogoźno Wlkp.

Ostrzeżenie: (0%)
-----


jakiś konkretny przykład jak to zrobić?
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #4





Goście







Cytat(walldeck @ 5.03.2008, 00:00:00 ) *
jakiś konkretny przykład jak to zrobić?


Znajduje się zapewne w manualu.
Go to the top of the page
+Quote Post
Chrom
post
Post #5





Grupa: Zarejestrowani
Postów: 240
Pomógł: 17
Dołączył: 28.12.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


kliknij w link tam jest 90% tego czego potrzebujesz co do pozostałego 20% to wystarczy zwykłe if i trochę CSS
Go to the top of the page
+Quote Post
--walldeck--
post
Post #6





Goście







Zrobiłem coś takiego:
  1. <?php
  2. include "polaczenie.php";
  3. $today = date("m.d.y");
  4.  
  5. echo "$today";
  6.  
  7.  
  8.  
  9. $query = mysql_query("SELECT data_wysylki FROM zlecenia ");
  10. $result = mysql_fetch_array($query)
  11. or die ("niepoprawne zapytanie: " .mysql_error());
  12. if ($result = $today) {
  13. echo "<font color='red' size='5'>";
  14. echo"<br>";
  15. echo "Dzisiaj termin wyslania zlecenia";
  16.  
  17. }
  18.  
  19. else {
  20. echo "pozostalo jeszcze" ;
  21. $wynik = ($today - $result);
  22. echo "$wynik";
  23.  echo "DNI";
  24. }
  25. ?>


Ale nie działa mi to prawidłowo, ponieważ gdy zmieniam datę systemową wstecz to powinien pojawić sie else a tak nie jest. Dlaczego?
Go to the top of the page
+Quote Post
walldeck
post
Post #7





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 13.03.2006
Skąd: Rogoźno Wlkp.

Ostrzeżenie: (0%)
-----


Poprawiłem troche kod gdyż chciałem aby wyświetlał mi te numery zleceń ktore powinny dzisiaj wyjechać zgodnie z datą :

  1. <?php
  2. include "polaczenie.php";
  3. $today = date("m.d.y");
  4.  
  5. echo "$today";
  6.  
  7.  
  8.  
  9. $query = mysql_query("SELECT numer_zlecenia FROM zlecenia WHERE 'data_wysylki' LIKE '%" .$today. "'");
  10. $result = mysql_query($query);
  11. $num_results = mysql_num_rows($result);
  12.  
  13.  
  14. print "<p>Ilosc zlecen wysylanych dzisiaj: " .$num_results. "</p>";
  15. for ($i=0; $i <$num_results; $i++) {
  16. $row = mysql_fetch_array($result);
  17. print ($i+1).". ";  
  18. echo "numery zlecen: "; 
  19. print stripslashes($row["numer_zlecenia"]);
  20.  
  21. }
  22. ?>


Lecz mam tego typu problem:
Cytat
03.04.08
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\data.php on line 11

Ilosc zlecen wysylanych dzisiaj:
Go to the top of the page
+Quote Post
maziak
post
Post #8





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Witaj, tak jak porownujesz aktualnie, PHP najprawdopodobniej porownuje to jako ciag znakow, co raczej nie da poxadanego efektu, nie jestem pewny nie mam czasu sie blizej temu teraz przyjzec, jednak jezeli moge doradizc ja bym to zrobil inaczej. Mianowicie,
date wyciagana z bazy traktujesz funkcja strtotime" title="Zobacz w manualu PHP" target="_manual, aktualna date wyciagasz w postaci znacznika czasu i wtedy porownujesz czy wieksze czy mniejsze.

przyjzyj sie i przeczytaj dokladnie obydwie funkcje w manualu date" title="Zobacz w manualu PHP" target="_manual, strtotime" title="Zobacz w manualu PHP" target="_manual a jestem calkowicie pewny ze bedziesz w stanie to zrobic sam.

Pozdrawiam.

ps. tu po Polsku
http://php.net.pl/manual/pl/function.strtotime.php
http://php.net.pl/manual/pl/function.date.php

Ten post edytował maziak 5.03.2008, 00:18:42
Go to the top of the page
+Quote Post
c0cr0ach
post
Post #9





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 10.12.2006

Ostrzeżenie: (0%)
-----


@walldeck
Warninga wyrzuca Ci dlatego, że $result nie ma poprawnego formatu. Aby Twój $result był prawidłowym parametrem dla takich funkcji, jak mysql_num_rows() czy mysql_fetch_array(), część kodu powinna wyglądać tak:
  1. <?php
  2. $query = "SELECT numer_zlecenia FROM zlecenia WHERE data_wysylki LIKE '%" .$today. "'";
  3. $result = mysql_query($query);
  4. $num_results = mysql_num_rows($result);
  5. ?>

lub tak:
  1. <?php
  2. $result = mysql_query("SELECT numer_zlecenia FROM zlecenia WHERE data_wysylki LIKE '%" .$today. "'");
  3. $num_results = mysql_num_rows($result);
  4. ?>

Zauważ, że zapytanie przetworzone już raz przez mysql_query() potraktowałeś ponownie tą samą funkcją.

Ten post edytował c0cr0ach 6.03.2008, 14:18:18
Go to the top of the page
+Quote Post
walldeck
post
Post #10





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 13.03.2006
Skąd: Rogoźno Wlkp.

Ostrzeżenie: (0%)
-----


Cytat
Zauważ, że zapytanie przetworzone już raz przez mysql_query() potraktowałeś ponownie tą samą funkcją.

dzięki c0cr0ach, to faktycznie niedopatrzenie z mojej strony.
Lecz nadal wynik nie zwraca mi tego czego bym chciał. Dodałem do bazy zlecenie z datą wysyłki na dzisiaj i mimo wszytko jest 0. Powinno wyróżnić numer tego zlecenia.
Jak potraktuje echo ten $result z bazy to mam taka wartość "
Cytat
Resource id #4

Wartość $num_results ma 0.
Zmieniłem już format daty dla $today na (y,m,d) bo było oo na odwrót i jest to samo

Wydaje mi sie że problem leży w zapytaniu ponieważ gdy wrzucam to do phpmyadmina zwraca zawsze zero bez wzgledu na to czy wywoluje date czy inny rekord z tej tabeli i porownuje na zasadzie LIKE. Moze ktos rzucic okiem czy to zapytani jest dobrze sformułowane?

Ten post edytował walldeck 6.03.2008, 08:32:10
Go to the top of the page
+Quote Post
c0cr0ach
post
Post #11





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 10.12.2006

Ostrzeżenie: (0%)
-----


@walldeck, zauważyłem błąd w zapytaniu (też go wcześniej nie znalazłem (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif) ) - data_wysylki nie powinna się znaleźć w apostrofach, bo nie będzie wtedy traktowana, jako kolumna. Nie wiem w jakim formacie masz datę w swojej tabeli (chodzi mi o to, czy pole data_wysylki jest typu varchar lub date). Jeżeli chcesz, żeby like zadziałał w tym zapytaniu format zmiennej $today musi wyglądać tak: 'Y-m-d' (przy założeniu, że Twoje pole data_wysylki jest typu date; w takim formacie występuje data w tabelach baz MySQL).
Co do $result, wszystko jest w porządku, z tym że rezultat musisz jeszcze potraktować np. mysql_fetch_array(). Jeśli masz wątpliwości, czy rezultat jest poprawnym zasobem bazodanowym, sprawdzaj to używając funkcji: is_resource(). Jako parametr podajesz w tym wypadku $result.
Go to the top of the page
+Quote Post
walldeck
post
Post #12





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 13.03.2006
Skąd: Rogoźno Wlkp.

Ostrzeżenie: (0%)
-----


Ale rekord (data_wysylki) nie jest w apostrofach:> więc nie wiem co masz na myśli...
Pole data_wysylki jest typu DATE i zgadza sie z formantem $today bo juz to poprawiłem.
poproszę o poprawne zapytanie bo nie wiem nadal gdzie leży bład...
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #13





Goście







Na mój gust, nie można użyć LIKE przy polu typu date, no bo niby jak MySQL ma to interpretować? Czy dzisiaj jest "trochę" jak wczoraj? Czy 4 maja jest LIKE jak 7 maja?

Chcesz by pogrubiał jak data się równa, czy jak jest podobna? Możesz np. użyć funkcji month() w zapytaniu, by pokazał z tego miesiąca, week() by z tego tygodnia, możesz ew. zrobić zmienną $data1 = np. 3 dni do przodu od dzisiaj i pogrubiać te, gdzie date =< $data1.

Zainteresuj się tym co napisał Ci maziak.
Go to the top of the page
+Quote Post
c0cr0ach
post
Post #14





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 10.12.2006

Ostrzeżenie: (0%)
-----


Cytat(walldeck @ 6.03.2008, 15:57:12 ) *
Ale rekord (data_wysylki) nie jest w apostrofach:> więc nie wiem co masz na myśli...
Pole data_wysylki jest typu DATE i zgadza sie z formantem $today bo juz to poprawiłem.

data_wysylki nie jest już w apostrofach, bo edytowałem mojego wcześniejszego posta. Wieviór ma rację. Jeżeli potraktujesz datę like'iem, wyświetli Ci wyniki tylko dla rekordów tabeli, których wartość kolumny data_wysylki będzie dokładnie równa wartości zmiennej $today. Tak więc trochę mija się to z celem.
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #15





Goście







Cytat(c0cr0ach @ 6.03.2008, 19:07:43 ) *
Wieviór ma rację. Jeżeli potraktujesz datę like'iem, wyświetli Ci wyniki tylko dla rekordów tabeli, których wartość kolumny data_wysylki będzie dokładnie równa wartości zmiennej $today. Tak więc trochę mija się to z celem.


Tak stanie się tylko wtedy, gdy jeszcze usuniesz z tego zapytania '%'. Tylko wtedy LIKE zadziała jak zwykły WHERE.

EDIT: Widocznie MySQL to ignoruje, spoko ;]

Ten post edytował Wieviór 6.03.2008, 18:35:49
Go to the top of the page
+Quote Post
c0cr0ach
post
Post #16





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 10.12.2006

Ostrzeżenie: (0%)
-----


Cytat(Wieviór @ 6.03.2008, 17:28:35 ) *
Tak stanie się tylko wtedy, gdy jeszcze usuniesz z tego zapytania '%'. Tylko wtedy LIKE zadziała jak zwykły WHERE.

Nawet z '%' działa jak zwykły WHERE, ale bez obaw - nie mam zamiaru się z nikim kłócić. Zaobserwowałem taki efekt podczas testowania prostego skryptu.
Go to the top of the page
+Quote Post
walldeck
post
Post #17





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 13.03.2006
Skąd: Rogoźno Wlkp.

Ostrzeżenie: (0%)
-----


Poszło bez LIKE. dzięki chłopaki.
Cytat
$query = ("SELECT numer_zlecenia FROM zlecenia WHERE data_wysylki LIKE '$today' ");
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 08:49