Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]zapytanie z wcześniejszym sprawdzeniem warunków
Forum PHP.pl > Forum > Przedszkole
krzesik
Witam,
mam tabelę w bazie MySQL 'owoce', zasilona jes danymi np:
jabłko polskie
jabłko włoskie
jabłko niemieckie

wyciągnięcie z bazy danych o owocach działa ok:
  1. SELECT * FROM owoce ORDER BY nazwa ASC

jednak w skrypcie mam jeszcze zmienne które są wykorzystwane w innych miejscach np:
$jp - jabłko polskie
$jw - jabłko włoskie
$jn - jabłko niemieckie

potrzebuję wyciągnąć z bazy wszystkie jabłka które spełniają swój warunek:

  1. if ($jp>0) { /*pokaż z bazy */ echo 'Jabłko polskie';}
  2. if ($jw>0) { /*pokaż z bazy */ echo 'Jabłko włoskie';}
  3. .....itd

dane wyświetlam w formie selcta


dziękuje za wszelkie porady.


in5ane
Wystarczy np. tak:
  1. SELECT * FROM owoce WHERE nazwa = 'jabłko polskie'
lub gdy nie wiesz dokładnie jakie znaki będą to bardziej rozbudowane z wykorzystaniem OR'a, np.:
  1. SELECT * FROM owoce WHERE nazwa = 'Jabłko polskie' OR nazwa = 'jabłko polskie'
Tych OR'ów możesz tutaj wsadzić kilka. Np. gdy nie wiesz czy będzie jabłko czy jablko to zrób
Kod
'jab%ko polskie'
krzesik
zapytanie z warunkiem WHERE wiem jak napisać, chodzi mi o to że w skrypcie sprawdzam wcześniej inne zależności do tego celu wykożystuję zmienne np
$jp;
$jw;

i teraz mając już informację że np. $jp czyli jabłko polskie ma stan zerowy to nie chcę go pokazywać w select-ie. W bazie nie mam informacji o stanach jabłek, dlatego najpierw musze to wyliczyć.
nospor
select name, count(name) from owoce group by name
To zapytanie zwroci ci ile masz danych owocow. Zapisz to sobie do tablicy czy do zmiennych - jak ci wygodniej - i bedziesz mial wszystko co ci potrzeba
krzesik
kurczę jakoś tego nie widzę: select $jp, $jw from owoce ?

skąd zapytanie będzie wiedziało że $jw oznacza jabłko włoskie?
nospor
Podalem ci pelne, poprawne zapytanie.... Zapytania masz nie zmieniac.... Masz je wykonac w php i odebrac z niego wyniki, jak z kazdego innego zapytania. I wyniki te masz se zapisac gdzie chcesz
krzesik
no to jednak się nie rozumiemy, pewnie napisałem niejasno.
mam tablicę owoce z polami: id_owoc | nazwa

1 | jabłko polskie
2 | jabłko włoskie
3 | jabłko niemieckie

wyciągnięcie nazwa z bazy - pestka
  1. SELECT * FROM owoce


w innej tabeli mam przychody i rozchody wyliczam sobie z niej czy dane jabłko ma dodatni stan magazynowy, na potrzeby tego wyliczenia poszczególne jabłka oznaczam zmiennymi:
$jp;
$jw;
$jn;

podczas wystawiania dokumentu, w tabelce obok pokazuję co można sprzedać (bo ma stan magazynowy dodatni), jednak chciałbym aby w liście pokazywać wyłącznie te jabłka które są na stanie.

na logikę powinienem zapytać:
  1.  
  2. SELECT * FROM owoce WHERE $jp>'0',........


ale tak mi nie zadziała
in5ane
Takich rzeczy nie robi się w PHP, tylko w zapytaniu. Podaj mi strukturę tej drugiej tabeli z przychodami i rozchodami, to napisze Ci całe zapytanie.

@edit: i podaj, jak liczysz te przychody i rozchody oraz stan magazynowy, bo może to coś bardziej skomplikowanego.

@edit: ewentualnie może coś takiego Ci pomoże, ale nie jestem pewny, czy to zadziała, musiałbym sprawdzić, bo nie pamiętam dokładnie warunków w SQL:
  1. SELECT
  2. *
  3. FROM
  4. owoce
  5. WHERE
  6. IF (' . $jp . ' > 0, nazwa, 0) = 'jabłko polskie'
  7. OR
  8. IF (' . $jw . ' > 0, nazwa, 0) = 'jabłko włoskie'
  9. OR
  10. IF (' . $jn . ' > 0, nazwa, 0) = 'jabłko niemieckie'
Od razu wstawiłem Ci zmienne do tego zapytania
krzesik
niestety wynik jest pusty, a warunki napewno są spełnione
nospor
@insane z lekka przekombinowal
Jesli dany warunek jest spelniony, dodaj do where poprostu kolejny warunek i juz.
Podobny schemat budowania dynamicznie WHERE maszz opisany tutaj
http://nospor.pl/wyszukiwarka-zapytanie-za...d-warunkow.html
tylko zamiast AND masz dac OR i po sprawie.
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.