如何使用来自 html 表单的输入根据显示的结果更新 sql table 中的字段,这些结果本身就是 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 页面,可以查询特定 class 的名称并将其显示为 html table。
html 页面还有一个针对每个显示名称的输入字段,可以在其中输入评论。点击提交按钮后,数据库中应更新针对每个特定名称的评论。
我应用了以下逻辑 - 唯一的 Id 将被转移到另一个 php 页面(由提交按钮的操作字段指示),然后使用 $_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);};
};
?>
我发现 'comments' 没有发布。
我在第 10 行收到通知 'undefined index: comments'。
我做错了什么?
我对 php 很陌生。请帮忙。另外,我尝试实现我想要达到的目标的方法是正确的还是有更好的方法?
问候。
您的 comments[]
输入似乎不在您的 <form>
中。将开始表单标签移动到 HTML 的开头应该修复未定义的索引通知:
ECHO "<form action=\"processregistration.php\" method=\"post\">
<table border=\"2\">
...
我有一个如下所示的数据库。
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 页面,可以查询特定 class 的名称并将其显示为 html table。 html 页面还有一个针对每个显示名称的输入字段,可以在其中输入评论。点击提交按钮后,数据库中应更新针对每个特定名称的评论。 我应用了以下逻辑 - 唯一的 Id 将被转移到另一个 php 页面(由提交按钮的操作字段指示),然后使用 $_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);};
};
?>
我发现 'comments' 没有发布。 我在第 10 行收到通知 'undefined index: comments'。
我做错了什么? 我对 php 很陌生。请帮忙。另外,我尝试实现我想要达到的目标的方法是正确的还是有更好的方法?
问候。
您的 comments[]
输入似乎不在您的 <form>
中。将开始表单标签移动到 HTML 的开头应该修复未定义的索引通知:
ECHO "<form action=\"processregistration.php\" method=\"post\">
<table border=\"2\">
...