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

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

4

3 回答 3

1

我想它只能工作一次,因为您正在重用 ID。

ID必须是唯一的。

于 2013-03-14T10:51:35.323 回答
1

你在做什么如下,

过帐第一个表单,然后设置过帐值 ( if(isset($_POST["ad_field_button"])))。

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

你可以做什么。

  1. 通过on 按钮在每次页面加载时使用session和存储值。SESSIONclick
  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>
于 2013-03-14T10:52:11.947 回答
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>元素的值来访问该值。

于 2013-03-14T11:10:45.267 回答