通过在循环时单击mysql选择查询的不同结果上的链接来显示表单

时间:2012-02-13 12:43:31

标签: php jquery mysql

我有这段代码:

CSS文件:

#answerform {
    display: none;
}

PHP文件:

  <head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>

<?php   
    $sql="SELECT comment FROM comments 
ORDER BY comments.id DESC";

$result = mysql_query($sql) or trigger_error ( mysql_error ( )); 

while($row = mysql_fetch_array($result))
  {
  echo "<div>";
  echo $row['comment'];
  echo "</br>";

  // Answer to comment
    echo "<a id=hrefanswer href='#'> Answer </a>";

    // Answer form
    echo "<div id=answerform>";
    echo "<input type='text' value='' name='answer' id='answer'/>";
    echo "</div>";


  echo "</div>";
  }
  ?>

<script>

       $('#hrefanswer').click(function(){
          $(this).hide();
          $('#answerform').show();
          });  

</script>

我使用代码显示一些注释,使用mysql select查询,并在每个注释中都有一个链接(Answer)。点击链接时我想隐藏链接,同时显示一个表格。问题是这只发生在最后一条注释中,而不是在select mysql查询的每个注释中。为什么呢?

1 个答案:

答案 0 :(得分:0)

问题是因为您复制了循环中添加的div的ID - ID必须是唯一的。

更改adiv以使用班级:

echo "<a class=hrefanswer href='#'> Answer </a>";
// more code
echo "<div class=answerform>";

然后像这样修改你的jQuery:

$('.hrefanswer').click(function() {
    $(this).hide().next(".answerform").show();
});  

此外,您的PHP文件顶部缺少</script>,您应将每个HTML属性括在引号中。