Php 仅在一个WHILE循环结果上显示div

Php 仅在一个WHILE循环结果上显示div,php,javascript,jquery,mysql,html,Php,Javascript,Jquery,Mysql,Html,我有一个while循环,显示select查询的结果。然后,对于查询返回的每个结果,都有一个链接,单击该链接后,将显示一个消息表单。再次单击链接,消息表单将被隐藏。它是使用JQuery插件制作的。现在的问题是,如果我单击了链接,所有结果都将显示消息表单,而不是仅显示一个消息表单,它应该来自单击链接的结果。代码如下所示: PHP+HTML <?php $query = mysql_query(......) or die(mysql_error()); while($row =

我有一个while循环,显示select查询的结果。然后,对于查询返回的每个结果,都有一个链接,单击该链接后,将显示一个消息表单。再次单击链接,消息表单将被隐藏。它是使用JQuery插件制作的。现在的问题是,如果我单击了链接,所有结果都将显示消息表单,而不是仅显示一个消息表单,它应该来自单击链接的结果。代码如下所示:

PHP+HTML

<?php
    $query = mysql_query(......) or die(mysql_error());
    while($row = mysql_fetch_assoc($query)){
        $id = $row['Id'];
        echo "<a class='hideMessageForm' href='#foo?id=" . $row['Id'] . "'>" . $row['Name'] . "</a>" .       
       "<div id='foo' class='showMessageForm'>
           <form action='process.php' method='post'>
              <input type='hidden' name='id' value='" .$id "'/>
              <input type='text' name='message' value=''/>
              <input type='submit' name='sendMessage' value='Send Message'/>
           </form>
       </div>";
    }
?>
让我解释一下我想发生的事情

例如,查询返回3个结果结果1、2、3。每个结果都显示指向foo div的链接。如果我在结果1中单击了该链接,那么结果2和结果3也将弹出消息表单。从3个结果中的任何一个单击链接将显示3个消息表单。我只想在链接被选中的结果是唯一一个弹出的消息形式。谢谢大家!

这就是你想要的

"<form action='process.php' method='post'>
              <input type='hidden' name='id' value='".$id".'/> // Here was error 
              <input type='text' name='message' value=''/>
              <input type='submit' name='sendMessage' value='Send Message'/>
</form>"
您正在显示/隐藏类的所有元素。您只想显示或隐藏单击的链接的下一个元素。看到您的PHP代码,我假设div将始终是链接之后的下一个元素

$(document).ready(function(){

    $(".showMessageForm").hide();
    $(".hideMessageForm").show();

    $('.hideMessageForm').click(function(){
    $(this).next(".showMessageForm").slideToggle();
    });

 });

php/mysql在php/html的格式上有一些错误。我纠正了他们

<?php
$query = mysql_query(......) or die(mysql_error());
while($row = mysql_fetch_assoc($query)){
    $id = $row['Id'];
    echo "<a class='hideMessageForm' href='#foo" . $row['Id'] . "'>" . $row['Name'] . "</a>" .       
   "<div id='foo" . $row['Id'] . "'' class='showMessageForm'>
       <form action='process.php' method='post'>
          <input type='hidden' name='id' value='" . $row['Id'] . "'/>
          <input type='text' name='message' value=''/>
          <input type='submit' name='sendMessage' value='Send Message'/>
       </form>
   </div>";
}
?>
css

.showMessageForm { display: none;}
.opened { display: block; }

和一个实时的

可能会使用。在单击另一个链接之前删除?@RPM如何?很抱歉,我对Jquery非常陌生。不知道您想从这里得到什么。您将生成一长串标签,其中包含从数据库中提取的ID号。然后输出一个带有从查询字符串中提取的ID的表单?这两者之间有什么关系?你能提供更多细节吗?你是说当你点击一个弹出窗口时,它会显示所有的结果,而不仅仅是链接的结果?如果是的话-听起来像是PHP错误。或者,你是说你只想一次点击其中一个链接?如果您可以链接一个实例,可能会有所帮助。单击链接后,您的数据是否会进入showMessageForm?它与以前点击的数据重叠,对吗?然后,只需在clickfunction$'.showMessageForm'.remove之后添加此项;请不要介意,这对我来说非常有效。只有一个输入错误。在我用你的代码替换我的代码后,表单现在总是显示在屏幕上,无法隐藏。该链接也消失了。请查看我发布的JSFIDLE链接的工作演示。这是您想要的吗?另外,要分配的id是动态插入的。是的,这只是PHP代码生成的一个示例输出。我刚刚用HTML替换了PHP变量,以模拟从PHP输出的HTML代码。很抱歉我之前的评论。它现在工作得很好!非常感谢你!我真的很感激你的帮助!我使用了您的代码,但单击链接不会显示消息formCheck your php/html格式化。正如我发布的,您在那里有几个错误。而且很有趣。。喜欢我的男朋友。。但他在别处给出了答案。
$(".hideMessageForm").click(function() {
var dropD = $(this).attr("href");
if ($(dropD + ".opened").length) { 
$(".opened").slideToggle(300).removeClass("opened");
} else {
$(".opened").slideToggle(300).removeClass("opened");
$(dropD).slideToggle(300).addClass("opened");
}   
return false;
});
.showMessageForm { display: none;}
.opened { display: block; }