Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z if ($total_items < 1) {}
Forum PHP.pl > Forum > Przedszkole
Greg23
Mam skrypt ustalający ilość wyników wyszukiwania w zależności od ilości słów w wyszukiwanej frazie:

  1. <?
  2.  
  3. if (empty($_GET['co'])) {
  4. header("Location: index.html");
  5. } else {
  6.  
  7.  
  8. function filtruj($arg) {
  9. $arg = strip_tags($arg);
  10. $arg = htmlspecialchars($arg);
  11. return $arg;
  12. }
  13.  
  14. $szukane = $_GET['co'];
  15. $szukane = iconv('utf-8', 'iso-8859-2', $szukane);
  16. $szukane_query = str_replace("+", " ", $szukane);
  17. $total_items = 0;
  18. $kind = 0;
  19.  
  20. if ($total_items < 3) {
  21.  
  22. $str=str_word_count($szukane, 0, 'ąęłóżźśćńöĄĘŁÓŻŹŚĆŃ1234567890');
  23. $minimalna_zgodnosc = $str;
  24. $sql = "SELECT id FROM (..)";
  25. $result = mysql_query($sql);
  26.  
  27. if (!$result) {
  28. die('Błąd połączenia z bazą danych');
  29. }
  30.  
  31. $total_items = (int)mysql_numrows($result);
  32.  
  33. $kind = 1;
  34. }
  35.  
  36.  
  37. if ($total_items < 1) {
  38. header("Location: ../find2-" . $kind . "-" . $szukane . "-" . $total_items . "-1/");
  39. }
  40.  
  41.  
  42.  
  43. header("Location: ../find-" . $kind . "-" . $szukane . "-" . $total_items . "-1/");
  44. }
  45. ?>



W przypadku gdy:
$total_items = (int)mysql_numrows($result) jest równa 0 powinna wykonać się ta część:

  1. if ($total_items < 1) {
  2. header("Location: ../find2-" . $kind . "-" . $szukane . "-" . $total_items . "-1/");
  3. }


Jednak nigdy ta część się nie wykonuje (gdy total_items=0)
i zawsze przekierowuje mnie na ostatni header.
O co chodzi ?
marcio
W podanym przez ciebie przykladzie masz dwa if-y

Majac total_items na 0 to pierwszy gdzie $total_items < 3 sie spelni i nie przejdzie do drugiego.

Wiec musisz zrobic 2 rzeczy:
-zrobic if/else if ewentualnie else
-zmienic warunki
Greg23
Tylko, że w tym pierwszym if-ie sprawdzam ile jest wyników i dopiero jeśli tych rekordów jest zero ma się wykonać drugi if, więc nie mogę dać else bo muszą się oba wykonać.
Zmieniłem drugi if na else if, ale to nic nie zmieniło.

/EDIT/

Usunąłem w ogóle pierwszego if-a czyli zostało:

  1. $szukane = $_GET['co'];
  2. $szukane = iconv('utf-8', 'iso-8859-2', $szukane);
  3. $szukane_query = str_replace("+", " ", $szukane);
  4. $total_items = 0;
  5. $kind = 0;
  6.  
  7. $str=str_word_count($szukane, 0, 'ąęłóżźśćńöĄĘŁÓŻŹŚĆŃ1234567890');
  8. $minimalna_zgodnosc = $str;
  9. $sql = "SELECT id FROM (..)";
  10. $result = mysql_query($sql);
  11.  
  12.  
  13. $total_items = (int)mysql_numrows($result);
  14. $kind = 1;
  15.  
  16.  
  17. if ($total_items < 1) {
  18. header("Location: ../find2-" . $kind . "-" . $szukane . "-" . $total_items . "-1/");
  19. }
  20. header("Location: ../find-" . $kind . "-" . $szukane . "-" . $total_items . "-1/");
  21. }


Mimo to wciąż:

  1. if ($total_items < 1) {
  2. header("Location: ../find2-" . $kind . "-" . $szukane . "-" . $total_items . "-1/");
  3. }


Nie jest realizowane :/
nospor
Przecież drugi header idzie bezwarunkowo więc nawet jak ci wskoczy pierwszy header, to zaraz po nim wskakuje ten drugi i ci nadpisuje ten pierwszy.....

Daj exit zaraz po tym pierwszym to ci się pierwszy wykona
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.