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

Форум MySQL

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

 

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

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

тема: Оформить вывод из базы
 
 автор: куч1963   (20.07.2006 в 23:20)   письмо автору
 
 

Имеется две таблицы
делаю запрос и вывод


$query = "SELECT artpage.id_artpage AS id,
                 artpage.name AS name,
                 articles.id_article,
                 articles.id_article AS cid,
                 articles.name AS category,
                articles.id_page AS page
          FROM artpage INNER JOIN articles
          ON articles.id_page=artpage.id_artpage WHERE artpage.id_artpage AND hide='show'
           GROUP BY articles.name
          ORDER BY artpage.id_artpage";

$rez = mysql_query($query);
 echo '<ul id=1>';
$name = "";
while($menu = mysql_fetch_array($rez))
{
  if($name != $menu['name'])
  {         
    echo "<li>".$menu['name']."";
    $name = $menu['name'];
  } 

 
echo "<a class=new 

href=http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?id_article=".$menu['cid'].">".$menu['category']."</a>";
  } 
    
echo "</ul>";

  }

надо вывести в виде
<ul id=1>
<li>$menu['name'] </li> - если только 1 материал
если больше, то вывести в таком виде
<li>$menu['name']
<ul>
<li>$menu['category']
<li>$menu['category']
<li>$menu['category']
</ul>
</ul>

   
 
 автор: куч1963   (22.07.2006 в 06:04)   письмо автору
 
   для: куч1963   (20.07.2006 в 23:20)
 

Ребята, помогтте советом, мозги выпарил уже, а как хочется не получается!

   
 
 автор: cheops   (22.07.2006 в 10:59)   письмо автору
 
   для: куч1963   (20.07.2006 в 23:20)
 

> если только 1 материал
Не очень понятно к какой таблице это относится? artpage или articles?

   
 
 автор: куч1963   (23.07.2006 в 06:05)   письмо автору
 
   для: cheops   (22.07.2006 в 10:59)
 

artpage находятся названия, в articles - собственно статьи.
если всего 1 статья, то выводить надо
<li>Название
если статей несколько, то вид
<li> Название
<ul>
<li>Тема1
<li>Тема1
</ul

   
 
 автор: cheops   (23.07.2006 в 11:10)   письмо автору
 
   для: куч1963   (23.07.2006 в 06:05)
 

Тема1 - это что (названия статей?) и откуда берётся?

   
 
 автор: куч1963   (23.07.2006 в 12:07)   письмо автору
 
   для: cheops   (23.07.2006 в 11:10)
 

В таблицу artpage находятся названия разделов, в таблице articles - названия статей.
Хочу зделать так, чтобы если в разделе 1 статья, выводилось
<li>Название раздела</li>
Если больше 1 статьи
то вывод такого вида
<li>Название раздела1
<ul>
<li>статья 1
<li>статья 2
<li>статья 3
</ul></li>

   
 
 автор: куч1963   (23.07.2006 в 18:44)   письмо автору
 
   для: куч1963   (23.07.2006 в 12:07)
 

Cheops на тебя одна надежда. В трех соснах блукаю, выйти не могу.
Да кстати, Посмотри код страницы http://softtime.ru/. Кажется метатег перед <html> затесался случайно.

   
 
 автор: cheops   (23.07.2006 в 19:48)   письмо автору
 
   для: куч1963   (23.07.2006 в 18:44)
 

Следует поступить следующим образом
<?php
$query 
"SELECT artpage.id_artpage AS id, 
                 artpage.name AS name, 
                 articles.id_article, 
                 articles.id_article AS cid, 
                 articles.name AS category, 
                articles.id_page AS page 
          FROM artpage INNER JOIN articles 
          ON articles.id_page=artpage.id_artpage WHERE artpage.id_artpage AND hide='show' 
           GROUP BY articles.name 
          ORDER BY artpage.id_artpage"


$rez mysql_query($query); 
if(
mysql_num_rows($rez) == 1)
{
  
// Возвращена только одна статья
}
else
{
  
// Возвращено несколько статей
}
?>

   
 
 автор: куч1963   (24.07.2006 в 07:11)   письмо автору
 
   для: cheops   (23.07.2006 в 19:48)
 

Так я пробовал, не проходит.

$rez = mysql_query($query);
$num = mysql_num_rows($rez);
echo $num; 

выводит общее число статей в таблице articles наверное потому, что идет групировка в запросе

   
 
 автор: куч1963   (25.07.2006 в 08:30)   письмо автору
 
   для: куч1963   (24.07.2006 в 07:11)
 

Все мозги запарил.
Две таблицы
Разделов
artpage
id_artpage | name
1 |главное
2 |разное
Статей
articles
id_article|name |id_page
1 |статья 1 | 1
2 |статья 2 | 1
3 |статья 3 | 1
4 |статья 1-1 | 2
5 |статья 1-2 | 2

После запроса

$query = "SELECT artpage.id_artpage AS id,
                 artpage.name AS name,
                 articles.id_article,
                 articles.id_article AS cid,
                 articles.name AS category,
                articles.id_page AS page
          FROM artpage INNER JOIN articles
          ON articles.id_page=artpage.id_artpage WHERE artpage.id_artpage AND hide='show'
           GROUP BY articles.name
          ORDER BY artpage.id_artpage"; 

Вывожу результат


$rez = mysql_query($query);
 echo '<ul id=1>';
$name = "";
while($menu = mysql_fetch_array($rez))
{
  if($name != $menu['name'])
  {         
    echo "<li>".$menu['name']."";
    $name = $menu['name'];
  } 

 
echo "<a class=new 

href=http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?id_article=".$menu['cid'].">".$menu['category']."</a>";
  } 
    
echo "</ul>";
  } 


в таком виде
Главное
- статья1
- статья2
- статья3
Разное
- статья1-1
- статья2-2
Нужно узнать, сколько находится статей в каждом разделе.
Побовал модифицировать запрос так

$query = "SELECT artpage.id_artpage AS id,
                 artpage.name AS name,
                 articles.id_article,
                 articles.id_article AS cid,
                 articles.name AS category,
                COUNT(articles.id_page ) AS page
          FROM artpage INNER JOIN articles
          ON articles.id_page=artpage.id_artpage WHERE artpage.id_artpage AND hide='show'
           GROUP BY articles.name, articles.id_page 
          ORDER BY artpage.id_artpage"; 

но правильный результат COUNT(articles.id_page ) выводится только если GROUP BY artpage.name, но тогда не срабатывает вывод как при GROUP BY articles.name, если групирую
GROUP BY articles.name, articles.id_page, artpage.name - выводится 1. Как мне правильно видоизменить запрос?

   
Rambler's Top100
вверх

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