我有一个HTML表,其中包含任意数量的行,每行有4列。并且想法是让用户编辑这些行中的任何一行然后保存结果。然后应将这些更改保存到数据库中。但我有几个问题。
我在stackoverflow上发现了一些帖子,说明你应该怎么做,但在我的情况下没有一个完全有用。这是用户编辑我的表时的样子(虽然我现在只有一行,但可能有几行)。
my table http://oi58.tinypic.com/2gvq9nb.jpg
当然还有一个提交按钮,它将我带到一个名为“handle_edit.php”的php文件。
现在关于这个主题的another post on stackoverflow表明我应该使用某种foreach循环来编辑HTML表中每行的SQL表中的一行。我在“handle_edit.php”中的这个循环版本现在看起来像这样:
foreach( $_POST['appearances'] as $appearances ) {
$goals = $_POST['goals'];
$assists = $_POST['assists'];
$name = ??????? //How to I do this?
mysqli_query($connection, "UPDATE players
SET appearances=$appearances, goals=$goals, assists=$assists
WHERE name=$name");
}
首先。 foreach
循环需要包含一个数组表达式,编译器告诉我现在不是这种情况。但我不知道如何计算行数。在我上面链接的主题中,他们正在做类似的事情,但我不认为我完全理解他们正在做什么,因为我的foreach
循环不起作用。
其次,由于表中的name列不是输入字段,我不知道如何将其与其余信息一起发送到此页面。我需要以某种方式执行此操作,因为我想根据提供的名称确定要编辑的行。这个SQL表中的每个玩家都有一个唯一的玩家ID,我能以某种方式使用它吗?
我可能以错误的方式接近这个吗?有更可行的解决方案吗?
如果您需要任何其他代码,请告诉我。
提前致谢!
答案 0 :(得分:3)
首先,名称变量。
您需要在表单中添加<input type='hidden' name='name' value='<*YOUR WAY OF GETTING THE NAME*>'/>
。如果这样做,您可以使用$_POST['name']
获取foreach循环中名称的值。有关如何为php创建表单的更多信息,请查看此处:http://www.w3schools.com/php/php_forms.asp
其次,你使用的sql字符串是错误的。您无法在字符串中输入变量名称。我建议首先声明sql字符串:
$sql = "UPDATE players SET appearances=" . $appearances . ", goals=" . $goals . ", assists=" . $assists . " WHERE name=". $name;
然后进行连接并执行如下查询:
mysqli_query($connection, $sql);
对于foreach问题,我建议使用var_dump()
方法调试,看看你是否真的得到了$_POST['appearances']
的数组。
我希望这会有所帮助。