За последние 24 часа нас посетили 20207 программистов и 1714 роботов. Сейчас ищет 1501 программист ...

case Parse error

Тема в разделе "PHP для новичков", создана пользователем kzpromo, 12 июл 2010.

  1. kzpromo

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

    С нами с:
    26 июн 2010
    Сообщения:
    12
    Симпатии:
    0
    Помогите решить проблемку! В общем выдает ошибку Parse error на строке case <NAME> :
    перебровал различные вариации, не помогает

    В общем нужно чтоб в кейсе инклудился файл модуля из базы. название модулей хранится в бд
    PHP:
    1. <?php
    2. switch ( $_GET['action'] ) {
    3. case "workers" :
    4. include ENGINE_DIR . '/admin_inc/workers/workers.php';
    5. break;
    6.  
    7. case "module" :
    8. include ENGINE_DIR . '/admin_inc/module/module.php';
    9. break; 
    10.  
    11. $query = mysql_query("SELECT * FROM ".PREFIX."_modules ORDER by `id`");
    12. if(mysql_num_rows($query))
    13. {
    14. while($data = mysql_fetch_array($query))
    15.  {
    16. define ( '<NAME>', totranslit($data['name']) );
    17.  
    18. case <NAME> :
    19. include ENGINE_DIR . '/admin_inc/'.<NAME>.'/'.<NAME>.'.php';
    20. break; 
    21.  }
    22. }
    23.  
    24. default :
    25. if(empty($_GET['action']))
    26. include ENGINE_DIR . '/admin_inc/main.php';
    27. else
    28. include ENGINE_DIR . '/modules/error.php';
    29. break;
    30. }
    31. else
    32. include ENGINE_DIR . '/admin_inc/main.php';
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    а имена констант можно разве такими делать?зачем вайл?и почему он между кейсами?
     
  3. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Это что такое? Синтаксис РНР читали хоть?
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    дико извеняюсь CASE внутри while =)
     
  5. kzpromo

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

    С нами с:
    26 июн 2010
    Сообщения:
    12
    Симпатии:
    0
    читал, но видимо плохо)))

    ну дело в том, что в базе хранятся названия модулей.

    а мне нужно заинклудить модули в кейсах. вообще это возможно или я опять перемудрил что-то :-[
     
  6. kzpromo

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

    С нами с:
    26 июн 2010
    Сообщения:
    12
    Симпатии:
    0
    дайте вразумительный ответ или совет, куда глядеть!?
     
  7. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    почему просто не сравнить$_GET['action'] и $data['name'] , если равны то инклудить ?
     
  8. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Тут все неверно построено.
    1. У тебя куски кода находятся внутри switch, но не принадлежат ниодному из case (строки 11-22)
    2. if/else неверно построены - if находится внутри switch, else - вне его. Куча синтаксических ошибок, проще заново переписать.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    пипец макроны :D
     
  10. kzpromo

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

    С нами с:
    26 июн 2010
    Сообщения:
    12
    Симпатии:
    0
    PHP:
    1. <?php
    2. $query = mysql_query("SELECT * FROM ".PREFIX."_modules WHERE name='".mysql_real_escape_string($_GET['action'])."'");
    3. switch ( $_GET['action'] ) {
    4. case "workers" :
    5. include ENGINE_DIR . '/admin_inc/workers/workers.php';
    6. break;
    7.  
    8. case "module" :
    9. include ENGINE_DIR . '/admin_inc/module/module.php';
    10. break; 
    11.  
    12.  
    13.  
    14. default :
    15.  
    16. if(empty($_GET['action']))
    17. include ENGINE_DIR . '/admin_inc/main.php';
    18. elseif(mysql_num_rows($query))
    19. {
    20. $data = mysql_fetch_array($query);
    21. define ( "NAME", totranslit($data['name']) );
    22. include ENGINE_DIR . '/admin_inc/'.NAME.'/'.NAME.'.php';
    23. }
    24. else
    25. include ENGINE_DIR . '/modules/error.php';
    26. break;
    27. }
    в общем сделал так! огромное спасибо Padaboo
     
  11. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    сейчас у вас 1 модуль загружается первый пришедший из ресурса бд + зачем делать константу?
     
  12. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    сразу на автора DLE или битрикса тренируется :D
     
  13. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    угу и свич кейс карман не тянет :D
     
  14. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Так и гоняли гдето тут на форумах, свитч/кейс проигрывает иф/елсе, если условий немного.
     
  15. kzpromo

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

    С нами с:
    26 июн 2010
    Сообщения:
    12
    Симпатии:
    0
    Luge в точку)
     
  16. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    да ну это тоже самое, что print_f и do while у одного нехорошего человека, switch case видел только во всяких обертках над
    GD и то лучше бы какую нибудь фабрику применяли
     
  17. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    никогда не понимал смысла таких функций для служебного пользования, если есть iconv("…", "…//TRANSLIT", $text);
     
  18. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    наслаждайся :D
    PHP:
    1. <?php
    2.  
    3. require("includes/include.php");
    4.  
    5. if(!in_array($user['US_ID'],$allowed_admin))
    6.     ErrorMessage('You are not allowed to change anything');
    7.  
    8. $cmd = isset($_POST['CMD'])?trim($_POST['CMD']):trim($_GET['cmd']);
    9.  
    10. switch ($cmd) {
    11.     ///////////////////////////////////////////////////////////////////////////
    12.     case "admin_delete":    // Admin: Delete user
    13.         if (!$user['US_ADMIN'])
    14.             ErrorMessage("Access denied.");
    15.  
    16.         $db->delete("account_types",array(
    17.             array("FIELD"=>"AT_ID","QUALIFIER"=>"EQ","VALUE"=>intval($_GET['id']))
    18.         ));
    19.  
    20.         Header("Location: ".$gl_site_secured."account_types.php?cmd=admin_list");
    21.  
    22.         break;
    23.  
    24.     ///////////////////////////////////////////////////////////////////////////
    25.     case "admin_edit":      // Admin: Show edit user blank
    26.         if (!$user['US_ADMIN'])
    27.             ErrorMessage("Access denied.");
    28.  
    29.         if (intval($_GET['id'])>0 &&
    30.             $db->find("account_types",array(
    31.                 array("FIELD"=>"AT_ID", "QUALIFIER"=>"EQ", "VALUE"=>intval($_GET['id']))
    32.             ))==1 && $db->row(0,$account_type)) {
    33.             $page->assign($account_type);
    34.         } else {
    35.             $page->assign("AT_ID","0");
    36.         }
    37.  
    38.         $page->display("account_types_admin_edit.tpl");
    39.        
    40.         break;
    41.  
    42.     ///////////////////////////////////////////////////////////////////////////
    43.     case "admin_store":     // Admin: Store account type info
    44.         if (!$user['US_ADMIN'])
    45.             ErrorMessage("Access denied.");
    46.  
    47.         if (intval($_POST['AT_ID'])>0) {
    48.             // Update existing account_type
    49.             if (!$db->update("account_types",array(
    50.                 "AT_NAME"        => $_POST['AT_NAME'],
    51.             ), array(
    52.                 array("FIELD"=>"AT_ID", "QUALIFIER"=>"EQ", "VALUE"=>intval($_POST['AT_ID']))
    53.             )))
    54.                 ErrorMessage("Strange error occurs during updating of account type...");
    55.         } else {
    56.             // Insert new account type
    57.             if (!$db->insert("account_types",array(
    58.                 "AT_NAME"           => $_POST['AT_NAME'],
    59.             )))
    60.                 ErrorMessage("Strange error occurs during insertion of account type...");
    61.         }
    62.  
    63.         Header("Location: ".$gl_site_secured."account_types.php?cmd=admin_list");
    64.  
    65.         break;
    66.  
    67.     ///////////////////////////////////////////////////////////////////////////
    68.     case "admin_list":      // Admin: Show list of account types
    69.         if (!$user['US_ADMIN'])
    70.             ErrorMessage("Access denied.");
    71.  
    72.         if ($_GET['order'])
    73.             $order = mysql_real_escape_string(trim(substr($_GET['order'],0,30)));
    74.         else if ($_COOKIE['account_types_order'])
    75.             $order = mysql_real_escape_string(trim(substr($_COOKIE['account_types_order'],0,30)));
    76.         else
    77.             $order = "";
    78.  
    79.         setcookie("account_types_order",$order, time()+60*60*24*365);   // Set for 1 year
    80.         $page->assign("account_types_order",$order);
    81.  
    82.         $db->find("account_types",array(), $order);
    83.  
    84.         $i=0;
    85.         $account_types = array();
    86.         while ($db->row($i++,$row)) {
    87.             $status = ($row['CU_ALLOWED']?"Normal":"Blocked");
    88.             $account_types[] = array_merge($row, array(
    89.                 "status"      => $status,
    90.                 "table_class" => ($i%2?"table_odd":"table_even")
    91.             ));
    92.         }
    93.  
    94.         $page->assign ("account_types",$account_types);
    95.         $page->display("account_types_admin_list.tpl");
    96.        
    97.         break;
    98.  
    99.     ///////////////////////////////////////////////////////////////////////////
    100.     default:    // Invalid command
    101.         ErrorMessage("Requested URL is invalid.");
    102. }
    103. ?>
     
  19. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Luge
    это откуда?
    осталось только найти GOTO где нибудь в ооп коде и вместо java se пойду изучать java ee ^^
     
  20. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    гото я тебе пока не покажу — не встречал нигде ещё, но из такого дерьма 80% самописных сайтов состоит.

    зы. учитывая появление goto в последних версиях учебники ещё не обновились, вот года через 3-4…
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я люблю свич-кейс... А чем он плох? или я не понял шутки...