Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z if ($total_items < 1) {}, total_items jest mniejsze od 1 a mimo to instrukcje nie są wykonywane
Greg23
post 17.05.2012, 00:02:33
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


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 ?


--------------------
Go to the top of the page
+Quote Post
marcio
post 17.05.2012, 00:28:17
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Greg23
post 17.05.2012, 00:53:16
Post #3





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


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 :/

Ten post edytował Greg23 17.05.2012, 01:00:34


--------------------
Go to the top of the page
+Quote Post
nospor
post 17.05.2012, 09:11:14
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:01