0

这个问题可能看起来有点奇怪,但我会告诉你我的意思:)

因此,我制作了一个网页,其中包含授权用户(教师)发表的评论。那是另一页中的另一段代码,因此可以完美运行。当然,发表评论的人应该可以在出现错误等情况下更改自己的评论。

我设法在单独的文本区域中向用户展示了他自己的评论和他的评论。文本区域没有特定的名称,只是称为 txtComment,我如何使它们对每个评论都是唯一的(这很灵活,因为可以稍后添加评论)。我认为这就是为什么我在按下按钮后无法更新更改/调整的文本区域的问题。

我希望你们明白我想说什么:p

我主要将荷兰语单词更改为英语,所以如果因此出现拼写错误:)

这是代码:

<?php
$sqlKlas = "Select * from tblcomments WHERE ForWho='".$_SESSION['User']."' AND ForWho='6HA1' OR VoorWie='6HA2'";
$resultKlas = mysql_query($sqlKlas) or die(mysql_error());
if (isset($_POST['btnAdaptCommentKlas'])){
    while($rowKlas = mysql_fetch_array($resultKlas)){
        $CommentNr = $rowKlas['CommentNr'];

        $sqlUpdate = "Update tblcomments SET Comment='".$_POST['txtComment']."' WHERE CommentNr=$CommentNr";
        $resultUpdate = mysql_query($sqlUpdate) or die(mysql_error());

        echo "<tr>";
        echo "<td>";
        ?><textarea name="txtComment" cols="80" rows="5"><?php echo $rowKlas['Comment']; ?></textarea><?php
        echo "</td>";
        echo "<td>".$rowKlas['ForWho']."</td>";
        echo "<td>".$rowKlas['Datum']."</td>";
        echo "</tr>";
    }
}
else {
    while($rowKlas = mysql_fetch_array($resultKlas)){
        echo "<tr>";
        echo "<td>";
        ?><textarea name="txtComment" cols="80" rows="5"><?php echo $rowKlas['Comment']; ?></textarea><?php
        echo "</td>";
        echo "<td>".$rowKlas['ForWho']."</td>";
        echo "<td>".$rowKlas['Datum']."</td>";
        echo "</tr>";
    }
}
4

3 回答 3

1

我会做一些不同的事情 - 单独更新以列出评论。此外,您还必须设置包含评论 ID 的文本区域名称,例如我的示例:

<?php
$sqlKlas = "Select * from tblcomments WHERE ForWho='".$_SESSION['User']."' AND ForWho='6HA1' OR VoorWie='6HA2'";
$resultKlas = mysql_query($sqlKlas) or die(mysql_error());

if (isset($_POST['btnAdaptCommentKlas'])){
    foreach($_POST['txtComment'] as $key => $value) {
        $sqlUpdate = "UPDATE tblcomments SET Comment='".mysql_real_escape_string($value)."' WHERE CommentNr=".(int)$key;
        $resultUpdate = mysql_query($sqlUpdate) or die(mysql_error());
    }
}
while($rowKlas = mysql_fetch_array($resultKlas)){
    $CommentNr = $rowKlas['CommentNr'];
    echo "<tr>";
    echo "<td>";
    ?><textarea name="txtComment[<?php echo $CommentNr; ?>]" cols="80" rows="5"><?php echo $rowKlas['Comment']; ?></textarea><?php
    echo "</td>";
    echo "<td>".$rowKlas['ForWho']."</td>";
    echo "<td>".$rowKlas['Datum']."</td>";
    echo "</tr>";
}

另外,我建议不要使用mysql_*功能,而是使用PDO或至少mysqli_*代替。mysql_real_escape_string()强烈建议使用转义用户输入。

此外,使用MVC和分离数据操作(更新、获取、创建)和数据表示(在 HTML 模板中)会更好,更易于维护,以便进一步开发。

于 2012-11-29T13:16:33.750 回答
0

而不是txtComment使用txtComment[unique_id]. 这样你就可以做类似的事情

foreach(array_keys($_GET['txtComment']) as $id => $comment) { ...
于 2012-11-29T13:16:54.487 回答
0

然后试试这个

   $sqlUpdate = "Update tblcomments SET Comment='".$_POST['txtComment']."' WHERE OpmerkingNr='".$OpmerkingNr."' ";

并改变这个

  $sqlKlas = "Select * from tblcomments WHERE ForWho='".$_SESSION['User']."' AND ForWho='6HA1' OR VoorWie='6HA2'";

对此

  $sqlKlas = "Select * from tblcomments WHERE ForWho='".$_SESSION['User']."' AND (ForWho='6HA1' OR VoorWie='6HA2' )";

您还可以在此处检查用户是否已登录

     if (isset($_POST['btnAdaptCommentKlas'])){

尝试将其更改为

    if (isset($_POST['btnAdaptCommentKlas']) AND $_SESSION['User'] !=0 ){

obs:我建议你改用 PDO。

于 2012-11-29T13:37:12.460 回答