Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] petla if problem
Forum PHP.pl > Forum > Przedszkole
Lonas
Dlaczego przy takim kodzie
  1. <?php
  2. if( $dzial != NULL && $gama !==NULL ) {
  3. $sqlwhere .= " `dzial` = '$dzial'";
  4. }
  5.  
  6. if( $dzial !== NULL && $gama !=NULL ) {
  7. $sqlwhere .= "`gama` = '$gama' ";
  8.  
  9. }
  10. if( $dzial != NULL && $gama !=NULL ) {
  11. $sqlwhere .= " `dzial` = '$dzial' and `gama` = '$gama' ";
  12. }
  13.  
  14.  
  15. if($sortuj != NULL) {
  16. $sqlwhere .= " order by '$sortuj' desc";
  17. }
  18.  
  19. if($sortuj !== NULL) {
  20. $sqlwhere .= " ";
  21. }
  22. ?>


zaznaczajac naraz i game i dzial otrzymuje taki wynik

where `dzial` = '2'`gama` = 'A' `dzial` = '2' and `gama` = 'A'
nospor
no i jak wyglada ta linia?
  1. <?php
  2. f( ($dzial != NULL) $$ ($gama !==NULL ) ) {
  3. ?>
Jestes pewien ze tak się robi anda? Luknij na inne linie

edit:
patrząc na twoj kod, to albo nie zakumales oco chodzi w metodzie co ci linka podalem, albo jej nie zastosowales
Lonas
Tak smile.gif masz racje smile.gif

Teraz tylko nie wiem czemu te warunki tak dziwnie sprawdza
nospor
widze ze nie zakumales metody:
http://forum.php.pl/index.php?showtopic=36...533;entry204618
Przyjrzyj się jej jeszcze raz/dwa/trzy. Czy ja w ifach dawalem po dwa warunki? Nie. Dawalem po jednym.
A ty u siebie w if rozpatrujesz wszystkie kombinacje.
A metoda co ci podalem unika zabawy w kombinacje.
kszychu
A ja jak zwykle w kwestii formalnej: if nie jest pętlą a instrukcją warunkową.
Prawie robi ogromną różnicę...

A te dwa ify na końcu to co mają na celu?
Lonas
Ok mam smile.gif

  1. <?php
  2. $wh = array();
  3. if (!empty($dzial))
  4.  $wh[] = 'dzial= '.$dzial;
  5. if (!empty($gama))
  6.  $wh[] = 'gama='.$gama;
  7.  
  8. if (!empty($wh))
  9.  $where = 'where '.implode(' and ', $wh);
  10. else
  11.  $where = '';
  12.  
  13. $sql = 'select * from marza_ujemna '.$where ;
  14. ?>


żeby teraz dodać sort by to musze wprowadzić. np

$sort = array () ? ?
kszychu
  1. <?php
  2.  
  3. $sql = 'SELECT * FROM jakastabela WHERE ';
  4.  
  5. if($dzial != NULL) {
  6. $sqlwhere .= "`dzial` = '{$dzial}' AND ";
  7. }
  8.  
  9. if($gama !=NULL ) {
  10. $sqlwhere .= "`gama` = '{$gama}' AND ";
  11. }
  12. $sqlwhere .= ' true';
  13.  
  14. if($sortuj != NULL) {
  15. $sqlwhere .= "order by '{$sortuj}' desc";
  16. }
  17.  
  18. echo $sql.$sqlwhere;
  19.  
  20. ?>


Słówko komentarza:
1. Poczytaj o != i !==; używasz ich jako operatorów równości i nierówności. ONE OBA są opertorami nierówności, z tym, że ten drugi sprawdza dodatkowo tym porównywanuch argumentów.
2. Liczyłem na więcej komentarzy, dlatego wstawiłem numerację, ale skończy sięna komentarzu nr 1.
nospor
  1. <?php
  2.  
  3. //... tak jak miales
  4. $sql = 'select * from marza_ujemna '.$where ;
  5. if(!empty($sortuj))
  6. $sql .= " order by `$sortuj` desc";
  7.  
  8.  
  9. ?>
zakladam ze kierunku nie uwzgledniasz. a jak uwzgledniasz, to juz pomysl sam biggrin.gif
Lonas
Wiesz co.. smile.gif nie działa mi jeszcze sortowanie

  1. <?php
  2.  
  3. $wh = array();
  4. if (!empty($dzial))
  5.  $wh[] = 'dzial= '.$dzial;
  6. if (!empty($gama))
  7.  $wh[] = 'gama='.$gama;
  8.  
  9.  
  10.  
  11. if (!empty($wh))
  12.  $where = 'where '.implode(' and ', $wh);
  13. else
  14.  $where = '';
  15.  
  16. $sql = 'select * from marza_ujemna '.$where ;
  17.  
  18. if(!empty($sortuj))
  19. $sql .= " order by `$sortuj` desc";
  20.  
  21.  
  22. print $sortuj;
  23. print $sql;
  24.  
  25. ?>


jak wyswietle sortuj pokazuje sie dobra wartosc wartosc $sql też
select * from marza_ujemna where dzial= 5 and gama=S order by 'zapas' desc


a w zapytaniu

Something is wrong in your syntax obok 'select * from marza_ujemna where dzial= 5 and gama=S order by 'z' w linii 1

ucina coś

probowałem też tak :

if(!empty($sortuj))
$sql .= " order by $sortuj desc";
ale to samo
nospor
on ucina zapytanie w wiadomosci o errorze, a nie wogole obcina zapytanie winksmiley.jpg

a te gamma to jest tekst/varchar/char ? jak tak to musi byc w ''
gama='S'
popraw se w kodzie
Lonas
wiem .. proste hehe
ale próbowałem juz na milion sposób, zatrzymałem sie na

  1. <?php
  2. $wh[] = 'gama=' "' .$gama'" ;
  3. ?>


i caly czas blad skladni

tak tez nie :
  1. <?php
  2.  $wh[] = "'gama= '' .$gama ' ";
  3. ?>
nospor
tu masz wszystko co szukasz:
http://pl.php.net/manual/pl/language.types.string.php

warn juz ci wisi nad glową za niechęc do manuala...
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.