За последние 24 часа нас посетили 17807 программистов и 1283 робота. Сейчас ищет 1431 программист ...

Помогите заменить switch case на if

Тема в разделе "PHP для новичков", создана пользователем VVVVV, 21 фев 2012.

  1. VVVVV

    VVVVV Активный пользователь

    С нами с:
    21 фев 2012
    Сообщения:
    4
    Симпатии:
    0
    Помогите пожалуйста, как заменить
    Код (Text):
    1.  
    2. Ob_start();
    3.    switch($_GET['p']){
    4.       case('cont'):
    5.          include './pages/cont.php';
    6.       break;
    7.       case('karta'):
    8.          include './pages/karta.php';
    9.       Break;
    10.       case('rom'):
    11.          include './pages/tea/tea_romas.php';
    12.       Break;
    13.       case('main'):
    14.          include './pages/main.php';
    15.       Break;
    16.       default:
    17.       case('lip'):
    18.          include './pages/tea/tea_lipa.php';
    19.       Break;
    на конструкцию типа If(isset($_GET['p']) и дальше что то, а потом if(file_exists("тут как-то подключить файл из папки через переменную" если у кто-то напишет образец буду благодарен
     
  2. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Рекомендую использовать "маппинг"
    Код (PHP):
    1. $action = isset($_GET['p']) ? $_GET['p'] : 'main';
    2. $map = array(
    3.     'cont' => './pages/cont.php',
    4.     'karta' => './pages/karta.php',
    5.     'rom' => './pages/tes/tea_romas.php',
    6.     'main' => './pages/main.php',
    7. );
    8. if (isset($map[$action)){
    9.     require $map[$action];
    10. }
    11. else {
    12.     header(/* 404 */ );
    13.     require '404.php';
    14. } 
     
  3. VVVVV

    VVVVV Активный пользователь

    С нами с:
    21 фев 2012
    Сообщения:
    4
    Симпатии:
    0
    но так все равно надо прописывать путь к каждому файлу отдельно, ведь можно сделать ссылку вида "?p=something" а потом подключать страницы один раз прописав if(file_exists('./папка со страницами/$p:.php')){include'./папка со страницами/$p:.php'}. Что то как то наподобе, может кто понял подскажет
     
  4. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
  5. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Тут даже и такое намутить удалось)))
    Код (PHP):
    1. switch($get)
    2. {
    3.     case true:
    4.     $array=array('file1','file2','file3');
    5.     for($i=0;$i<sizeof($array);$i++)
    6.     {
    7.         if($get==$array[$i])
    8.         {
    9.             $file=$get;
    10.         }
    11.     }
    12.     break;
    13.     default:$file='main';
    14. }
    15. if(file_exists($file.'.php'))
    16. {
    17.     require_once($file.'.php');
    18. }
    19.  
    Это так, "Полет мыслей" :)...

    Лучше через иф...

    Код (PHP):
    1. $array=array('file1','file2','file3');
    2. if($get)
    3. {
    4.     for($i=0;$i<sizeof($array);$i++)
    5.     {
    6.         if($get==$array[$i])
    7.         {
    8.             $file=$get;
    9.             break;
    10.         }
    11.     }
    12. }else{$file='main';}
    13. if(file_exists($file.'.php'))
    14. {
    15.     require_once($file.'.php');
    16. } 
     
  6. VVVVV

    VVVVV Активный пользователь

    С нами с:
    21 фев 2012
    Сообщения:
    4
    Симпатии:
    0
    Код (Text):
    1. <?php
    2.     define('CONTENT', './content/');
    3.     define ('EXT', '.php');
    4.  
    5.     ob_start();
    6.    
    7.     $page = isset($_GET['page']) ? $_GET['page'] : 'default';
    8.    
    9.     if(file_exists(CONTENT . $page . EXT))
    10.         include CONTENT . $page . EXT;
    11.        
    12.     $content = ob_get_contents();
    13.     ob_clean();
    14.    
    15.     echo $content;
    16. ?>
    Вот что мне было нужно
     
  7. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Это была ссылка на комментарий php.net
    пример безопасного кода:
    http:// ru2.php.net/manual/ru/function.file-exists.php#56732
    Извините, не знал что ссылка на php.net битая, так что придётся ручками её скопировать в адресную строку
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Знаете, ли, если делать на одной названной $_GET переменной в одном месте допустим ?page=1 (для страниц), ?page=name (для файлов) то ваш вариант не покатит :))


    Ну если вы хотите это делать без написания, чем будет плох glob() ? И pathinfo() - проверить расширения файлов и дальше работать с этими файлами?

    Я лишь дал просто как пример.

    С кешем тоже поаккуратнее :))