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

Форум PHP

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

 

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

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

тема: Как в странице articles разместить 3 разных раздела статей вместо одного (подключить из базы MySQL)?
 
 автор: Anton1   (07.04.2010 в 13:55)   письмо автору
 
 

Хочу разместить в странице со статьями не один список статей из таблицы articles (это как раз-таки получается), а подключить к странице articles 3 раздела, например: Статьи по теме №1, Статьи по теме №2, Статьи по теме №3. Как это сделать правильно, чтобы каждая статья открывалась в той же вкладке? Т.е. чтобы работали, как в обычном режиме - нажимаешь на статью, и она открывается здесь же. Нужные таблицы в базе я создал, а подключить к одной странице пока не получается. Что тут мне надо будет сделать?

  Ответить  
 
 автор: Slo_Nik   (07.04.2010 в 16:44)   письмо автору
 
   для: Anton1   (07.04.2010 в 13:55)
 

покажите как Вы это делаете, т.е. вывод статей

  Ответить  
 
 автор: Anton1   (07.04.2010 в 17:08)   письмо автору
 
   для: Slo_Nik   (07.04.2010 в 16:44)
 

Это сама страничка articles.php

<?php 
include ("blocks/bd.php"); /*Соединяемся с базой данных*/

$result mysql_query("SELECT id,title,meta_d,meta_k,text FROM settings WHERE page='articles'",$db);

$myrow mysql_fetch_array($result);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="description" content="<?php echo $myrow['meta_d']; ?> ">
<meta name="keywords" content="<?php echo $myrow['meta_k']; ?> ">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo $myrow['title']; ?></title>
<link href="style.css" rel="stylesheet" type="text/css"><style type="text/css">
<!--
.стиль17 {color: #000000}
-->
</style></head>

<body>
<table width="1210px" border="0" align="center" cellpadding="0" cellspacing="0">

  <!--Подключаем шапку сайта-->
  <? include("blocks/header.php");   ?>
  
  <tr>
    <td align="center"><table width="1210px" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>

<!--Подключаем левую колонку-->
<? include("blocks/lefttd.php"); ?>

        <td width="68%" align="left" valign="top" class="centr"><p class="стиль10" style="line-height:115%; font-family:Arial, Helvetica, sans-serif; font-size:12.0pt;">
<?php echo $myrow['text']; ?>

<?php
$result 
mysql_query ("SELECT id, title FROM articles",$db);
$myrow mysql_fetch_array ($result);

do {
       
printf ("<table><tr>
        <td class='article_title'><p class='article_name'><a href='view_articles.php?id=%s'>%s</a></p>
         </tr>
         <tr>
         <td>%s</td>
         </tr>
         </table>"
$myrow["id"], $myrow["title"], $myrow["date"], $myrow["author"], $myrow["description"]);
          
}

while (
$myrow mysql_fetch_array ($result));      
?>
                
          <p class="стиль10" style="line-height:115%; font-family:Arial, Helvetica, sans-serif; font-size:12.0pt;"></td>

<!--Подключаем правую колонку-->        
<? include("blocks/righttd.php");  ?>
      </tr>
    </table></td>
  </tr>

<!--Подключаем подвал сайта-->
<? include("blocks/footer.php"); ?>
</table>
</body>
</html>

  Ответить  
 
 автор: Slo_Nik   (07.04.2010 в 17:44)   письмо автору
 
   для: Anton1   (07.04.2010 в 17:08)
 

сейчас выводятся все статьи из трёх разделов?
как хранятся статьи в базе данных?
и со вторым запросом что то не всё понятно. Вы выбираете из таблицы два столбца, а в printf передаёте пять аргументов и в строке используете только три спецификатора...

  Ответить  
 
 автор: Anton1   (07.04.2010 в 18:06)   письмо автору
 
   для: Slo_Nik   (07.04.2010 в 17:44)
 

Здесь пока выводятся статьи из таблицы "articles" (из базы), т.е. выводится один раздел. Я храню всё в Denwere в phpMyAdmin.
В базе в таблице "articles" создал "шаблоны" для добавление с индификатором id и другими полями для ввода (title, meta_d, meta_k, description, date, text, author,) . И каждый раз, когда добавляется статья, id меняется по возрастанию. Аналогично как с таблицей articles в базе, созданы и другие 2 таблицы для 2-го и 3-го раздела. Вот таким образом статья отображается: http://localhost/phpsite/view_articles.php?id=1

На счёт столбцов... Раньше у меня стояли таблички с названием каждой статьи, датой, автором и описанием. Но сейчас решил ограничиться только названием-ссылкой, т.е. Id и title. а дату буду выводить уже перед самой статьёй. Как убрать лишнее? Запутался совсем.

  Ответить  
 
 автор: Slo_Nik   (07.04.2010 в 18:41)   письмо автору
 
   для: Anton1   (07.04.2010 в 18:06)
 

>Вот таким образом статья отображается: http://localhost/phpsite/view_articles.php?id=1

ну на Ваш локальный я не могу попасть... :)

> Как убрать лишнее?

путём удаления из строки. в дополнение к этому могу добавить, что допишите error_reporting(E_ALL) в самом начале скрипте, перед строкой include ("blocks/bd.php"); /*Соединяемся с базой данных*/ и посмотрите, что Вам скажет php.

>Здесь пока выводятся статьи из таблицы "articles" (из базы)......
>....созданы и другие 2 таблицы для 2-го и 3-го раздела....

в данном случае Вам нужен многотабличный запрос к базе данных, так как Вам надо получить данные из трёх разных таблиц. Возможно Вам надо пересмотреть структуру Вашей базы данных, поместить все статьи в одну таблицу, темы статей в другую,связать эти две таблицы так называемым вторичным ключом. Потом, при запросе к таблице с темами, выбрать названия тем и id этих тем, потом обратиться к таблице со статьями и указав id темы получить все статьи для данной темы.
Это вкратце, всё остальное в руководстве php и mysql + форум mysql

  Ответить  
 
 автор: Anton1   (07.04.2010 в 19:26)   письмо автору
 
   для: Slo_Nik   (07.04.2010 в 18:41)
 

Точнее, не "как убрать лишнее", а "что в этом коде с бывшей табличкой лишнее"?
По отдельности раздел articles_1 выводится через view_articles_1.php, articles_2 через view_articles_2.php и articles_3 через view_articles_3.php
По идее догадывался, что надо делать многотабличный запрос, только не совсем понимал как...
Спасибо! Попробую. Отпишусь, когда получится.

  Ответить  
 
 автор: Balamut182   (09.04.2010 в 11:22)   письмо автору
 
   для: Anton1   (07.04.2010 в 19:26)
 

слоник прав, как я понял - у вас статьи из 3ех разделов по сути отличаются только одним параметром - этим самым разделом, так поместите все записи в одну таблицу, и введите дополнительную колонку, в которой будет этот раздел. надо вам 3 раздела вывести - один запрос с сортировкой по разделу, надо 1 раздел вывести - один запрос с условием на нужный раздел

  Ответить  
 
 автор: mabelrod   (09.04.2010 в 13:24)   письмо автору
 
   для: Anton1   (07.04.2010 в 13:55)
 

Может как вариант в вашем коде
$result = mysql_query("SELECT id,title,meta_d,meta_k,text FROM settings WHERE page='articles'",$db); 


вместо $db писать свои 3 разных ?? ну и соотвественно 3 разных запроса ..... и 3 разных вывода.

  Ответить  
 
 автор: Trianon   (09.04.2010 в 13:31)   письмо автору
 
   для: mabelrod   (09.04.2010 в 13:24)
 

У человека один сервер БД.
И одно подключение к этому серверу - $db .
И одна База Данных.
Только таблиц почему-то три.
Слоник вполне разумно посоветовал нормализовать структуру и совместить три таблицы в одну.
Вы предлагаете утроить число Баз данных, число Серверов БД и число подключений к ним?

Ах да... и число запросов?

  Ответить  
 
 автор: Anton1   (09.04.2010 в 21:48)   письмо автору
 
   для: Trianon   (09.04.2010 в 13:31)
 

<Только таблиц почему-то три.>

Изначально я сделал одну таблицу, но потом подумал, что целесообразно будет разделить все статьи на 3 раздела для того, чтобы не мешать 3 темы в одну кучу.

Хотелось бы сделать всё это попроще...

<слоник прав, как я понял - у вас статьи из 3ех разделов по сути отличаются только одним параметром - этим самым разделом>

Да, в них содержатся одни и те же поля id, title, meta_k, meta_d, date, description, text, author. только таблицы по разному называются. Нужно вывести по названию правильно и по простому.

<так поместите все записи в одну таблицу, и введите дополнительную колонку, в которой будет этот раздел. надо вам 3 раздела вывести - один запрос с сортировкой по разделу, надо 1 раздел вывести - один запрос с условием на нужный раздел>

В смысле как в колонку занести 3 раздела, а потом сортировать по ним, как статьи должны распознаваться?
Типо так? - к каждой статье добавить поле с параметром "article1", "article2" или "article3" с типом varchar? А потом сделать выборку по ним? Как я раньше об этом не догадался?)))))) точно-точно! Так проще! Спасибо!

  Ответить  
 
 автор: Slo_Nik   (10.04.2010 в 01:23)   письмо автору
 
   для: Anton1   (09.04.2010 в 21:48)
 

не совсем точно...
допустим таблица с темами статей, в ней есть id_темы, имя темы и дата создания(предположим)
а вот теперь, в таблице со статьями, кроме уже существующих полей, добавляем ещё одно поле, где будет храниться id_темы. вот по этому полю и надо сортировать, так ни когда не возникнет накладок.
и при добавлении статьи в тему надо ориентироваться по id темы, а не по названию. название можно будет и подкорректировать, и тогда надо будет корректировать всю таблицу со статьями, а при таком подходе, как я предлагаю, этого делать не надо будет...

  Ответить  
 
 автор: Anton1   (11.04.2010 в 02:06)   письмо автору
 
   для: Slo_Nik   (10.04.2010 в 01:23)
 

Да и так в принципе всё отсортировалось по разделам, как я и хотел. Сейчас статьи выглядят точно так же, только порядок как в разделах. И теперь по ходу фиг разделишь эти статейные разделы заголовками. Чтобы это уже реально выглядело, как разделы.
Они же в одной таблице. Что можно придумать, чтобы получилось так?

Статьи по теме 1
название статьи
название статьи 2
название статьи 3...
Статьи по теме 2
название статьи
название статьи 2
название статьи 3...
Статьи по теме 3
название статьи
название статьи 2
название статьи 3...

  Ответить  
 
 автор: Slo_Nik   (11.04.2010 в 03:53)   письмо автору
 
   для: Anton1   (11.04.2010 в 02:06)
 

>Да и так в принципе всё отсортировалось по разделам, как я и хотел...

сортировать желательно по id темы .

>Они же в одной таблице. Что можно придумать, чтобы получилось так?

Делать вложенные циклы
вроде так...

<?php 
 
while($test mysql_fetch_assoc($theme)){
   echo 
"Статьи по теме такой то.....";
    
// запрос к таблице со статьями
   //сортировать в запросе по id темы 
   // и вывод статей
  
while($test1 mysql_fetch_assoc($article)){
    echo 
"Заголовок статьи.";
 }
}
?>

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

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