2013-03-14 2 views
1

Я кодирую для двух форм. Первая форма заключается в том, чтобы добавить поле во вторую форму при его отправке. Вторая форма будет генерировать запрос в соответствии с полями в этой форме. Код находится здесьДобавить поля для поиска при нажатии кнопки

<?php 
$i=0; 
print '<form action="search.php" method="post" ><input name="ad_field_button" type="submit" value="Add Field" /></form>'; 
print '<form action="results1.php" method="post" style="width:550px">'; 
print '<table border="0"><tr><td>'; 
print 'Field Name <select name="field_list'.$i.'" size="1"><option selected="selected">Select...</option> 
     <option id="Id" name="id'.$i.'">Id</option> 
     <option id="Name" name="name'.$i.'">Name</option> 
     <option id="Nick Name" name="nickname'.$i.'">Nick Name</option> 
     <option id="Pet" name="pet'.$i.'">Pet</option> 
     <option id="Disease" name="disease'.$i.'">Disease Associated</option> 
</select></td>'; 
print '<td>Operator <select name="operator_list'.$i.'" size="1"><option selected="selected">Select...</option> 
     <option id="Equal" name="equal'.$i.'">=</option> 
     <option id="Gthan" name="gthan'.$i.'">></option> 
     <option id="Lthan" name="lthan'.$i.'"><</option> 
     <option id="Like" name="like'.$i.'">LIKE</option> 
</select></td>'; 
print ' <td>Query <input name="ad_search_query'.$i.'" type="text" /></td>'; 
print ' <td>Condition <select name="cond_list'.$i.'" size="1"><option selected="selected">Select...</option> 
     <option id="And" name="and'.$i.'">AND</option> 
     <option id="Or" name="or'.$i.'">OR</option> 
</select></td></tr>'; 
if(isset($_POST["ad_field_button"])) 
{ 
$i++; 
print '<tr><td>'; 
print 'Field Name <select name="field_list'.$i.'" size="1"><option selected="selected">Select...</option> 
     <option id="Id" name="id'.$i.'">Id</option> 
     <option id="Name" name="name'.$i.'">Name</option> 
     <option id="Nick Name" name="nickname'.$i.'">Nick Name</option> 
     <option id="Pet" name="pet'.$i.'">Pet</option> 
     <option id="Disease" name="disease'.$i.'">Disease Associated</option> 
</select></td>'; 
print ' <td>Operator <select name="operator_list'.$i.'" size="1"><option selected="selected">Select...</option> 
     <option id="Equal" name="equal'.$i.'">=</option> 
     <option id="Gthan" name="gthan'.$i.'">></option> 
     <option id="Lthan" name="lthan'.$i.'"><</option> 
     <option id="Like" name="like'.$i.'">LIKE</option> 
</select></td>'; 
print ' <td>Query <input name="ad_search_query'.$i.'" type="text" /></td>'; 
print ' <td>Condition <select name="cond_list'.$i.'" size="1"><option selected="selected">Select...</option> 
     <option id="And" name="and'.$i.'">AND</option> 
     <option id="Or" name="or'.$i.'">OR</option> 
</select></td>'; 
} 
print '</table>'; 
print ' <input name="ad_s_button" type="submit" value="Search" />'; 
print '</form>'; 
?> 

Это мой код для работы обеих форм. Но первая форма работает только один раз. Он просто добавляет одно поле, в котором полные поля равны двум. Когда я нажимаю, чтобы добавить третье поле, это не сработает. Что может быть проблемой и решением для этого?

ответ

1

Ваше решение должно пройти ряд текущих строк с новым запросом строки:

<?php 
$i=0; 
$maxid = isset($_POST['max_id'])?$_POST['max_id']+1:0; 
print '<form action="search.php" method="post" ><input type="hidden" name="max_id" value="' . $maxid . '" /><input name="ad_field_button" type="submit" value="Add Field" /></form>'; 
print '<form action="results1.php" method="post" style="width:550px">'; 
print '<table border="0">'; 
for($i=0;$i<=$maxid;$i++){ 
    print '<tr><td>'; 
    print 'Field Name <select name="field_list['.$i.']" size="1"><option selected="selected">Select...</option> 
      <option id="Id" value="id">Id</option> 
      <option id="Name" value="name">Name</option> 
      <option id="Nick Name" value="nickname">Nick Name</option> 
      <option id="Pet" value="pet">Pet</option> 
      <option id="Disease" value="disease">Disease Associated</option> 
    </select></td>'; 
    print '<td>Operator <select name="operator_list['.$i.']" size="1"><option selected="selected">Select...</option> 
      <option id="Equal" value="equal">=</option> 
      <option id="Gthan" value="gthan">></option> 
      <option id="Lthan" value="lthan"><</option> 
      <option id="Like" value="like">LIKE</option> 
    </select></td>'; 
    print ' <td>Query <input name="ad_search_query['.$i.']" type="text" /></td>'; 
    print ' <td>Condition <select name="cond_list['.$i.']" size="1"><option selected="selected">Select...</option> 
      <option id="And" value="and">AND</option> 
      <option id="Or" value="or">OR</option> 
    </select></td></tr>'; 
} 
print '</table>'; 
print ' <input name="ad_s_button" type="submit" value="Search" />'; 
print '</form>'; 
?> 

Следует также отметить, что <option> теги не могут иметь name a ttributes - у них есть значения. Вы получаете доступ к значению, выбирая значение элемента <select>.

+0

Это дает мне Уведомление: Неопределенный индекс: field_list в C: \ wamp \ www \ My Project \ search.php –

+0

Вы должны установить его как строгий. Я обновил ответ, чтобы обработать это - добавлено 'isset ($ _ POST ['field_list']) &&' в третьей строке кода. –

+0

Теперь он работает, но только один раз. Он должен работать каждый раз при нажатии кнопки ad_field_button. Не могли бы вы рассказать мне, как это сделать? –

1

Я предполагаю, что он работает только один раз, потому что вы повторно используете идентификаторы.

IDs must be unique.

1

Что вы делаете, как показано ниже,

Первая форма размещена затем размещены значения устанавливаются (if(isset($_POST["ad_field_button"]))).

Теперь, когда вы отправляете форму снова, тогда старое значение исчезнет в соответствии с его природой.

Что вы можете сделать.

  1. Используйте session и хранить значения в загрузке страницы SESSION каждый раз через click на кнопку.
  2. Используйте mysql, чтобы добавить данные в таблицу и на странице загрузить выборку из таблицы и отобразить ее.
  3. Вы можете использовать client-side language (т.е. JQuery, JavaScript)

Пример сеанса

<?php session_start(); ?> 

<form action="" method="post"> 
    //fields goes here 
    <?php 
     if(FORM IS POSTED) 
     { 
      if(isset($_SESSION['counter']) && $_SESSION['counter'] != "") 
      { 
       $_SESSION['counter'] = $_SESSION['counter'] + 1; 
      } 
      else 
      { 
       $_SESSION['counter'] = 1; 
      } 
     } 

     for($i=0;$i <= $_SESSION['counter'];$i++) 
     { 
      //repeat fields here 
     } 
    ?> 

</form> 
+0

Я новичок в php, поэтому применяю только основные вещи. Я не знаю, как использовать СЕССИЯ. Во-вторых, я собираюсь использовать форму для получения запросов от пользователя и поиска mysql. –

+0

@ user2034908 Я добавил пример кода, используя сеанс –

+0

@ user2034908 всегда приветствую чувак. –

Смежные вопросы