Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Все заметки на главной с правильными ссылками, Все заметки из разных категориях имеют н 
:(
    Опции темы
dgambu
Дата 3.9.2012, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.8.2012

Репутация: нет
Всего: нет



И так поо порядку.
Есть сайт с 2 Разделами, и подкатегориями в разделах.

Сайт (index.php)

-Статьи (articles.php)
---Интересное (articles.php?cat=1)
---Полезное (articles.php?cat=2)
---...

-Программы (program.php)
---Аудио (program.php?cat=3)
---Видео (program.php?cat=4)
---...

При добавлении новой заметки на сайт, заметка добавляется как надо в категорию (cat=n) и на главную сразу. Но незнаю как реализовать так чтобы при добавлении например в раздел программы, на главной она выводилось с ссылкой program.php?cat=n&id=n. На данный момент, если добавить даже программу, выводится так: articles.php?cat=n&id=n.


index.php
Код

<?php include ("blocks/db.php");
$result = mysql_query("SELECT title,meta_d,meta_k FROM settings WHERE page='index'",$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 http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="description" content="<?php echo $myrow['meta_d'] ?>">
<meta name="keyword" content="<?php echo $myrow['meta_k'] ?>">
<title><?php echo $myrow['title'] ?></title>
<link href="css/style.css" type="text/css" rel="stylesheet">
</head>
<body>
  <div id="all">
   <div id="topline"></div>
   
        <ul id="cat_nav">
        <li class="green"><a href="articles.php">Статьи</a></li>
        <li class="kor"><a href="program.php">Программы</a></li>
        <li><a href="index.php">Фильмы<br /> В разработке...</a></li>
        <li><a href="index.php">Игры<br /> В разработке...</a></li>
        </ul>
   
    <div id="wrapper">
     <div id="header">
      <div id="logo"><a href="index.php"></a></div>
       <ul id="nav">
        <li><a href="index.php">Главная</a></li>
        <li><a href="add.php">Добавить статью</a></li>
        <li><a href="adv.php">Реклама</a></li>
        <li><a href="about.php">О Сайте</a></li>
       </ul> 
    </div>
    
<?php
$result = mysql_query("SELECT id,title,description, date, mini_img, cat FROM data", $db);
$myrow = mysql_fetch_array($result);


do {
    
printf("
      <div id='post'><div id='mini_img'><img src='%s'></div>
      <div id='content'>
      <div id='article_inf'>
      <div id='article_date'>Добавлено: %s</div>
      <div id='article_title'><a href='articles.php%s?cat=%s&id=%s'>%s</a></div></div> 
      <div id='article_description'>%s</div><div id='read_more'><a href='articles.php?cat=%s&id=%s'>Читать дальше...</a></div></div></div><br><br>
       ",
       $myrow["mini_img"], $myrow["date"], $myrow["page"], $myrow["cat"], $myrow["id"], $myrow["title"], $myrow["description"], $myrow["cat"], $myrow["id"]);
    
   }
   
while ($myrow = mysql_fetch_array($result));
?>
   </div>
   <div id="bottomline"></div>
  </div> 
</body>
</html>



articles.php
Код

<?php include ("blocks/db.php");
if (isset($_GET['cat'])) {$cat = $_GET['cat']; }
if (!isset($cat)) {$cat = 1;}?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="description" content="<?php
if(isset($_GET['id']))    
{  
$result = mysql_query("SELECT * FROM data WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);
echo $myrow['meta_d'];
}
else
{
$result = mysql_query("SELECT * FROM categories WHERE id='$cat'",$db);
$myrow = mysql_fetch_array($result);
echo $myrow['meta_d'];
}
?>">
<meta name="keyword" content="<?php
if(isset($_GET['id']))    
{  
$result = mysql_query("SELECT * FROM data WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);
echo $myrow['meta_k'];
}
else
{
$result = mysql_query("SELECT * FROM categories WHERE id='$cat'",$db);
$myrow = mysql_fetch_array($result);
echo $myrow['meta_k'];
}?>">
<title><?php echo $myrow['title'] ?></title>
<link href="css/style.css" type="text/css" rel="stylesheet">
</head>
<body>
  <div id="all">
   <div id="topline"></div>
   
        <ul id="cat_nav">
        <li class="green"><a href="articles.php" class="active">Статьи</a></li>
        <li class="kor"><a href="program.php">Программы</a></li>
        <li><a href="index.php">Фильмы<br /> В разработке...</a></li>
        <li><a href="index.php">Игры<br /> В разработке...</a></li>
        </ul>
        <br /><br />
        <ul id="articles_cat">
        <li><a href="articles.php">Все</a></li>
        <li><a href="articles.php?cat=1">Интересное</a></li>
        <li><a href="articles.php?cat=2">Юмор</a></li>
        <li><a href="articles.php?cat=3">Полезное</a></li>
        <li><a href="articles.php?cat=4">Жесть</a></li>
        </ul>
   
<div id="wrapper">
     <div id="header" class="green">
      <div id="logo"><a href="index.php"></a></div>
       <ul id="nav">
        <li><a href="index.php">Главная</a></li>
        <li><a href="add.php">Добавить статью</a></li>
        <li><a href="adv.php">Реклама</a></li>
        <li><a href="about.php">О Сайте</a></li>
       </ul> 
    </div>
    
    <?php        
        

if(isset($_GET['id']))    
{  
$result = mysql_query("SELECT title, text FROM data WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);

printf("<div id='post_title'><h1> %s </h1></div>
       <div id='view_all_post'><br/> %s </div>",
       $myrow["title"], $myrow["text"]);

}

else

{
$result2 = mysql_query("SELECT cat FROM categories WHERE cat='$cat'",$db);
$myrow2 = mysql_fetch_array($result2);
$result3 = mysql_query("SELECT id,title,cat,description,date,mini_img FROM data WHERE cat='$cat'",$db);
$myrow3 = mysql_fetch_array($result3);
{
do {
    
printf("
      <div id='post'><div id='mini_img'><img src='%s'></div>
      <div id='content'>
      <div id='article_inf'>
      <div id='article_date'>Добавлено: %s</div>
      <div id='article_title'><a href='articles.php?cat=%s&id=%s'>%s</a></div></div> 
      <div id='article_description'>%s</div><div id='read_more'><a href='articles.php?cat=%s&id=%s'>Читать дальше...</a></div></div></div><br><br>
       ",
       $myrow3["mini_img"], $myrow3["date"], $myrow3["cat"], $myrow3["id"], $myrow3["title"], $myrow3["description"], $myrow3["cat"], $myrow3["id"]);
    
   }
   
while ($myrow = mysql_fetch_array($result));
}
}
?>
    
    
</div>
   <div id="bottomline"></div>
  </div> 
</body>
</html>


На главной вывожу через цикл do while,  я знаю то что ошибка тут:

printf("
      <div id='post'><div id='mini_img'><img src='%s'></div>
      <div id='content'>
      <div id='article_inf'>
      <div id='article_date'>Добавлено: %s</div>
      <div id='article_title'><a href='articles.php%s?cat=%s&id=%s'>%s</a></div></div> 
      <div id='article_description'>%s</div><div id='read_more'><a href='articles.php?cat=%s&id=%s'>Читать дальше...</a></div></div></div><br><br>
       ",
       $myrow["mini_img"], $myrow["date"], $myrow["page"], $myrow["cat"], $myrow["id"], $myrow["title"], $myrow["description"], $myrow["cat"], $myrow["id"])

Вопрос в том как реализовать по другому.

Извиняюсь если вопрос задан не корректно, недавно начал изучать этот язык. Говоря коротко, мне надо чтобы при добавлении статей выводилась статья на главной с ссылкой: articles.php?cat=n&id=n а при добавлении программ: program.php?cat=n&id=n

В базе 3 таблицы:
data
settings
categories

Не проходите мимо, помогите решить проблему, буду ОЧЕНЬ ОЧЕНЬ благодарен. :(
PM MAIL   Вверх
Sanchezzz
Дата 3.9.2012, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Почему бы у таблице категории не завести дополнительное поле в таблице как ссылка "link" ?


Выводить гораздо легче, быстрей  и дешевле обслуживать код такого вида
Код

<? while ($myrow = mysql_fetch_array($result3)){ ?>  <?=$myrow['cat']?>...  <?} ?>

или такого
Код

<? while ($myrow = mysql_fetch_array($result3)): ?> <?=$myrow['cat']?> ...    <?endwhile;?>


Если вы не хотите заводить доп поле в таблице то вам нужно создать 2х мерный массив  где ключ массива это номер категории в БД а значение ссылка на файл.

Код


//... 

else {

// Если категорию  передали не как число или вообще не передали выводим все
$sql = "
SELECT d.* , c.cat_link  FROM data d 
    JOIN categories c on (c.cat = d.cat )
WHERE  ".(isset($cat) &&  is_numeric($cat) ? 'd.cat='.$cat : '' )."  
ORDER BY `d`.`date` DESC" ;

$result3 = mysql_query($sql);

while ($myrow = mysql_fetch_assoc($result3):?>
    <?
        // $myrow3["cat_link"] это новое поле в таблице категории
        $url_detail = $myrow3["cat_link"]. "?cat=".$myrow3["cat"]."&id=".$myrow3["id"];
    
    ?>
    <div id='post'><div id='mini_img'>
    <?
    // а вдруг нету картинки, зачем ее выводить???
    if(!empty($myrow3["mini_img"])):?>
        <img src="<?=$myrow3["mini_img"]?>">
    <?endif;?>
    </div>
      <div id='content'>
      <div id='article_inf'>
      <div id='article_date'>Добавлено: <?=$myrow3["date"]?></div>
      <div id='article_title'><a href="<?=$url_detail?>"><?=$myrow3["title"]?></a></div></div> 
      <div id='article_description'><?=$myrow3["description"]?></div><div id='read_more'><a href="<?=$url_detail?>">Читать дальше...</a></div></div>
    </div>
    <br><br>
<?endwhile;

// пс нехватает для таких целей сделать постраничку информацию можно поискать в FAQ на форуме или на просторах интернета


}

?>









Это сообщение отредактировал(а) Sanchezzz - 3.9.2012, 16:15


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
skyboy
Дата 3.9.2012, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Sanchezzz @  3.9.2012,  15:12 Найти цитируемый пост)
Почему бы у таблице категории не завести дополнительное поле в таблице как ссылка "link" ?

в таблице с категориями или со статьями? я предложил бы как раз алиас в таблице с категориями и выводить тогда на главной:
Код

echo "<a href='".$category['alias'].".php?cat=n&id=i'>".$title."</a>";

PM MAIL   Вверх
Sanchezzz
Дата 3.9.2012, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



это как для примера не суть важна но ТС думаю сделает выводы и посмотрит мануал основ, хотя бы как работать с массивами, строками и что такое циклы.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
s1lver
Дата 5.9.2012, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Судя по всему это продолжение предыдущего топика про категории. Так как вы решили проблему с формированием ссылки, отсюда можно и тут поправить быстро...


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Gold Dragon
Дата 5.9.2012, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



dgambu, а ты не рассматривал вариант сделать один вход в систему? Вообще-то и подобных проблем не будет и безопасность всё же играет не малую роль в этом...

Делаешь один index.php

категории у тебя будут index.php?cat=XX

а сами статьи будут index.php?cat=XX&id=YY

И мудрить ничего не нужно


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0813 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.