За последние 24 часа нас посетили 18732 программиста и 1603 робота. Сейчас ищут 869 программистов ...

Из формы в функцию

Тема в разделе "PHP и базы данных", создана пользователем rodion4657, 26 окт 2012.

  1. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Добрый вечер...подскажите можно ли передавать данные из формы в функцию?
    есть функция создающая форму
    Код (Text):
    1. function searchform(){
    2.     echo '<form name="search" action="' . $_SERVER['PHP_SELF'] . '?action=search" method="POST" align=center>';
    3.     echo 'Поиск...<br>';
    4.     echo '<input type="text" name="code" size="60" value="Введите критерий поиска...">';
    5.     echo '<input type="submit" name="submit" value="Поиск">';
    6.     echo '<input type="reset" name="reset" value="Очистить">';
    7.     echo '</form>';
    и функция в которой предполагается обрабатывать данные из формы
    Код (Text):
    1.  function show_list()
    2. {
    3. if (isset($_GET["action"])){
    4.    
    5.  
    6.   switch ($_GET["action"])
    7. { case "excel":to_excel();break;
    8.   case "search":searchform();break;}
    9.   }
    10.   if (!isset($_POST['code']))
    11.  
    12.  
    13.     $query = "SELECT technics.id,name_technics.name_techn,code,number, year_create, start_work,time_work,other
    14.               FROM technics,name_technics
    15.               WHERE technics.id_name_techn=name_technics.id
    16.               AND code LIKE '%".strtoupper($_POST['code'])."%'";
    17.              
    18.              $res = mysql_query($query) or die("Запрос ошибочный");
    19.    
    20.     echo '<h2 align="center">Техника</h2>';
    21.     echo '<table border="1" cellpadding="2" cellspacing="0" align="center">';
    22.     echo '<tr><th>ID</th><th>Наименование техники</th><th>Код</th>
    23.           <th>Номер</th><th>Год выпуска</th><th>Начало эксплуатации</th><th>Наработка</th><th>Примечание</th><th>Ред.</th><th>Удл.</th></tr>';
    24.     while ($item = mysql_fetch_array($res))
    25.     {
    26.         echo '<tr>';
    27.         echo '<td>' . $item['id']       . '</td>';
    28.         echo '<td>' . $item['name_techn'] . '</td>';
    29.         echo '<td>' . $item['code']     . '</td>';
    30.         echo '<td>' . $item['number']  . '</td>';
    31.         echo '<td>' . $item['year_create']     . '</td>';
    32.         echo '<td>' . $item['start_work']  . '</td>';
    33.         echo '<td>' . $item['time_work']     . '</td>';
    34.         echo '<td>' . $item['other']    . '</td>';
    35.        
    36.         echo '<td><a href="' . $_SERVER['PHP_SELF'] . '?action=editform&id=' . $item['id'] . '">Ред.</a></td>';
    37.         echo '<td><a href="' . $_SERVER['PHP_SELF'] . '?action=delete&id=' . $item['id'] .'">Удл.</a></td>';
    38.         echo '</tr>';
    39.        }
    40.        
    41.         echo '</table>';
    42.        
    43. }        
    в принципе все это работает, но вылетает следующее
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    if (!isset($_POST['code']))
    если НЕ
     
  3. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    если так
    то не работает вообще, вообщем
    Код (Text):
    1. $_POST['code']
    как я понял не определяется у меня...
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    значит нет его =)

    Добавлено спустя 42 секунды:
    var_dump($_POST)
     
  5. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    А что сделать, чтобы был))
     
  6. jenya777777

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

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    у тебя стоит проверка case "search":searchform();break;
    Как только ты отправляешь данные из формы, ты опять вызываешь эту форму. Где логика? Соответственно до поиска дело не доходит.
    PS Я так понял, это у тебя куски кода? а то у тебя везде не стоят открывающие и закрывающие скобки {}
     
  7. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    т.е. мне
    Код (Text):
    1. switch ($_GET["action"])
    2. { case "excel":to_excel();break;
    3.   case "search":searchform();break;}
    4.   }
    перенести в конец функции?
    а на счет фигурных скобок, это просто кусок кода...
     
  8. jenya777777

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

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Ты не понял, у тебя есть функция которая создает форму, потом при отправке ты опять ее вызываешь. Естественно у тебя все по кругу идет.Создай отдельную функцию, где будет обрабатываться твоя форма и написать например так
    Код (Text):
    1.  
    2. case "search":YouNewFunction();break;}