[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вывести данные из разных таблиц
dimonise
всем привет! столкнулся с проблемой есть 2 таблицы выбираю из них данные но никак не могу правильно оформить вывод. я думаю что не правильно составил запрос . да и вообще запутался помогите плиз!

$topic = mysql_query("SELECT `tid`,`title` FROM `for_topics` UNION SELECT `author_name`,`post` FROM `for_posts",$db);

while($topics = mysql_fetch_assoc($topic))
{

echo "<div id='center'><p class='example'><b>", $topics['title'] ,"</b></p><br><b> Разместил:", $topics['author_name.for_posts'],"</b><br>",$topics['post.for_posts'],"</div>";

}




Спустя 22 минуты, 1 секунда (20.05.2011 - 17:00) Krevedko написал(а):
а что вообще выдает ?

кавычки двойные сменить на одинарные. вместо запятых поставить точки и
author_name.for_posts
post.for_posts

поменять на author_name и post

Спустя 3 минуты, 28 секунд (20.05.2011 - 17:04) dimonise написал(а):
кавычки не причем, ставил и такие и такие. названия тоже поменял. выдает следующее - вместо того чтобы выдавать вместе title, author_name и post выдает сначала все title потом post а author_name вообще не выдает

Спустя 10 минут, 57 секунд (20.05.2011 - 17:15) Krevedko написал(а):
он у тебя не ругается на запятые ? 0_О

Спустя 1 минута, 49 секунд (20.05.2011 - 17:16) Krevedko написал(а):
echo '<div id="center">
<p class="example"><b>'
. $topics['title'] . '</b>
</p><br><b> Разместил:'
. $topics['author_name']. '
</b><br>'
. $topics['post'].'</div>';

Спустя 2 минуты, 7 секунд (20.05.2011 - 17:19) dimonise написал(а):
нет

Спустя 1 минута, 50 секунд (20.05.2011 - 17:20) dimonise написал(а):
попробовал так сделать -
$topic = mysql_query("SELECT `tid`,`title` FROM `for_topics`",$db );
$post = mysql_query("SELECT `author_name`,`post` FROM `for_posts",$db);

$tops = array();
$pos = array();

while($topics = mysql_fetch_assoc($topic))

{
$tops[] = $topics;

}

while($posts = mysql_fetch_assoc($post))

{
$pos[] = $posts;
}

$i = 0;
for($i=0;$i<count($tops);$i++)
{
echo "<div id='center'>". $tops['title'][$i] ."<br> Разместил:". $pos['author_name'][$i]."<br>".$pos['post'][$i]."</div>";

}


тоже безуспешно - вообще ничего не дает

Спустя 8 минут, 12 секунд (20.05.2011 - 17:29) Krevedko написал(а):
while($topics = mysql_fetch_assoc($topic))
{
print_r($topics);
}

напиши. посмотрим что в массиве

Спустя 22 секунды (20.05.2011 - 17:29) dimonise написал(а):
сделал еще так
$topic = mysql_query("SELECT `tid`,`title` FROM `for_topics`",$db );
$post = mysql_query("SELECT `author_name`,`post` FROM `for_posts",$db);

$tops = array();
$pos = array();

while($topics = mysql_fetch_assoc($topic))

{
$tops = $topics;

echo "<div id='center'>". $tops['title'] ;

while($posts = mysql_fetch_assoc($post))
{
$pos = $posts;
echo "<br> Разместил:". $pos['author_name']."<br>".$pos['post']."</div>";
}
}

выводит все НО в такой разнобой!

Спустя 2 минуты, 45 секунд (20.05.2011 - 17:32) Krevedko написал(а):
ну ессно...он тебе сначала внешний while выполнит одну итерацию, потом все итерации внутреннего, потом опять по новой

Спустя 51 секунда (20.05.2011 - 17:33) grant написал(а):
Неправильный запрос. У тебя таблицы должны быть связаны между собой по внешнему ключу, потом через JOIN или WHERE по ключу объединяй и получишь нормальную таблицу.

Спустя 3 минуты, 7 секунд (20.05.2011 - 17:36) dimonise написал(а):
была такая мысль.. спасибо всем!

Спустя 2 минуты, 38 секунд (20.05.2011 - 17:38) grant написал(а):
Цитата (dimonise @ 20.05.2011 - 14:36)
была такая мысль.. спасибо всем!

всмысле была? Так и надо делать) А так у тебя просто идет декартово произведение таблиц и в исходной получается таблца с набором записей из 1 и второй.

Спустя 11 минут, 46 секунд (20.05.2011 - 17:50) Krevedko написал(а):
логично. просто как я понял, у него записи совпадают по нумерации, т.е. пятая сверху одной соответствует пятой сверху в другой.
а так надо юзать JOIN ессно

Спустя 3 минуты, 28 секунд (20.05.2011 - 17:53) Krevedko написал(а):
"SELECT `tid`,`title`, `author_name`,`post` FROM `author_name` JOIN `for_posts` ON ...тут условие связи типа author_name.tid = for_posts.id''

Спустя 24 минуты, 43 секунды (20.05.2011 - 18:18) dimonise написал(а):
спасибо всем огромное!!!!
Быстрый ответ:

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