PHP MySQL获取打印帮助

时间:2011-01-27 20:10:51

标签: php mysql class while-loop

基本上我有两个文件,group.php和class.Groups.php

我正在尝试打印发布到该组的最后20条消息,但是我无法弄明白,因为我对此很新!欢迎任何帮助。

我遇到的问题是我调用的函数是在类中。只是不知道如何进行while循环和打印。

也欢迎有关我的代码结构和建议的建议和反馈。布局。

感谢。

class.Groups.php

<?php include("config.php"); 

// Get Group Details

class Group {

 var $groupID;
 var $groupName;
 var $groupDescription;
 var $groupMessage;

 function group_details($ID) {
  $group_details = mysql_query("SELECT * FROM Groups WHERE GroupID = '".$ID."' LIMIT 1");
  if (mysql_num_rows($group_details) == 1) {
   $group_details_row = mysql_fetch_assoc($group_details);
   $this->groupID = $group_details_row ['GroupID'];
   $this->groupName = $group_details_row ['Name'];
   $this->groupDescription = $group_details_row ['Description'];
  }
 }

 function group_member($ID) {
  $group_member = mysql_query("SELECT * FROM GroupMembers WHERE GroupID = '".$ID."' AND UserID = '".$_SESSION['UserID']."' LIMIT 1");
  if (mysql_num_rows($group_member) == 1) {
   return 1;
  }
  else {
   return null;
  }
 }

 function group_messages($ID) {
  $group_messages = mysql_query("SELECT * FROM GroupMessages INNER JOIN Users ON Users.UserID = GroupMessages.UserID WHERE GroupID = '".$ID."' LIMIT 20");
  while ($group_messages_row = mysql_fetch_assoc($group_messages)) {
   $this->groupMessage = $group_messages_row['Message'];
  }
 }

}

?>

group.php

<?php include("includes/class.Groups.php");

$group = new Group;
$group->group_details($_GET['ID']);

if ($_SESSION['LoggedIn'] == 1) {
 if ($group->group_member($_GET['ID'])) {
  include("includes/header.php"); ?>
  <div id="container">
   <div id="menu"><?php include("includes/sidebar.php"); ?></div>
   <div id="main">
    <h2><?php echo $group->groupName; ?></h2>
    <p><?php echo $group->groupDescription; ?></p>
    <h3>Messages</h3>
    <?php 
     while ($group->group_messages($_GET['ID'])) {
      echo $group->groupMessage;
     }
    ?>
   </div>
  </div>
 <?php
 }
 else {
  echo "You are not member of this group.";
 }
}
?>

2 个答案:

答案 0 :(得分:1)

您无法在$group->group_messages()内使用while,因为:

  1. 它不会返回任何内容(返回评估为false
  2. 它会遍历一个调用中的所有行,而您希望它一次返回一行
  3. 您可以重写类代码以收集变量中的所有行,使用foreach循环返回它并使用// class.Groups.php function group_messages($ID) { $group_messages = array(); $group_messages = mysql_query("SELECT * FROM GroupMessages INNER JOIN Users ON Users.UserID = GroupMessages.UserID WHERE GroupID = '".$ID."' LIMIT 20"); while ($group_messages_row = mysql_fetch_assoc($group_messages)) { $group_messages[] = $group_messages_row['Message']; } return $group_messages; } // groups.php <h3>Messages</h3> <?php foreach ($group->group_messages($_GET['ID']) as $group_message) { echo $group_message; } ?> 循环对其进行迭代

    {{1}}

答案 1 :(得分:0)

在这段代码中你似乎有一个额外的大括号:

<?php 
                    while ($group->group_messages($_GET['ID'])) {
                        echo $group->groupMessage; }
                } ?>