php从多个复选框更新数据

发布于 2024-09-19 17:43:23 字数 2281 浏览 7 评论 0原文

我有一个名为 horse 的表,我想创建一个表单来编辑 horse_name 和 horse_height,但数据无法更新,事实证明更新查询存在问题,当我打印查询以显示值时, horse_name 值等于 horse_height

<body bgcolor="#009933">
<?php
     include("connection.php"); 
     $conn = oci_connect($UName,$PWord,$DB);
     if(empty($_POST["check"]))
     {
    $query="SELECT * FROM horse ORDER BY horse_name";
    $stmt = oci_parse($conn, $query);
    oci_execute($stmt);


   ?>
<center> <font face="Arial" size="3"><b>Horse Details</b></font>
</center>

<form method="post" action="multiplehorsemodify.php">  
<table border="1" align="center">
  <tr>
  <th>Horse ID</th>
  <th>Name</th>
  <th>Height</th>
  <th>Edit?</th>

  </tr>


  <?php 
        while($row = oci_fetch_array ($stmt))
        {
  ?>
         <tr>
         <td><?php echo $row["HORSE_ID"]; ?></td>
         <td align="center">
         <input type="text" size="24" 
            name="<?php echo $row["HORSE_ID"]; ?>" 
            value="<?php echo $row["HORSE_NAME"]; ?>"></td>

         <td align="center">
         <input type="text" size="5" 
            name="<?php echo $row["HORSE_ID"]; ?>" 
            value="<?php echo $row["HORSE_HEIGHT"]; ?>"></td>
         <td align="center">

<input type="checkbox" name="check[]" value="<?php echo $row["HORSE_ID"]; ?>">

      </td>

         </tr>
  <?php 
        }
  ?>
  </table>
<center>
    <input type="submit" 
      value="Update Selected Titles" />
  </center>
</form>
<?php
    oci_free_statement($stmt);
     }
     else
     {
         foreach($_POST["check"] as $horse_id)  
         {
             echo $horse_id;
             $query = "UPDATE horse set horse_name = ".$_POST[$horse_id]."horse_height = ".$_POST[$horse_id]." WHERE horse_id = '".$horse_id."'";
             echo $query;
            $stmt = oci_parse($conn,$query);
            oci_execute($stmt);
            header("location: multiplehorsemodify.php");
         }
     }
     oci_close($conn);
?>

</body>

i have a table called horse, i would like to create a form to edit the horse_name and horse_height, but the data cannot be updated, it turns out there is a problem with the update query, when i print the query to show the values, the horse_name value is equal to horse_height

<body bgcolor="#009933">
<?php
     include("connection.php"); 
     $conn = oci_connect($UName,$PWord,$DB);
     if(empty($_POST["check"]))
     {
    $query="SELECT * FROM horse ORDER BY horse_name";
    $stmt = oci_parse($conn, $query);
    oci_execute($stmt);


   ?>
<center> <font face="Arial" size="3"><b>Horse Details</b></font>
</center>

<form method="post" action="multiplehorsemodify.php">  
<table border="1" align="center">
  <tr>
  <th>Horse ID</th>
  <th>Name</th>
  <th>Height</th>
  <th>Edit?</th>

  </tr>


  <?php 
        while($row = oci_fetch_array ($stmt))
        {
  ?>
         <tr>
         <td><?php echo $row["HORSE_ID"]; ?></td>
         <td align="center">
         <input type="text" size="24" 
            name="<?php echo $row["HORSE_ID"]; ?>" 
            value="<?php echo $row["HORSE_NAME"]; ?>"></td>

         <td align="center">
         <input type="text" size="5" 
            name="<?php echo $row["HORSE_ID"]; ?>" 
            value="<?php echo $row["HORSE_HEIGHT"]; ?>"></td>
         <td align="center">

<input type="checkbox" name="check[]" value="<?php echo $row["HORSE_ID"]; ?>">

      </td>

         </tr>
  <?php 
        }
  ?>
  </table>
<center>
    <input type="submit" 
      value="Update Selected Titles" />
  </center>
</form>
<?php
    oci_free_statement($stmt);
     }
     else
     {
         foreach($_POST["check"] as $horse_id)  
         {
             echo $horse_id;
             $query = "UPDATE horse set horse_name = ".$_POST[$horse_id]."horse_height = ".$_POST[$horse_id]." WHERE horse_id = '".$horse_id."'";
             echo $query;
            $stmt = oci_parse($conn,$query);
            oci_execute($stmt);
            header("location: multiplehorsemodify.php");
         }
     }
     oci_close($conn);
?>

</body>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

土豪我们做朋友吧 2024-09-26 17:43:24

好吧,您在查询中将 nameheight 都设置为 $_POST[$horse_id]

$query = "UPDATE horse set horse_name = ".$_POST[$horse_id]."horse_height = ".$_POST[$horse_id]." WHERE horse_id = '".$horse_id."'";

甚至还为输入元素指定了相同的名称:

name="<?php echo $row["HORSE_ID"]; ?>"

输入元素的名称成为 PHP 端 $_POST 数组的键。因此,为输入字段指定正确的名称,例如:

 <input type="text" size="24" 
        name="horse_name[<?php echo $row["HORSE_ID"]; ?>]" 
        value="<?php echo $row["HORSE_NAME"]; ?>">

 <input type="text" size="5" 
        name="horse_height[<?php echo $row["HORSE_ID"]; ?>]" 
        value="<?php echo $row["HORSE_HEIGHT"]; ?>">

并将查询更改为

"UPDATE horse set horse_name = ".mysql_real_escape($_POST['horse_name'][$horse_id])
."horse_height = ".mysql_real_escape($_POST['horse_name'][$horse_id])
." WHERE horse_id = '".$horse_id."'"

Well, you set name and height both to $_POST[$horse_id] in your query:

$query = "UPDATE horse set horse_name = ".$_POST[$horse_id]."horse_height = ".$_POST[$horse_id]." WHERE horse_id = '".$horse_id."'";

And you even give the input elements the same name:

name="<?php echo $row["HORSE_ID"]; ?>"

The name of an input element becomes the key of the $_POST array on the PHP side. So give the input fields the right names, e.g.:

 <input type="text" size="24" 
        name="horse_name[<?php echo $row["HORSE_ID"]; ?>]" 
        value="<?php echo $row["HORSE_NAME"]; ?>">

 <input type="text" size="5" 
        name="horse_height[<?php echo $row["HORSE_ID"]; ?>]" 
        value="<?php echo $row["HORSE_HEIGHT"]; ?>">

and change your query to

"UPDATE horse set horse_name = ".mysql_real_escape($_POST['horse_name'][$horse_id])
."horse_height = ".mysql_real_escape($_POST['horse_name'][$horse_id])
." WHERE horse_id = '".$horse_id."'"
私藏温柔 2024-09-26 17:43:24

您的两个表单字段具有相同的名称($row["HORSE_ID"]),这会导致问题!

Both of your form fields have the same name ($row["HORSE_ID"]) which will cause problems!

榆西 2024-09-26 17:43:24
 <input type="text" size="24" 
                name="HorseName"
id="name-<?=row["HORSE_ID"] ?>" 
                value="<?php echo $row["HORSE_NAME"]; ?>"></td>

             <td align="center">
             <input type="text" size="5" 
                name="HorseHeight" 
id="height-<?=row["HORSE_ID"] ?>"
                value="<?php echo $row["HORSE_HEIGHT"]; ?>"></td>
             <td align="center">

这样,您仍然可以使用 id 使特定马的复选框唯一

更新:

继续对每匹马执行此操作:

<input type="text" size="24" name="HorseName"  value="<?= $row["HORSE_NAME"] ?>" />
<input type="text" size="5" name="HorseHeight"value="<?= $row["HORSE_HEIGHT"]; ?>" />
<input type="hidden" name="HORSE_ID" value="<?= $row["HORSE_ID"] ?>" />

然后您的 php 和查询可以如下所示:

$HORSE_NAME = $_POST['HORSE_NAME'];
$HORSE_HEIGHT = $_POST['HORSE_HEIGHT'];
$HORSE_ID = $_POST['HORSE_ID'];

"UPDATE table_name SET HORSE_NAME = $HORSE_NAME, HORSE_HEIGHT=$HORSE_HEIGHT WHERE HORSE_ID = $HORSE_ID"
 <input type="text" size="24" 
                name="HorseName"
id="name-<?=row["HORSE_ID"] ?>" 
                value="<?php echo $row["HORSE_NAME"]; ?>"></td>

             <td align="center">
             <input type="text" size="5" 
                name="HorseHeight" 
id="height-<?=row["HORSE_ID"] ?>"
                value="<?php echo $row["HORSE_HEIGHT"]; ?>"></td>
             <td align="center">

This way, you can still use the id to make the checkboxes for the particular horse unique

UPDATE:

Go ahead and do it like this for each horse:

<input type="text" size="24" name="HorseName"  value="<?= $row["HORSE_NAME"] ?>" />
<input type="text" size="5" name="HorseHeight"value="<?= $row["HORSE_HEIGHT"]; ?>" />
<input type="hidden" name="HORSE_ID" value="<?= $row["HORSE_ID"] ?>" />

Then your php and query can look like this:

$HORSE_NAME = $_POST['HORSE_NAME'];
$HORSE_HEIGHT = $_POST['HORSE_HEIGHT'];
$HORSE_ID = $_POST['HORSE_ID'];

"UPDATE table_name SET HORSE_NAME = $HORSE_NAME, HORSE_HEIGHT=$HORSE_HEIGHT WHERE HORSE_ID = $HORSE_ID"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文