我正在论坛页面上工作。现在发生了什么,当用户提交对主题的回复时:该回复被提交给所有评论。与主题相比,我需要检查数组值的位置。例如主题3,用户回复:它只回复该主题,而不回复其他主题。
<form enctype="metadata/form-data" method="post">
<?php
$reply = $_POST["reply"];
$submit = $_POST["submit"];
$uID = $newRow["ID"];
$cID = $comment["comment_ID"];
$ucID = $comment["ID"];
//this is where I've been stuck.
if(isset($submit)){
foreach($reply as $myReply){
echo $myReply.'<br />';
}
}
else{
echo "No result here.";
}
?>
<div class="textInput">
<textarea name="reply[]" maxlength="255"></textarea>
</div>
<div class="submitInput">
<input type="submit" name="submit" value="reply" />
</div>
</form>
答案 0 :(得分:0)
我没有清楚地知道你正在使用什么,但我会做一个我确定会有所帮助的例子。我假设您正在使用MYSQLI
步骤1)将您的原始帖子存储在一个表格中(原始帖子从现在开始将是OP)
步骤2)创建一个表格以便回复
步骤3)创建关系(外键)
步骤4)获取您想要显示的原始帖子(或者只是一个?)
步骤5)获取相关回复
步骤6)将相关回复作为OP数组中的子数组。
首先,获得OP。 第4步
<?php
//In case of multiple:
$getOP = "SELECT * FROM original_posts WHERE ID IN(1,2,3)";
//In case of single:
$getOP = "SELECT * FROM original_posts WHERE ID = 1";
?>
现在,用PHP获取这些ID。
<?php
//in case of multiple:
$IDArray = array();
$getOPResult= mysqli_query($con, $getOP);
foreach($getOPResult as $row){
$IDArray[] = $row['ID'];
}
//In case of single, no need for a loop
$result = $getOPResult->fetch_object();
$OPID = $result->ID;
?>
现在,跟进回复第5步
<?php
//In case of multiple
$getReplies = "SELECT * FROM table_replies WHERE OPID IN(".implode(',', $IDArray).")";
//In case of single
$getReplies = "SELECT * FROM table_replies WHERE OPID = $OPID;
?>
现在,我们将融合阵列。使用单个OP即可完成此步骤:
<?php
$myReplies = mysqli_query($con, $query);
$fusedArray = array();
foreach($myReplies as $row){
//put the replies into an array with the OP's ID as a key
$fusedArray[$row['OPID']] = $row;
}
?>
<?php
$html = '';
foreach($getOPresult as $OP){
//set replies array
$thisOPID = $OP['ID'];
$relatedReplies = $fusedArray[$thisOPID];
//From this point on, you can easily loop over the replies for every OP
$html .= '<div class="myPost">';
$html .= 'I'm going to output OP data here';
$html .= '<div class="myReplies">';
//Start looping over the replies and outputting it here
foreach($relatedReplies as $reply){
$html .= 'I'm rendering reply data here';
}
$html .= '</div>';
$html .= '</div>';
}
echo $html;
?>
现在,这并不是非常具体,因为我没有太多的信息,但逻辑是存在的,这种逻辑在大多数情况下应该足够了。
在开始讨论之前,请记住这只是结构和逻辑的一个例子。
但是你想要输出你的HTML,编码风格也是如此。是否要使用procedural mysqli
或者如何保护它免受MYSQL注入等等,与此问题无关,因此不应讨论。我只是试图通过物流来帮助OP。
度过愉快的一天,我希望这有助于:)
修改强>
对不起,您似乎已经改变了您的问题。
在这种情况下,我建议您在表单中使用隐藏字段,如下所示:
<input type="hidden" name="OPID" value="$IDoftheOP"/>
现在,无论何时加载主题,只需使用其ID填充隐藏输入的值。在PHP中读取formdata时,只需将其读出来即可获得所需的ID。