Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Warunek if
Forum PHP.pl > Forum > PHP
amxkylu
Witam wszystkich!
Mam problemik z pętlą if, a mianowicie:
ma 3 możliwe warunki do spełnienia, w zależności od 2 zmiennych:

  1. <?php
  2. if(($porzadkowanie=='') && ($pporzodkowanie=='')) {
  3.  $zapytanie=&#092;"select * from $nazwa_tabeli where $like_str order by dzial $sortowanie_str 
    $
  4. imit_str\";
  5. }
  6. if(($porzadkowanie) && (!$pporzodkowanie)) {
  7.  $zapytanie=\"select * from $nazwa_tabeli where dzial='$porzadkowanie_str' and $like_str order by dzial $sortowanie_str $limit_str\";
  8. }
  9. if(($porzadkowanie) && ($pporzodkowanie)){
  10. $zapytanie=\"select * from $nazwa_tabeli where dzial='$porzadkowanie_str' and poddzial='$pporzadkowanie_str' and $like_str order by dzial $sortowanie_str $limit_str\";
  11. }
  12. ?>


Prosta sprawa - jak obie puste to wyciąga wszystko z bazy, jak pierwsza jest ustawiona a druga pust to tylko tam gdzie dział jest ze zmiennej , a trzeci jak obie są ustawione.
Pierwszy warunek sprawdza a potem leci drugim jakby w ogóle 3 nie było:(
Zmienne są napewno przekazywane bo sprawdzam je sobie wyświetlając je na początku za pomocą prostej funkcji.
Dodam też że próbowałem warunków
if...
elseif...
else...
Ten sam objaw!
Będę wdzięczny za wszelkie podpowiedzi, bo pewnie coś przeoczyłem.
Ps. Można coś takiego na np. swithach zrobic?
Z góruy dziękuję. Pozdrawiam wszystkich
bieniek
Masz warunki, które się nie wykluczają.
Zamiast używać !$zmienna powinieneś użyć $zmienna != '';
amxkylu
Teraz mam:

  1. <?php
  2. if((!$porzadkowanie) && (!$pporzodkowanie)) {
  3.  $zapytanie=&#092;"select * from $nazwa_tabeli where $like_str order by dzial $sortowanie_str 
    $
  4. imit_str\";
  5. }
  6. elseif(($porzadkowanie !='') && ($pporzodkowanie=='')) {
  7.  $zapytanie=\"select * from $nazwa_tabeli where dzial='$porzadkowanie_str' and $like_str order by dzial $sortowanie_str $limit_str\";
  8. }
  9. else 
  10. {
  11. $zapytanie=\"select * from $nazwa_tabeli where dzial='$porzadkowanie_str' and poddzial='$pporzadkowanie_str' and $like_str order by dzial $sortowanie_str $limit_str\";
  12. }
  13. ?>


i też nie hula sad.gif
peterj
  1. <?php
  2. if(isset($porzadkowanie) && isset($pporzodkowanie)){
  3. $zapytanie=&#092;"select * from $nazwa_tabeli where dzial='$porzadkowanie_str' and poddzial='$pporzadkowanie_str' and $like_str order by dzial $sortowanie_str $limit_str\"; }
  4. elseif(isset($pporzadkowanie) && !isset($porzadkowanie)){ 
  5. $zapytanie=&#092;"select * from $nazwa_tabeli where dzial='$porzadkowanie_str' and $like_str order by dzial $sortowanie_str $limit_str\";
  6. }else{
  7. $zapytanie=&#092;"select * from $nazwa_tabeli where $like_str order by dzial $sortowanie_str 
    $
  8. imit_str\"; }
  9. ?>
bieniek
  1. <?php
  2. if(($porzadkowanie != '') && ($pporzodkowanie!='')) {
  3.  $zapytanie=&#092;"select * from $nazwa_tabeli where $like_str order by dzial $sortowanie_str 
    $
  4. imit_str\";
  5. }
  6. elseif(($porzadkowanie !='') && ($pporzodkowanie=='')) {
  7.  $zapytanie=\"select * from $nazwa_tabeli where dzial='$porzadkowanie_str' and $like_str order by dzial $sortowanie_str $limit_str\";
  8. }
  9. else
  10. {
  11. $zapytanie=\"select * from $nazwa_tabeli where dzial='$porzadkowanie_str' and poddzial='$pporzadkowanie_str' and $like_str order by dzial $sortowanie_str $limit_str\";
  12. }
  13. ?>

i brakuje ci jeszcze jednego warunku jeżeli mają być wyczerpane wszytkie możliwości.
amxkylu
Dzięki chłopaki za podpowiedzi, ale żadna nie hula:(
objawy jak poprzednio -
wybiera przy obydwu pustych, przy pierwszej pusrej, a nie wybiera przy dwóch przypisanych sad.gif
peterj
Spróbuj jeszcze w ten sposób
  1. <?php
  2. if(isset($porzadkowanie) && isset($pporzodkowanie)){
  3. $zapytanie=&#092;"select * from $nazwa_tabeli where dzial='$porzadkowanie_str' and poddzial='$pporzadkowanie_str' and $like_str order by dzial $sortowanie_str $limit_str\"; }
  4. else{
  5. $zapytanie=&#092;"select * from $nazwa_tabeli where $like_str order by dzial $sortowanie_str 
    $
  6. imit_str\"; }
  7. elseif(isset($porzadkowanie) && !isset($pporzadkowanie)){
  8. $zapytanie=\"select * from $nazwa_tabeli where dzial='$porzadkowanie_str' and $like_str order by dzial $sortowanie_str $limit_str\";
  9. }
  10. ?>
amxkylu
Też nie działa.
Zrobiłem coś takiego że sprawdziłem ile mi zwróci rekordów z zapytania:

if(($porzadkowanie != '') && ($pporzodkowanie!='')) {
$query = "select count(*) from $nazwa_tabeli where dzial='$porzadkowanie' and poddzial='$pporzadkowanie' and $like_str";
}
elseif(($porzadkowanie !='') && ($pporzodkowanie=='')) {
$query = "select count(*) from $nazwa_tabeli where dzial='$porzadkowanie' and $like_str";
}
else
{
$query = "select count(*) from $nazwa_tabeli where $like_str";
}

$result = mysql_query($query);

I zawsze nie sprwadza mi jednego waruku: jak obie zmienne są ustawione.
Np mam 4 rekordy w bazie, jak nie ma zmiennych to podaje liczbę 4, jak ustawię pierwszą zmienną to wyświetli np 3 , i to się zgadza, ale jak ustawię obie to wyświetla też 4, mino że w bazie jest tylko 1 taki rekord exclamation.gif!
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.