Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL, PHP] Zapytanie do bazy z warunkami
Bejkrools
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 15.11.2012

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


Witajcie, chce utworzyć funkcje, która na podstawie podanych argumentów wybierze z tabeli NIEPUSTY element, który powstał najbliżej dnia dzisiejszego (czyli jako ostatni). Te dane będą mi potrzebne, ale pierw chciałem, żeby ta funkcja je zwyczajnie wyświetlała.

Tabela:

Kod
[ID]   [MAGAZYN]    [CZAS]       [ITEM1]
1       746G     30.07.2013       Kamil
2       746G     31.07.2013       Ewa
3       746G     01.08.2013       NULL

  1. function checklist_termin ($magazyn)
  2. {
  3. $mysql = mysql_query("SELECT * FROM lista WHERE magazyn = '$magazyn' AND item1 <> '' AND czas = (select max(czas) from lista)")
  4. or die('Blad zapytania');
  5.  
  6. if(mysql_num_rows($mysql) > 0) {
  7. while($k = mysql_fetch_assoc($mysql)) {
  8. echo $k['item1'].' ';
  9. echo $k['czas'];
  10. }
  11. }
  12. }


Chciałbym, żeby w wyniku funkcji było: Ewa 31.07.2013, a niestety wynik jest pusty, wydaje mi sie, ze cos poknociłem z zapytaniem.

Temat do zamknięcia, chyba, że jest jakiś szlachetniejszy sposób niż mój:

  1. function checklist_termin ($magazyn)
  2. {
  3. $mysql = mysql_query("SELECT * FROM lista WHERE magazyn = '$magazyn' AND item1 <> '' AND czas = (select max(czas) from lista)")
  4. or die('Blad zapytania');
  5.  
  6. if(mysql_num_rows($mysql) > 0) {
  7. while($k = mysql_fetch_assoc($mysql)) {
  8. echo $k['item1'].' '.$k['czas'].'<br>';
  9. $last_time = $k['item1'].' '.$k['czas'];
  10. }
  11. }
  12. echo '--<br>'.$last_time;
  13. }


Ten post edytował Bejkrools 1.08.2013, 12:29:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
freemp3
post
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Nie musisz używać dodatkowego SELECT-a, aby mieć ostatni czas. Wystarczy dodać sortowanie po kolumnie z czasem i ograniczyć ilość wyników do 1.
Przed wykonaniem zapytania wyświetl je i zobacz, czy aby na pewno jest poprawne. Może w zmiennej magazyn jest zła wartość i dlatego nie znajduje żadnego wyniku.
Go to the top of the page
+Quote Post
Bejkrools
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 15.11.2012

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


problem pierwszy rozwiązałem, ale teraz pojawił sie inny, chce obliczac date miedzy ostatnim wystapieniem niepustego elementu, a dzisiaj.

  1. $data = date("Y.m.d");
  2. $last_data = date("Y.m.d",strtotime($last_time));
  3. $days = strtotime($data) - strtotime($last_data) / (60*60*24);
  4. echo $data.' - '.$last_data.' = '.$days.' dni';


Wynik: 2013.08.01 - 2013.07.25 = 0 dni
Go to the top of the page
+Quote Post
freemp3
post
Post #4





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Zmień kropki na pauzy:
  1. $data = date("Y-m-d");

To samo tyczy się również daty pobieranej z bazy danych

Ten post edytował freemp3 1.08.2013, 12:59:47
Go to the top of the page
+Quote Post
Bejkrools
post
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 15.11.2012

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


po poprawieniu:

  1. {
  2. $mysql = mysql_query("SELECT * FROM lista WHERE magazyn = '$magazyn' AND $item <> ''")
  3. or die('Blad zapytania');
  4.  
  5. if(mysql_num_rows($mysql) > 0) {
  6. while($k = mysql_fetch_assoc($mysql)) {
  7. $last_time = date("Y-m-d",strtotime($k['czas']));
  8. }
  9. }
  10. $data = date("Y-m-d");
  11. $last_data = date("Y-m-d",strtotime($last_time));
  12. $days = strtotime($data) - strtotime($last_data) / (60*60*24);
  13. echo $data.' - '.$last_data.' = '.$days.' dni';
  14. }


Wynik echo:

2013-08-01 - 2013-07-25 = 1375292089.0833 dni

zapomniałem o nawiasach :-) Już jest OK!

Ten post edytował Bejkrools 1.08.2013, 13:19:13
Go to the top of the page
+Quote Post
freemp3
post
Post #6





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


  1. $last_data = date("Y-m-d",strtotime($last_time));

W tej linijce przekazujesz do funkcji strtotime zmienną ktora nie istnieje, więc funkcja zwraca 0.
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: 22.08.2025 - 21:51