在一个表单中有多个按钮,每个按钮都应该能够更新数据库

having multiple buttons in one form and every button should be able to update database

本文关键字:按钮 数据库 更新 一个 表单      更新时间:2023-09-26

嗨,朋友们,请告诉我哪里错了,因为即使更新查询成功执行,数据库仍然没有变化谢谢

这是表单代码

echo'<form action="processor.php" method="post" id ="post_form">';
echo '<input type="hidden" name= "status" id="status" value="">';
$upload_arr=array("1");
foreach($upload_arr as $upload_id)
{
    echo '<input type="button" name="accept-<?=$upload_id?>"   value="accept"             onclick="submit_this(this.name)"/><br>';
    echo    '<input type="button" name="reject-<?=$upload_id?>"  value="reject"  onclick="submit_this(this.name)"/><br>';
    echo    '<input type="button" name="saccept-<?=$upload_id?>"   value="saccept" onclick="submit_this(this.name)"/><br>';
    echo    '<input type="button" name="sreject-<?=$upload_id?>"   value="sreject"       onclick="submit_this(this.name)"/><br>';
 }
echo '</form>';

注意:这里我使用了 $upload_id 一个具有行 [上传 id] 的 php 变量,即它就像第一个图像的接受 1,拒绝 1,saccept1 和 sreject1,对于第二个图像它是 accept2 拒绝 2 等等

现在是处理器的代码.php

$status_pass = isset($_POST['status'])?$_POST['status']:NULL;
if(!empty($status_pass)){
$status_arr = explode('-', $status_pass);
$action  = $status_arr[0];
$upload_id = $status_arr[1];
if($action == 'accept'){
    $status = 1;
}
if($action == 'reject'){
    $status = 2;
}
if($action == 'saccept'){
    $status = 3;
}
if($action == 'sreject'){
    $status = 4;
}
echo $status;
$sql="UPDATE upload SET status='$status' where upload_id = '$upload_id' ";
echo "update success";
 $result = mysql_query("$sql") or die("Invalid query: " . mysql_error());
}
表单

中的

<form action="processor.php" method="post" id ='post_form'>
  <input type="hidden" name= "status" id="status" value="">
  <?php
    foreach($upload_arr as $upload_id){
  ?>
      <input type="button" name="accept-<?=$upload_id?>"   value="accept" onclick='submit_this(this.name);'/><br>
      <input type="button" name="reject-<?=$upload_id?>"  value="reject" onclick='submit_this(this.name);'/><br>
      <input type="button" name="saccept-<?=$upload_id?>"   value="saccept" onclick='submit_this(this.name);'/><br>
      <input type="button" name="sreject-<?=$upload_id?>"   value="sreject" onclick='submit_this(this.name);'/><br>
  <?php
    }
  ?>
</form>
<script>
function submit_this(name){
    document.getElementById('status').value = name;
    document.getElementById('post_form').submit();
}
</script>

在你的 PHP 文件中

<?php
$status_pass = isset($_POST['status'])?$_POST['status']:NULL;
if(!empty($status_pass)){
    $status_arr = explode('-', $status_pass);
    $action  = $status_arr[0];
    $upload_id = $status_arr[1];
    if($action == 'accept'){
        $status = 1;
    }
    if($action == 'reject'){
        $status = 2;
    }
    if($action == 'saccept'){
        $status = 3;
    }
    if($action == 'sreject'){
        $status = 4;
    }
    $sql="UPDATE upload SET status='$status' where upload_id = '$upload_id' ";
    //execute sql here
}

?>

你能用$_POST["accept".$upload_id]

_POST["accept'.$upload_id."]吗

不要对 $upload_id 输入标签使用"引号,然后它会正常工作

你的代码存在一些问题

第一

如果要多个提交表单,键入shuold be按钮,可以使用javascript来连接提交表单,而在提交之前,还可以将一些值传递给隐藏的输入字段,作为您的示例,您可以设置隐藏输入值="accept'.$upload_id。

第二

在您的 PHP 文件中,

$sql="更新上传设置状态='1'";

没有地方条件,当然,这将更新您的所有记录。