mysql_fetch_assoc показывает одну запись в цикле - PullRequest
0 голосов
/ 20 сентября 2011

Я пытаюсь отобразить все комментарии, сделанные на определенной странице публикации. Все вызовы переменных работают нормально (включая функцию timeago), но показывает только самый первый комментарий.

$com_sql = "SELECT  comments.com_id,
                    comments.com_topic,
                    comments.com_user,
                    comments.com_content,
                    comments.com_date,
                    users.userid,
                    users.username,
                    users.usernombre,
                    COUNT(com_topic) AS com_top
            FROM comments
            LEFT JOIN users
            ON comments.com_user = users.userid
            WHERE com_topic = " . mysql_real_escape_string($_GET['id']) . "
            GROUP BY com_topic
            ORDER BY com_id DESC";

$com_result = mysql_query($com_sql);

if(!$com_result)
{echo 'The COMMENTS table could not be displayed.';}
else
{   if(mysql_num_rows($com_result) == 0){ echo 'No comments yet!';}
}

// Now I should show them one by one:
// Should $com_row be com_top??

while($com_row = mysql_fetch_assoc($com_result))
{ echo '<table width="100%" height="253" border="4">
<tr><td width="9%" rowspan="2" valign="top"><p>IMG</p>
<p>editar</p><p>&nbsp;</p><p>&nbsp;</p></td><td width="63%">';

$com_user = stripslashes($com_row['username']);
$com_usernombre = stripslashes($com_row['usernombre']);
echo $com_user;
echo $com_usernombre;

echo '</td><td width="4%" height="24"><div align="right"> <p>PM</p>
</div></td><td width="24%"><div align="right">';

$referencedate = strtotime($com_row['com_date']);
$result = timeago($referencedate); 
echo 'Ago';
echo $result ;

echo '</div></td></tr><tr><td colspan="3" valign="top">';

$com_content = stripslashes($com_row['com_content']);
echo $com_content;
echo '</td></tr>';
}
echo '</table>';

Я использую тот же шаблон в других частях моей страницы, и они работают нормально: - / Что я делаю неправильно? СЧЁТ в порядке ?? Я правильно использую while ($ com_row = mysql_fetch_assoc ($ com_result)) ?? Надеюсь, вы можете помочь мне: -)

СПАСИБО

1 Ответ

1 голос
/ 20 сентября 2011

Ваш запрос выберет одну строку для каждого отдельного значения com_topic. Это связано с использованием GROUP BY. Если вы пропустите предложение GROUP BY, то вам также следует опустить агрегатный столбец COUNT(com_topic) as com_top.

В остальном все выглядит нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...