我有一个页面,当满足某个条件时,它会从数据库中的1个表中检索记录。
我想要达到的目的是让用户有机会更新使用文本框显示的每条记录。
在用户点击“提交”后,我无法解释要继续处理的逻辑。按钮。
通常情况下,如果我更新一条记录(或静态记录数),我将使用适当数量的SQL语句。
由于记录的数量是动态生成的,一次更新所有内容的最佳方法是什么?我怎么知道首先要检索哪些记录要更新?
例如:
好的,我们有一张表,上面有学生ID(ID),姓名(SNAME),科目(SUBJ),每个科目的成绩(GRADE)和一般评论(评论)。
我希望检索所有获得A'并为每位学生写的UNIQUE祝贺词的学生的信息(例如,“好工作”,或者“祝贺'祝贺'祝贺& #39;,或者等等。)
我检索记录并将它们放在页面上,每个学生记录旁边都有一个文本框,用于输入评论。因为我不知道要制作多少文本框,所以我使用学生ID为文本框动态生成名称。用户现在为每个学生输入唯一的评论,然后点击提交。
现在,我应该如何使用每个文本框中输入的值更新这些记录?
我不知道哪些学生首先被检索 - 我怎么知道使用什么名字?我试图避免在提交后再次执行查询 - 但还有其他方法吗?
希望这个问题不会太混乱。
感谢
答案 0 :(得分:2)
进一步扩展早期答案: 你需要一个循环(例如foreach)来显示和保存textareas。如果textareas的名称包含学生ID,则无需知道名称,因为文本是通过主键(学生ID)插入数据库的。您可以将表单元素命名为数组,例如迭代它们(其中数字是ID):
<textarea name="comment[2345234]"></textarea>
<textarea name="comment[8957485]"></textarea>
按照@evan所述的方式阅读:
foreach((array)$_POST['comment'] as $studentId => $studentComment)
{
var_dump($studentId, $studentComment);
}
如果您将整个事情实现为自我请求表单(德语为Affenformular),您也可以只使用一个循环来保存和输出textareas。
“我不认为你理解我想要问的是什么。”也许你不明白答案,即使你说过。您不需要学生姓名来保存数据库记录。但如果你真的想提交它,你也可以使用隐藏的输入。
答案 1 :(得分:1)
使用foreach()
查找您关心的值,将它们放入数组中,然后处理数组。
答案 2 :(得分:1)
扩展@ Ignacio的答案,使其更容易理解:
foreach($_POST as $name_of_input => $value_of_input)
{
// do stuff - here is something so you can see the results after the submit
echo "$name_of_input :: $value_of_input <br>";
}