繁体   English   中英

如何使用html表单的输入针对显示结果(本身就是sql查询的输出)更新sql表中的字段?

[英]How to update a field in sql table with inputs from an html form against displayed results which are themselves output of an sql query?

我有一个如下所示的数据库。

Id Class  Name                Email                           Comments  
  1   4    Thomas Sheffield  tom@email.com  
  2   5    Natasha Rosewhite natasha@email.com  
  3   4    Jerome Manyville  jerry@email.com  
  4   6    Susan Carrey      suzzy@email.com 
  5   4    Selina Waterwall  selina@email.com 

我有一个php页面,可以查询特定类的名称并将其显示为html表。 html页面还将在每个显示名称的输入字段中输入注释。 单击提交按钮后,应在数据库中更新针对每个特定名称的注释。 我应用了以下逻辑-唯一的ID将被带到另一个php页面(由Submit按钮的action字段指示),然后使用$ _POST更新注释。

我使用了以下代码

 <?php
session_start();
$username = "Debo";
$password = "123456";
$hostname = "localhost"; 
$Idtemp = array();
$i=0;
$sql = "SELECT `Id`, `Name`, `Email` FROM `registration` WHERE `Class`=4";

$dbconnect=mysqli_connect($hostname, $username, $password, "test1")
 or die("unable to connect"); 

$result = mysqli_query($dbconnect, $sql);

ECHO "<table border=\"2\">
  <tr bgcolor=\"#cccccc\">
  <td width=\"100\">Id</td>
  <td width=\"200\">Name</td>
  <td width=\"100\">Email</td>
    <td align=\"center\" width=\"100\">COMMENTS</td>
</tr>";

while($row = mysqli_fetch_array($result))
{   ECHO "<tr><td width=\"100\">".$row['Id']."</td>";
    ECHO "<td width=\"200\">".$row['Name']."</td>";
    ECHO "<td width=\"100\">".$row['Email']."</td>";
    ECHO "<td align=\"center\"><input type=\"text\" name=\"comments[]\" size=\"50\"</td></tr>";
    $IDtemp[$i]=$row['Id'];
    $i++;};


ECHO"
<table>
<form action=\"processregistration.php\" method=\"post\">
<tr>
  <td colspan=\"8\" align=\"center\"><input type=\"submit\" name=\"submit\" value=\"Submit Feedback\"></td>
</tr>
</table>";

$_SESSION['CURRENTID']=$IDtemp;

?>

然后在提交时,转到

<?php

session_start();

$COMMENTS = array();
$ID = $_SESSION['CURRENTID'];
var_dump($ID);
if (isset($_POST['submit']))
{
$COMMENTS=$_POST['comments'];
};
$username = "Debo";
 $password = "123456";
 $hostname = "localhost"; 

foreach($ID as $key=>$n)
{
    $sql = "UPDATE  `test1`.`registration` SET `Comments` = $COMMENTS[$key] WHERE `registration`.`UID` = $n";
    var_dump($sql);

     $dbconnect=mysqli_connect($hostname, $username, $password, "test1")
    or die("unable to connect");
    mysqli_query($dbconnect, $sql);
if (mysqli_error($dbconnect))
{
    ECHO "Error Description:".mysqli_error($dbconnect);};

};

?>

我发现“评论”没有发布。 我在第10行收到通知'undefined index:comments'。

我究竟做错了什么? 我对php很陌生。 请帮忙。 另外,我试图实现自己想要达到的目标的方法是正确的还是有更好的方法?

问候。

看来您的comments[]输入不在您的<form> 将开始表单标签移动到HTML的开头应会修正未定义的索引通知:

ECHO "<form action=\"processregistration.php\" method=\"post\">
<table border=\"2\">
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM