Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: case i switch
Forum PHP.pl > Forum > Przedszkole
dabb
Witam

Mecze sie i mecze - manuala tez z ktorego korzystam na codzien i bardzo pomoga.
Napisalem sobie taka funkcje switch lecz niestety pare warunkow nie dziala poprawnie i nie wiem dlaczego. Moglby to ktos z fachowcow przeanalizowac i wskac(naprowadzic) na bledy questionmark.gif

  1. <?php
  2. $path = ".";
  3. $moje = "./inc/includ";
  4.  
  5. if($do == "search" or $dosearch == "yes"){ $subaction = "search"; $dosearch = "yes"; include("$path/search.php"); }
  6.  
  7. if ($_GET['go'] != ''){
  8.  
  9. switch ($go):
  10.  
  11. case archives:
  12.  include("$path/show_archives.php");
  13.  break;
  14.  
  15. case (file_exists("$moje/$go.php")): // dziala poprawnie
  16. include("$moje/$go.php");
  17. break;
  18.  
  19. case ($_GET['archive'] and $_GET['archive'] != ''): //nie includuje sie show_news mimo ze w adresie jest pusta zmienna 'archive'
  20. include("$path/show_news.php");
  21. break;
  22.  
  23. case ($subaction == "showcomments"): //nie includuje sie show_news mimo ze w adresie jest pusta zmienna 'showcomments'
  24. include("$path/show_news.php");
  25. break;
  26.  
  27. case (isset($_GET['archive'])): // nie dziala
  28. include("$path/show_news.php");
  29. break;
  30.  
  31. case news: // to tez chodzi ok
  32. include("$path/show_news.php");
  33. break;
  34.  
  35.  default:
  36.  include("$moje/main.php"); // i to tez nie dziala a powinno sie includowac jak sie laduje strone glowna czyli
     sam index.php
  37.  
  38. endswitch;
  39.  
  40. }
  41.  
  42. ?>


Najpierw mialem taki kod i wszystko chodzilo ok ale musze miec to zapisane za pomoca switch


  1. <?php
  2.  
  3. $path = ".";
  4. $moje = "./inc/includ";
  5. if($do == "search" or $dosearch == "yes"){ $subaction = "search"; $dosearch = "yes"; include("$path/search.php"); }
  6. elseif($go == "archives"){ include("$path/show_archives.php"); }
  7. elseif($_GET['archive'] and $_GET['archive'] != ''){include("$path/show_news.php"); }
  8. elseif(isset($_GET['archive'])){include("$path/show_news.php"); }
  9. elseif($subaction == "showcomments"){ include("$path/show_news.php"); }
  10. elseif($go == "news"){include("$path/show_news.php"); }
  11. elseif(file_exists("$moje/$go.php")){include("$moje/$go.php");}
  12. else{include("$moje/main.php");}
  13.  
  14. ?>
crash
Proponuję poczytać manuala dokładniej. Źle używasz case'ów...
orson
witam ...

zamień switch($go) na switch(true), zamień news i archives na $go == 'news' i $go == 'archives' ...

UWAGA: sprawdzanie w switch odbywa się tylko jako == ... jeżeli chcesz coś sprawdzać wraz z typem to tylko switch (true), case $smth === false:

pozdrawiam
dabb
Jak wyrzucilem tego ifa
  1. <?php
  2. if ($_GET['go'] != ''){
  3. ?>
z poczatku kodu to wszystko zaczelo chodzic dobrze:) tzn narazie testuje i do konca nie wiem ale chodzi narazie
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.