[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод из бд 2 таблицы одновременно
jalvar
В таблице com_content хранятся записи и в ячейке category id категории из другой таблицы.
В таблице com_content_category хранятся категории.
При выводе 2 таблиц наченаются глюки. Выводится 1 запись в которой только название категории.
$sql = '
SELECT SQL_CALC_FOUND_ROWS
*

FROM
`com_content`
ORDER BY date DESC, id DESC

LIMIT
'
. (($cur_page - 1) * $items_per_page) .', '. ((int) $items_per_page) .'';

// Исполнение запроса
$query=$GLOBALS['db']->query($sql);
while ( $row=$GLOBALS['db']->fetch_array($query) )
$cat=$GLOBALS['db']->super_fetch_array("SELECT * FROM com_content_category WHERE id='".$row['id']."'");

echo
'
<div class="post" id="post-1">
<h2 class="title"><a href="http://xtemplate.ru/wordpresslive/?p=1" rel="bookmark">'
.$row["name"].'</a></h2>
<div class="meta"><br />Категория <a href="index.php?component=content&category='
.$cat["cat_id"].'" rel="category">'.$cat["cat_name"].'</a>, автор admin - Фев 28, 2010</div>
<div class="entry">
'
.$row["text"].'
</div>
<div class="meta"><br /></div><div class="comments"><a href="index.php?component=content&view='
.$row["id"].'">1 Комментарий. »</a></div>
<div class="date">Фев<br />2</div>
</div>
'
;




Спустя 2 часа, 9 минут, 34 секунды (18.07.2010 - 22:16) jalvar написал(а):
Не ужели ни кто не знает?

Спустя 8 часов, 56 минут, 19 секунд (19.07.2010 - 07:12) Michael написал(а):
Ну мы во первых не знаем тонкостей работы super_fetch_array. Наверное делает запрос и возвращает первую строку результата.

Значит, что заметил:
1) Запросы в цикле - нехорошо. Эти данные можно получить и одним запросом
SELECT     con.*, cat.nazv 
FROM `com_content` сon, `com_content_category` cat
WHERE con.id = cat.id
ORDER BY con.date DESC, con.id DESC
LIMIT




2) com_content_category WHERE id='".$row['id']."'"
А что id поле не целочисленное у тебя?

Спустя 3 часа, 55 минут, 23 секунды (19.07.2010 - 11:08) jalvar написал(а):
Нет полностью численное. Я юмор этого не понял что за con и cat `com_content` сon, `com_content_category` cat

И выводить массивом row как? 2 таблицы одновременно

Спустя 4 минуты, 29 секунд (19.07.2010 - 11:12) jalvar написал(а):
С твоим запросом следуйщие возникло
$query=$GLOBALS['db']->query($sql);
if ( !$query ) die('Bad SQL-query: <br /><pre>'. $sql .'</pre><p>'. mysql_error() .'</p>');

Bad SQL-query:
SELECT con.*, cat.nazv
FROM `com_content`, `com_content_category`
WHERE con.id = cat.id
ORDER BY con.date DESC, con.id DESC
LIMIT
0, 10

Unknown table 'con'

Спустя 10 минут (19.07.2010 - 11:22) Michael написал(а):
Это не мой запрос. Мой был с:
FROM `com_content` сon, `com_content_category` cat
- псевдонимы назначил, чтобы не писать везде длинное `com_content`.id =

Цитата
Нет полностью численное.

ну значит вместо WHERE id='".$row['id']."'" надо
WHERE id=". (int)$row['id'];
- это если с моим вариантом не разберешься.

Спустя 12 минут, 26 секунд (19.07.2010 - 11:34) jalvar написал(а):
Почему он на запрос ругается.? ((((

Спустя 38 минут, 29 секунд (19.07.2010 - 12:13) jalvar написал(а):
Следуйщая проблема название категории выводит только в 1 записи
<?
$cur_page = isset($_GET['page']) ? (int) $_GET['page'] : 0;

// Текущая страница не может быть меньше единицы
if ( $cur_page < 1 ) $cur_page = 1;

// Количество записей на странице
$items_per_page = 10;

// Запрос на выборку
$sql = '
SELECT t1.*, t2.cat_id, t2.sys_name FROM com_content as t1 LEFT JOIN com_content_category as t2 ON t2.cat_id=t1.id ORDER BY t1.date DESC, t1.id DESC
LIMIT
'
. (($cur_page - 1) * $items_per_page) .', '. ((int) $items_per_page) .'';

// Исполнение запроса
$query=$GLOBALS['db']->query($sql);
if ( !$query ) die('Bad SQL-query: <br /><pre>'. $sql .'</pre><p>'. mysql_error() .'</p>');

// Количество записей, которые вернул запрос
$items_count = mysql_affected_rows();

// Общее количество найденых записей, без учёта лимита
list($total) = mysql_fetch_row(mysql_query('SELECT FOUND_ROWS()'));

// Количество страниц, которое необходимо для просмотра списка
$pages_count = ceil($total / $items_per_page);

// Если страниц больше одной, то необходимо вывести их
if ( $pages_count > 1 )
{
echo '<p>Страницы: ';

// Поскольку количество страниц заранее известно, то используем for
for ( $i = 1; $i <= $pages_count; ++$i )
echo '<a href="?page=', $i, '">', $i, '</a> ';

echo '</p>';
}

// Если были найдены записи, то выводим список
if ( $items_count )
{


// Вывод найденных записей
while ( $row=$GLOBALS['db']->fetch_array($query) )
echo
'
<div class="post" id="post-1">
<h2 class="title"><a href="http://xtemplate.ru/wordpresslive/?p=1" rel="bookmark">'
.$row["name"].'</a></h2>
<div class="meta"><br />Категория <a href="index.php?component=content&category='
.$row["cat_id"].'" rel="category">'.$row["sys_name"].'</a>, автор admin - Фев 28, 2010</div>
<div class="entry">
'
.$row["text"].'
</div>
<div class="meta"><br /></div><div class="comments"><a href="index.php?component=content&view='
.$row["id"].'">1 Комментарий. »</a></div>
<div class="date">Фев<br />2</div>
</div>
'
;
}
else
{
// Список пуст, выводить нечего
echo '<p>К сожалению, нет подходящих записей для просмотра.</p>';
}
?>

Спустя 21 час, 29 минут, 56 секунд (20.07.2010 - 09:43) jalvar написал(а):
Люди ау!!


_____________
jallvar.oxnull.net - мой блог.
Быстрый ответ:

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