[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблемы с таблицей
Гость_Vladimir
Здравствуйте всем, опишу проблему, возможно кто-нибудь подскажет что я не так делаю.

имеется вот такой кусок проблемного кода

echo "<table border=1>
<tr><td style='text-align:center;font-weight:bold;'>Дата</td><td style='text-align:center;font-weight:bold;'>Тема</td><td style='text-align:center;font-weight:bold;'>Сообщение</td></tr>"
;

$sql="select mail_id from delivers where user_id=".$id[0].";";#данный запрос возвращает все ид писем
$sql=mysql_query($sql);
while ($mail_id=mysql_fetch_row($sql)){#пока есть ид - выводить в таблицу содержимое из бд по ид
$sql="select date,topic,content from mails where id=".$mail_id[0]." order by date;";
$sql=mysql_query($sql);
$mail=mysql_fetch_row($sql);

#$sql="select date,topic,content,id from mails where id=".$m[0].";";
#$sql=mysql_query($sql);
#$mail=mysql_fetch_row($sql);


echo "<tr><td>".$mail[0]."</td><td>".$mail[1]."</td><td>".$mail[2]."</td></tr>";
}
echo "</table><a href='index.php'>Вернуться на главную страницу</a>";


но почему то выводится только одна запись из бд, вот образец

Дата Тема Сообщение
18:50:24, 22-11-2010 tema 1 tema 1



Спустя 25 минут, 45 секунд (23.11.2010 - 09:15) linker написал(а):
$Sql = "SELECT `date`, `topic`, `content` FROM `delivers` "
. "INNER JOIN `mails` ON `id` = `mail_id` "
. "WHERE `user_id` = " . $id[0]);
$res = mysql_query($Sql);
while($row = mysql_fetch_assoc($res))
{
...
}

Спустя 6 минут, 51 секунда (23.11.2010 - 09:22) Гость_Vladimir написал(а):
получается вся проблема в sql, щас додумаю как поменять, у меня в delivers (id,mail_id,user_id) в mails(id,date,topic,content).

Спасибо за быстрый ответ

Спустя 15 минут, 12 секунд (23.11.2010 - 09:37) Guest написал(а):
В чем может быть проблема, когда я делал выборку ид, то получал в пхп только одну запись?

$sql="select mail_id from delivers where user_id=".$id[0].";";#данный запрос возвращает все ид писем, в бд запрос выводит 3 записи, а если написать вот так
$sql=mysql_query($sql);
$mail_id=mysql_fetch_row($sql)

echo count($mail_id)
, то выводит 1, т.е. запрос выбрал 1 запись вместо 3х, кто нибудь может объяснить?

Спустя 6 минут, 55 секунд (23.11.2010 - 09:44) linker написал(а):
потому что $mail_id реально содержит только один элемент, если вы хотите получить все mail_id, то делать это нужно в цикле
$mail_id = array();
while($row = mysql_fetch_assoc($sql))
{
$mail_id[] = $row['mail_id'];
}
echo count($mail_id);

Спустя 11 минут, 42 секунды (23.11.2010 - 09:56) Гость_Vladimir написал(а):
Благодарю, может Вы знаете и если не сложно в 2х словах поясните, почему mysql_fetch_row($res) при скл селекте по данным (имя, тема и т.п.) в цикле while выводит много строк, т.е. все результаты, а с ид только 1 результат?

Спустя 37 минут, 17 секунд (23.11.2010 - 10:33) linker написал(а):
mysql_fetch_row() и mysql_fetch_array(), mysql_fetch_assoc, mysql_fetch_object() ведут себя абсолютно одинаково - возвращают только одну запись из полученного результата от MySQL. Просто они возвращают эту запись по разному: массив с числовыми индексами, массив с числовыми и ассоциативными индексами, чисто ассоциативный массив, объект соответственно. Чтобы получить все записи из результата, нужно выполнить одну из этих функций в цикле, пока не будет возвращено значение FALSE.

Спустя 21 минута, 4 секунды (23.11.2010 - 10:54) Guest написал(а):
Понятно, спасибо
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.