Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как бы вывести данные из двух таблиц, да так
 
 автор: nowpol   (21.02.2009 в 00:27)   письмо автору
 
 

Пытаюсь вывести на сайте новости (все последнии). Новости выводятся в цикле.

<?
$result = mysql_query("SELECT * FROM novosti",$db);
if (!$result)
{
printf ("<p>Запрос не выполнен</p>");
exit();
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
do

{
printf ("
<table align='center' width='450' border='1'>
<tr>
<td width='100' valign='top' background='#CCCCCC'>Фото для новости</td>
<td width='350'><table width='350' border='0.1'>
<tr>
<td height='107' valign='top' background='#CCCCCC'>
<p align=left>Название: <strong>%s</strong></p>
<p align=left>%s</p>
</td>
</tr>
<tr>
<td valign='top' background='#CCCCCC'>Добавлено: %s</td>
</tr>
</table>
</td>
</tr><br>
</table>
",$myrow["name"],$myrow["mini_opisanie"],$myrow["date"]);
}
while ($myrow = mysql_fetch_array($result));
}
else
{
printf ("Данные не найдены");
exit();
}
?>

Т.е. это обычный цикл, который выводит данные из 1 таблицы.
Задача в том, что
<td width='100' valign='top' background='#CCCCCC'>Фото для новости</td>
Заместо надписи "фото для новости" я хочу выводить фото для новсти :)
Создана специальная таблица, которая хранит ссылки на фотографии для всех новостей
Т.е. мы имеем 2 таблицы
1)
NOVOSTI:
novost_id (Идентификатор, автоинкримент)
name (имя новости)
mini_opisanie
date (дата новости)

2)
FOTO:
id (автоинкримент)
novost_id
adres_foto

По идеи эти таблицы ведь нужно соединить, и вытаскивать из них данные, потом загонять в тот цикл, но проблема в том, что когда я их просто соединяю join ом, где novost_id одной таблицы = novost_id другой таблицы выводятся не все новости, а только те, для которых есть фотка (так как они соединяются по этому идентификатору). Как сделать так, чтобы новости выводились все, а фотка для этой новости выводилась в том случае, если в таблицы с фотками есть хоть одна фотка для этой новости?


Думал насчет того, что при добавлении новости, сделать так, что если фотка к ней не загружена, автоматически вставляется фотка на которой написано что-нибудь типа (нет изображения), Но тогда при добавлении этой новости, запись будет происходить в 2 поля, ну а если получится так, что фотка не запишется, а новость запишется, то она все-равно не отобразится. Как тут лучше поступить?) тем более получится так, что в базе с фотками будет записано куча пустышек. Хотелось бы сделать оптимальный запрос. Спасибо.

  Ответить  
 
 автор: а-я   (21.02.2009 в 00:37)   письмо автору
 
   для: nowpol   (21.02.2009 в 00:27)
 

попробуйте использовать LEFT JOIN

  Ответить  
 
 автор: nowpol   (21.02.2009 в 01:43)   письмо автору
 
   для: а-я   (21.02.2009 в 00:37)
 

Блин, как все просто оказалось.. Спасибо :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования