我正在尝试添加像StackOverflow和Facebook使用的评论到我正在建立的网站。基本上,每个父帖都有自己的子评论。我打算用jQuery Ajax实现前端,但我正在努力解决如何最好地处理PHP后端。
由于每个表单字段具有相同的名称和ID会导致验证错误(可能是一些),我将父帖子的ID添加到每个表单字段。将传递的字段是commentID,commentBody,commentAuthor - 添加的ID将为commentTitle-12
等。
由于每次处理新帖子时$_POST
array_key都不同,我需要从-12
键中删除$_POST
(或者ID可能是什么),只留下commentTitle,commentBody等及其相关值。
实施例
$_POST['commentTitle-12']; //how it would be received after submission
$_POST['commentTitle']; //this is what I am aiming for
非常感谢
解 感谢CFreak -
//Basic example, not actual script
<?php
if (array_key_exists("send", $_POST)) {
$title = $_POST['title'][0];
$body = $_POST['body'][0];
echo $title . ', ' . $body;
}
?>
<html>
<body>
<form name="test" id="test" method="post" action="">
<input type="text" name="title[]"/>
<input type="text" name="body[]"/>
<input type="submit" name="send" id="send"/>
</form>
</body>
</html>
更新2 哎呀,有点忘了它的全部意义 - 独特的名字(虽然已经确定1)这不是真正必要的2)可能更好,对于这个应用程序,使用jQuery代替这样做)
//Basic example, not actual script
<?php
if (array_key_exists("send", $_POST)) {
$id = $_POST['id'];
$title = $_POST['title'][$id];
$body = $_POST['body'][$id];
echo $title . ', ' . $body;
}
?>
<html>
<body>
<form name="test" id="test" method="post" action="">
<input type="text" name="title[<?php echo $row['id'];?>]"/>
<input type="text" name="body[<?php echo $row['id'];?>]"/>
<input type="hidden" name="id" value="<?php echo $row['id']; //the ID?>"/>
<input type="submit" name="send" id="send"/>
</form>
</body>
</html>
答案 0 :(得分:5)
PHP有一个小技巧可以从HTML表单中获取数组甚至多维数组。在HTML名称中您的字段如下:
<input type="text" name="commentTitle[12]" value="(whatever default value)" />
(你可以使用变量或其他东西放在“12”中,如果你正在做的那样,关键是[]括号。
然后在PHP中你会得到:
$_POST['commentTitle'][12]
然后,您可以循环浏览注释并通过索引ID获取每个注释。
您也可以将其作为空方括号放在HTML中:
<input type="text" name="commentTitle[]" value="(whatever default value)" />
如果您不关心实际的ID值是什么,那么只会使它成为从0开始的索引数组。
希望有所帮助。
答案 1 :(得分:0)
您只需遍历$_POST
并搜索匹配的密钥:
function extract_vars_from_post($arr) {
$result = array();
foreach ($arr as $key => $val) {
// $key looks like asdasd-12
if (preg_match('/([a-z]+)-\d+/', $key, $match)) {
$result[$match[1]] = $val;
} else {
$result[$key] = $val;
}
}
return $result;
}
没有测试代码,不过