两个表单,在单个PHP文件中有多个提交按钮

时间:2012-07-09 20:50:18

标签: php html forms

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

  1. 上部表单允许在mysql数据库中搜索元素,例如,名称
  2. 下面的表单显示数据库中与此名称相关联的数据
  3. 如果我按下上部表单的“搜索”按钮,则会显示下面的表单,文本字段将填入数据库中属于此名称的数据。如果我将用户名更改为其他值并再次按“搜索”,则会显示与新记录关联的数据,依此类推。

    下面的表单还有一个“更新”按钮,允许将对文本框(在下半部分)所做的更改传输到数据库。

    现在,我遇到以下问题:在我的脚本中,我首先将name的值(从上面的表单)设置为“”。当我按下“搜索”按钮时,表格的下半部分显示,相应的数据显示在下半部分。当我按“更新”按钮时,与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 
    }
    ?>
    

1 个答案:

答案 0 :(得分:0)

我认为您缺少的是创建一个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值。 希望这可以帮到你。