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

Форум PHP

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

 

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

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

тема: Как вывести название раздела на странице статьи?
 
 автор: Радосвет   (16.04.2006 в 02:15)   письмо автору
 
 

Здравствуйте, мастера!

Я совсем недавно начал изучать PHP, и наверное мой вопрос весьма простой...
Я устанвил вашу CMS, настраиваю под себя, и по ходу дела разбираюсь в коде...
Вопрос такой: я использую модуль статей (article). Создал множество разделов:
Статьи
Повести
Рассказы
Романы
Эпопеи
....
Не важно... Этот список отображается на странице ./article/index.php
Далее заходим в раздел Статьи, а там у нас заголовок, выводимый с помощью

... ?>
<h1 class=artnamepage>Статьи</h1> 
<? ...

Этот же заголовок выводится и на странице в разделе Повести и т.д.
Как можно вывести значение переменной .$page['name']. , чтобы при обращении к разделу выводилось его имя, а не заголовок из статичного кода?

Я пытался скопировать данный код

      while($page = mysql_fetch_array($pgs))
      {
         echo "<li><a href=http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?id_page=".$page['id_artpage'].">".$page['name']."</a>";
      }

Ну, естесственно, оставив только .$page['name']., но ничего не выходит...
Может, надо написать что-то другое в while($page = mysql_fetch_array($pgs))?

Поскажите, пожалуйста... Заранее спасибо! :)

   
 
 автор: Радосвет   (16.04.2006 в 04:56)   письмо автору
 
   для: Радосвет   (16.04.2006 в 02:15)
 

Добавлю к своему вопросу, что так же хочу вывести название Раздела в тэги <title></title>

Не могу понять, почему при включении в заголовок переменной <title><? echo $title; ?></title> , которой в файле index.php присвоено значение $title="Заголовок";, этот заголовок выводится в списке Разделов и в Разделе, а вот в Статье выводится то значение, которое берётся из базы при создании Статьи?

Надеюсь, я ясно описал ситуацию...

Проще говоря, я хочу при выводе списка разделов в заголовке было "Список разделов", при выводе Раздела в заголовке было Название Раздела...

Даже если, допустим, я в файле index.php пропишу $title="Список Разделов";, как мне подключить к переменной $title название раздела?

И просьба ответить на предыдущее сообщение... :)

   
 
 автор: cheops   (16.04.2006 в 13:48)   письмо автору
 
   для: Радосвет   (16.04.2006 в 02:15)
 

Здесь имеется ввиду CMS из книги "PHP 5. Практика создания Web-сайтов" или что-то другое?

   
 
 автор: Радосвет   (17.04.2006 в 01:02)   письмо автору
 
   для: cheops   (16.04.2006 в 13:48)
 

Абсолютно верно, я установил эту CMS с диска книги "PHP 5. Практика создания Web-сайтов"...
Там вроде всё подробно описывается, но вот с этим у меня затруднения...

Я так понимаю, чтобы в базе не держать лишнюю колонку для title раздела, лучше сделать запрос в базу к параметру id_page (name) и присвоить значение переменной $title ... Точно так же, как присвоено этой переменной в Статье параметр в базе title_html...

Прошу прощения, если пишу запутанно, я просто хочу научиться выводить из нужной таблицы нужные данные, в данном случае, чтобы Раздел имел соответствующий его названию title и заголовок в тексте...

   
 
 автор: Радосвет   (17.04.2006 в 16:22)   письмо автору
 
   для: Радосвет   (17.04.2006 в 01:02)
 

И ещё... Не знаю, в тему ли... Допустим, у меня 15 разделов, и в каждом разделе мне нужно какое-то особое оформление... Можно ли средствами PHP написать алгоритм, который будет проверять ID раздела, и выдавать в том месте, где выводится список статей, часть html-кода, то есть картинку, например? В разделе статей - картинка газеты, в разделе повестей - картинка с книгой... Можно ли так, или мне в таком случае лучше создать 15 модулей, и отдельно их администрировать?

   
 
 автор: cheops   (17.04.2006 в 18:45)   письмо автору
 
   для: Радосвет   (17.04.2006 в 16:22)
 

Да, вы можете даже для удобства оформить это в виде отдельной функции, которая будет принимать ID раздела и возвращать HTML-код оформления.

   
 
 автор: Радосвет   (17.04.2006 в 19:40)   письмо автору
 
   для: cheops   (17.04.2006 в 18:45)
 

То есть, при обращении к странице ./article/index.php?id_page=1 функция проверит ID, который равен 1, и вставит определённый код? А можно чуть подробнее об этом, или где можно прочитать?

   
 
 автор: cheops   (17.04.2006 в 18:49)   письмо автору
 
   для: Радосвет   (17.04.2006 в 01:02)
 

Так т.е. мы обращаемся к таблице artpage или articles - не очень понятно что выводится?

   
 
 автор: Радосвет   (17.04.2006 в 19:50)   письмо автору
 
   для: cheops   (17.04.2006 в 18:49)
 

То есть, при обращении к странице ./article/index.php?id_page=1 функция проверит ID, который равен 1, и вставит определённый код? А можно чуть подробнее об этом, или где можно прочитать?
Очень прошу ответить на предыдущее сообщение...

А насчёт базы следующее...

В таблице artpage есть поле name, там прописываются названия разделов...
Так вот, мне нужно написать такой запрос к этой таблице и к этому полю, чтобы при ID страницы ./article/index.php?id_page=1 равной 1 в заголовке страницы (title) прописалось имя раздела, взятое из таблицы по ID, и это же имя раздела прописалось бы вот здесь


// Если больше одной - выводим список статей
      else
      {
      ?>
         <h1 class=artnamepage>НАЗВАНИЕ РАЗДЕЛА</h1> 
      <?
            
echo "<ol>";
        while(
$articles mysql_fetch_array($art))
        {
          echo 
"<li><font id=idlinks><a href=http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?id_article=".$articles['id_article'].">".$articles['name']."</a></font><br>".
                       
"".$articles['description']."";
        }
        echo 
"</ol>";
        echo 
"<p><a href='http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."'>Все разделы</a><br><br>";
      }
   }

вместо <h1 class=artnamepage>НАЗВАНИЕ РАЗДЕЛА</h1> прописать нечто такое:

<h1 class=artnamepage> <? echo $id_page_name?> </h1>

ult $id_page_name - "функция" проверки ID...

Прошу помочь... Пожалуйста! :)

   
 
 автор: Радосвет   (18.04.2006 в 10:31)   письмо автору
 
   для: Радосвет   (17.04.2006 в 19:50)
 

Добры молодцы! Помогите управиться с заголовками! :)

   
 
 автор: cheops (из кафе)   (18.04.2006 в 12:14)
 
   для: Радосвет   (17.04.2006 в 19:50)
 

Что-то пропустил ваше сообщение - постараюсь отписаться более подробно вечером.

   
 
 автор: Радосвет   (18.04.2006 в 23:45)   письмо автору
 
   для: cheops (из кафе)   (18.04.2006 в 12:14)
 

Буду весьма благодарен! :)
ПС:
По ходу дела, реорганизую админку, и там опять препятствие для меня с выводом разделов...

В одной из известных CMS в админке есть возможность выбрать раздел из выпадающего меню, вписать в поле имя статьи, ввести текст статьи и нажать "Добавить"... Вот и я так хочу сделать, но пока не получается...

В той системе я отыскал такой код файла админки:

echo "
<h4>"._MD_ADDARTICLE."</h4>
<form name='edit' action='./index.php' method='post'><br />";

echo _MD_GROUPPROMPT."<br />";

$articleAccess = new groupAccess('addArticle');
echo $articleAccess->listGroups();

echo "
<br /><br />
<b>"._MD_TITLEC."</b><br />
<input type='text' class='text' name='title' value='$title' size='50' value='' /><br /><br />";

$result = $db->query("SELECT secid, secname FROM ".$db->prefix(_MI_NSECTIONS_TABLE)." ORDER BY secid");

echo "<select class='select' name='secid'>";
while (list($sid, $secname) = $db->fetch_row($result)) {
$secname = $myts->makeTboxData4Show($secname);
echo "<option value='$sid'";
if ($sid == $secid) { echo " selected='selected'"; }
echo ">$secname</option>";
}
echo "</select>";

Пытался его под себя подстроить - не получается... Помогите?
(Прошу прощения, если завалил вопросами, не подумайте что я ленивый, просто иногда мозги начинают плавиться)... Да и создавать созвучные темы есть ли смысл?

   
 
 автор: cheops   (19.04.2006 в 17:14)   письмо автору
 
   для: Радосвет   (18.04.2006 в 23:45)
 

Давайте под разные вопросы новые темы заводить, а то мы так быстро запутается...

   
 
 автор: cheops   (19.04.2006 в 17:13)   письмо автору
 
   для: Радосвет   (17.04.2006 в 19:50)
 

Для извлечения названия раздела следует поступить следующим образом вместо строки
<h1 class=artnamepage>НАЗВАНИЕ РАЗДЕЛА</h1>

написать
<?php
  
if(!empty($_GET['id_page']))
  {
    if(!
preg_match("|^[\d]+$|",$_GET['id_page'])) exit("Недопустимый формат URL");
    
$query "SELECT name FROM artpage WHERE id_artpage = ".$_GET['id_page']." LIMIT 1";
    
$pag mysql_query($query);
    if(!
$pag) exit("Ошибка при обращении к таблице разделов");
    
$title mysql_result($pag,0);
    echo 
"<h1 class=artnamepage>$title</h1>";
  }
  else
  {
    echo 
"<h1 class=artnamepage>НАЗВАНИЕ РАЗДЕЛА</h1>";
  }
?>

   
 
 автор: Радосвет   (19.04.2006 в 17:52)   письмо автору
 
   для: cheops   (19.04.2006 в 17:13)
 

Спасибо большое! С этим разобрался... Осталось только научиться делать то же с заголовками...

Кстати, пока вы написали это, я решил свою проблему весьма извращенческим способом:


<?php
    $query 
"SELECT * FROM artpage WHERE id_artpage=".$_GET['id_page']." ORDER BY id_artpage";
    
$pgs mysql_query($query);
      while(
$idpage mysql_fetch_array($pgs))
      {
      echo 
"".$idpage['name']."";
      }
?>

Я сильно не прав?
Да, ещё пытался вычленить заголовок таким образом

if ($idpage['name']!="") $title = $idpage['name'];

Но, видимо, поторопился...

   
 
 автор: cheops   (19.04.2006 в 18:20)   письмо автору
 
   для: Радосвет   (19.04.2006 в 17:52)
 

Это по сути одно и тоже, только ORDER BY id_artpage - лишняя, так как у вас будет возвращаться только одна запись и while - по той же причине, ваш скрипт можно переписать следующим образом.
<?php 
    $query 
"SELECT * FROM artpage WHERE id_artpage=".$_GET['id_page']; 
    
$pgs mysql_query($query); 
    
$idpage mysql_fetch_array($pgs));
     echo 
"".$idpage['name'].""
?>

   
 
 автор: Радосвет   (20.04.2006 в 12:09)   письмо автору
 
   для: cheops   (19.04.2006 в 18:20)
 

Благодарю, добрый человек! :) Всё получилось...
А в базе, в таблице с разделами решил добавить поле title_html , как у статей, и в админке сделать возможность добавлять не только название раздела, но и заголовок title, что, на мой взгляд, весьма удобно!

   
Rambler's Top100
вверх

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