我编写了两种表格。第一种形式是在提交时将字段添加到第二个表单。第二个表单将根据该表单中的字段生成查询。代码在这里
<?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>';
?>
这是我用于处理这两种表单的代码。但第一种形式只是工作一次。它只添加一个字段,使总字段为两个。当我单击添加第三个字段时,它不起作用。可能是什么问题和解决方案?
答案 0 :(得分:1)
我想这只是一次工作,因为你正在重复使用ID。
答案 1 :(得分:1)
您正在做的事情如下,
首先发布表单,然后设置发布值(if(isset($_POST["ad_field_button"]))
)。
现在当您再次发布表单时,旧值将根据其性质消失。
你能做什么。
session
并在按钮上通过SESSION
每次加载页面时将值存储在click
。mysql
将数据添加到表格和页面上从表格中加载数据并显示它。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>
答案 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>
元素的值来访问该值。