单击按钮时添加要搜索的字段

时间:2013-03-14 10:48:24

标签: php html mysql

我编写了两种表格。第一种形式是在提交时将字段添加到第二个表单。第二个表单将根据该表单中的字段生成查询。代码在这里

<?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>';
?>

这是我用于处理这两种表单的代码。但第一种形式只是工作一次。它只添加一个字段,使总字段为两个。当我单击添加第三个字段时,它不起作用。可能是什么问题和解决方案?

3 个答案:

答案 0 :(得分:1)

我想这只是一次工作,因为你正在重复使用ID。

IDs must be unique.

答案 1 :(得分:1)

您正在做的事情如下,

首先发布表单,然后设置发布值(if(isset($_POST["ad_field_button"])))。

现在当您再次发布表单时,旧值将根据其性质消失。

你能做什么。

  1. 使用session并在按钮上通过SESSION每次加载页面时将值存储在click
  2. 使用mysql将数据添加到表格和页面上从表格中加载数据并显示它。
  3. 您可以使用client-side language(即jQuery,javascript)
  4. 会话示例

    <?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>
    

答案 2 :(得分: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个属性 - 它们具有值。您可以通过获取<select>元素的值来访问该值。