在一个PHP文件中有两个带有多个提交按钮的表单


Two forms with multiple submit buttons in single PHP file

我正在尝试使用PHP编写一个动态表单。我想要一个包含两个表单的网页:

  1. 上面的表单允许在mysql数据库中搜索元素,例如名称
  2. 下表显示数据库中与此名称关联的数据

如果我按下上面表单的"搜索"按钮,那么下面的表单就会显示出来,并且文本字段会填充数据库中属于该名称的数据。如果我将用户名更改为其他值,然后再次按"搜索",则会显示与新记录相关的数据,依此类推

下部表单还有一个按钮"更新",可以将对文本框(下部)所做的更改转移到数据库中。

现在,我遇到了以下问题:在我的脚本中,我最初将name的值(从大写形式)设置为"。当我按下"搜索"按钮时,表格的下部会显示出来,相应的数据也会显示在下部。当我按下"更新"按钮时,与名称相关的文本字段将设置为空字符串。这是因为在我的脚本中,我最初将名称设置为"。在这种情况下,我希望在上表中输入的数据不发生更改,即保持不变。

我想,我错过了什么。这可能有一个简单的解决方案,而我正在做一些根本错误的事情。如果你能帮我就太好了。

这就是我尝试的。。。我删除了很多细节,但我想这可以让你知道我要做什么。注意,整个代码都在update.php文件中。

<?php
function search_bus($mysql, $name)
{
 // do some stuff here...
}
function update_bus($mysql, $b_id)
{
    // do some stuff here...
}
// some global variables
$b_id = 0;
$username = ""; // username of business
// get b_id that corresponds to username
if (isset($_REQUEST['search']))
{
    $b_id =0; // business id
    if (isset($_POST['user']))
    {
        $username = $_POST['user'];
        $b_id = search_bus($mysql, $username);
    }
}
elseif(isset($_REQUEST['update']))
{
    update_bus($mysql, $b_id);
}

?>
<h2>Search:</h2> 
<form name="search_bus" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Username: <input type="text" name="user" value="<?= htmlentities($username) ?>"/>
<input type="submit" value="Suchen" name="search"/>
</form>
<?php 
if($b_id != 0) 
{
?>
<h2>Data:</h2> 
<form name="business_design" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<-- some form follows here -->
<?php 
}
?>

我认为您缺少的是创建一个HTML隐藏字段来保留Name变量的值。

<input type="hidden" name="name" value="<?php print $nameVar ?>" />

将此输入添加到两个表单中,这样无论用户单击哪个按钮,都可以保留该值。

希望这能有所帮助。

添加代码以验证

<h2>Search:</h2>  
<form name="search_bus" method="post" 
action="<?php echo $_SERVER['PHP_SELF'];?>">
Username: <input type="text" name="user" value="<?= htmlentities($username) ?>"/>
<input type="hidden" name="b_id" value="<?php print $b_id?>" />
<input type="submit" value="Suchen" name="search"/> 
</form>  

<?php  if($b_id != 0)  { ?>  
<h2>Data:</h2>  
<form name="business_design" method="post" action="<?php echo $_SERVER['PHP_SELF'];>">      
<input type="hidden" name="b_id" value="<?php print $b_id?>" />
<-- some form follows here -->  
<?php  } ?> 
Dont initialize $b_id if it already comes into the http request.
if (!isset($_POST['b_id']))
{
 $b_id = 0; 
}          
else
{
 $b_id = $_POST['b_id'];
}

通过这种方式,您可以始终记住上次选择的b_id值。希望这能帮助到你。