|
|
|
| Хочу разместить в странице со статьями не один список статей из таблицы articles (это как раз-таки получается), а подключить к странице articles 3 раздела, например: Статьи по теме №1, Статьи по теме №2, Статьи по теме №3. Как это сделать правильно, чтобы каждая статья открывалась в той же вкладке? Т.е. чтобы работали, как в обычном режиме - нажимаешь на статью, и она открывается здесь же. Нужные таблицы в базе я создал, а подключить к одной странице пока не получается. Что тут мне надо будет сделать? | |
|
|
|
|
|
|
|
для: Anton1
(07.04.2010 в 13:55)
| | покажите как Вы это делаете, т.е. вывод статей | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: Anton1
(07.04.2010 в 17:08)
| | сейчас выводятся все статьи из трёх разделов?
как хранятся статьи в базе данных?
и со вторым запросом что то не всё понятно. Вы выбираете из таблицы два столбца, а в printf передаёте пять аргументов и в строке используете только три спецификатора... | |
|
|
|
|
|
|
|
для: 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. а дату буду выводить уже перед самой статьёй. Как убрать лишнее? Запутался совсем. | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: 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
По идее догадывался, что надо делать многотабличный запрос, только не совсем понимал как...
Спасибо! Попробую. Отпишусь, когда получится. | |
|
|
|
|
|
|
|
для: Anton1
(07.04.2010 в 19:26)
| | слоник прав, как я понял - у вас статьи из 3ех разделов по сути отличаются только одним параметром - этим самым разделом, так поместите все записи в одну таблицу, и введите дополнительную колонку, в которой будет этот раздел. надо вам 3 раздела вывести - один запрос с сортировкой по разделу, надо 1 раздел вывести - один запрос с условием на нужный раздел | |
|
|
|
|
|
|
|
для: 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 разных вывода. | |
|
|
|
|
|
|
|
для: mabelrod
(09.04.2010 в 13:24)
| | У человека один сервер БД.
И одно подключение к этому серверу - $db .
И одна База Данных.
Только таблиц почему-то три.
Слоник вполне разумно посоветовал нормализовать структуру и совместить три таблицы в одну.
Вы предлагаете утроить число Баз данных, число Серверов БД и число подключений к ним?
Ах да... и число запросов? | |
|
|
|
|
|
|
|
для: 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? А потом сделать выборку по ним? Как я раньше об этом не догадался?)))))) точно-точно! Так проще! Спасибо! | |
|
|
|
|
|
|
|
для: Anton1
(09.04.2010 в 21:48)
| | не совсем точно...
допустим таблица с темами статей, в ней есть id_темы, имя темы и дата создания(предположим)
а вот теперь, в таблице со статьями, кроме уже существующих полей, добавляем ещё одно поле, где будет храниться id_темы. вот по этому полю и надо сортировать, так ни когда не возникнет накладок.
и при добавлении статьи в тему надо ориентироваться по id темы, а не по названию. название можно будет и подкорректировать, и тогда надо будет корректировать всю таблицу со статьями, а при таком подходе, как я предлагаю, этого делать не надо будет... | |
|
|
|
|
|
|
|
для: Slo_Nik
(10.04.2010 в 01:23)
| | Да и так в принципе всё отсортировалось по разделам, как я и хотел. Сейчас статьи выглядят точно так же, только порядок как в разделах. И теперь по ходу фиг разделишь эти статейные разделы заголовками. Чтобы это уже реально выглядело, как разделы.
Они же в одной таблице. Что можно придумать, чтобы получилось так?
Статьи по теме 1
название статьи
название статьи 2
название статьи 3...
Статьи по теме 2
название статьи
название статьи 2
название статьи 3...
Статьи по теме 3
название статьи
название статьи 2
название статьи 3... | |
|
|
|
|
|
|
|
для: Anton1
(11.04.2010 в 02:06)
| | >Да и так в принципе всё отсортировалось по разделам, как я и хотел...
сортировать желательно по id темы .
>Они же в одной таблице. Что можно придумать, чтобы получилось так?
Делать вложенные циклы
вроде так...
<?php
while($test = mysql_fetch_assoc($theme)){
echo "Статьи по теме такой то.....";
// запрос к таблице со статьями
//сортировать в запросе по id темы
// и вывод статей
while($test1 = mysql_fetch_assoc($article)){
echo "Заголовок статьи.";
}
}
?>
|
| |
|
|
|