Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Разделы и Категории


Автор: dgambu 29.8.2012, 15:55
Здравствуйте. Недавно начал изучать язык PHP, ну и как ожидалсь сталкнулся с первой проблемой. И так проблема вот в чем: Имеется сайт с разделами (Статьи Программы Фильмы Игры). (articles.php program.php ........ ) В разделе Статьи есть ещё 4 категории.  И так в общем мне нужно получить ссылки такого вида: www.site.ru/articles.php?cat=n&id=n . На данный момент у меня категории в разделах открываются нормально: www.site.ru/articles.php?cat=n а при открытии в них самих разметок получается www.site.ru/view.php?id=n . надо www.site.ru/articles.php?cat=n&id=n


view.php
Код

<?php include ("blocks/db.php");
if (isset ($_GET['id'])) {$id = $_GET['id'];}
$result = mysql_query("SELECT id,title,meta_d,meta_k, text FROM data WHERE id='$id'",$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><a href="index.php">Категория №1</a></li>
        <li><a href="index.php">Категория №2</a></li>
        <li><a href="index.php">Категория №3</a></li>
        <li><a href="index.php">Категория №4</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>
    <br/><div id="post_title"><h1><?php echo $myrow['title'] ?></h1></div>
    <div id="view_all_post"><br/><?php echo $myrow['text'] ?></div>
   </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;}

$result = mysql_query("SELECT * FROM categories WHERE id='$cat'",$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><a href="index.php">Программы</a></li>
        <li><a href="index.php">Фильмы</a></li>
        <li><a href="index.php">Игры</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>
    
    <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>
    
<?php
$result = mysql_query("SELECT id,title,description, date, mini_img, cat FROM data WHERE cat='$cat'", $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='view.php?id=%s'>%s</a></div></div> 
      <div id='article_description'>%s</div><div id='read_more'><a href='view.php?id=%s'>Читать дальше...</a></div></div></div><br><br>
       ",
       $myrow["mini_img"], $myrow["date"], $myrow["id"], $myrow["title"], $myrow["description"], $myrow["id"]);
    
   }
   
while ($myrow = mysql_fetch_array($result));
?>
   </div>
   <div id="bottomline"></div>
  </div> 
</body>
</html>


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


Помогите пожалуйста, 3 дня мучаюсь уже. Извините если не правильно задал вопрос, новичок я.myrow['meta_d'] ?

Автор: Fortop 29.8.2012, 19:20
В какой строке у вас формируется неправильная ссылка?

Автор: dgambu 29.8.2012, 22:10
Fortop,  На данный момент все правильно. (Судя по написанному php коду). Вопрос в том, как изменить код, чтоб формировалась другая ссылка? сейчас статьи (вывод полной статьи) открываются через файл view.php.  Например захожу в раздел статьи (www.site.ru/articles.php) потом в разделе статьи захожу в категорию юмор (www.site.ru/articles.php?cat=2) в категории юмор захожу в статью а там ссылка ввида www.site.ru/view.php?id=n, а хотелось-бы www.site.ru/articles.php?cat=2&id=n

Автор: Fortop 29.8.2012, 22:42
Цитата(dgambu @  29.8.2012,  22:10 Найти цитируемый пост)
в категории юмор захожу в статью а там ссылка ввида www.site.ru/view.php?id=n

Ну так и указывайте тут вашу нужную вам ссылку

Код

  <div id='article_title'><a href='view.php?id=%s'>%s</a></div></div> 



Вопрос в том, вы код доработали чтобы он обрабатывал такое поведение?
Или вы просто хотите изменить ссылку не меняя код? Тогда вам нужно кроме смены ссылок, лезть в настройки веб-сервера и заниматься конфигурацией mod_rewrite 

Автор: dgambu 30.8.2012, 06:17
Fortop,  Мне надо чтобы в файле articles.php был вывод категорий и самих статей полностью. Просто новичок в этом, не могу разобраться как это реализовать. Т.е view.php нужно удалить совсем, а в articles.php сделать так чтоб проверялись переданные параметры, если передано значение id, то выводиться урок полностью, если только значение cat, то только категории.

Просто незнаю как это реализовать в файле articles.php

Автор: s1lver 30.8.2012, 07:38
Вариант.

Создаешь пару функции, в одну пишешь вывод урока, в другую вывод категории. При проверки значении параметра просто будешь вызывать нужную функцию.

Автор: dgambu 30.8.2012, 08:11
s1lver,  Спасибо за ответ. Можно пожалуйста попадробней. В коде что куда вставить, а потом буду анализировать. Так лучше язык мне учиться.

Автор: s1lver 30.8.2012, 08:22
допустим у вас есть ссылка вида articles&readtext=1

есть две функции одна 
min_text()
выводит полный список уроков
и 
max_text ()
выводит конкретный урок полностью
то, разбор ссылки будет такой
Код

//получаем ссылку делим ее
$g_exp_url = @explode("readtext=",$g_remuri);
$g_id_articles=$g_exp_url[1];
//тут мы смотрим чтобы значение было числом на всякий случай
    if ($g_exp_url[1] != is_int($g_exp_url[1])) 
//если все как надо то выводим конкретную статью
max_text($g_id_articles);
//если числового значения нет то полный список
         else min_text();



p/s все находится в одном файле

Автор: dgambu 30.8.2012, 08:43
s1lver,  Вы мне объяснили как буд-то я профессионал по PHP.)
Если не сложно можете этот код добавить в файл articles.php, дать мне в готовом виде как говориться. Буду бесконечно благодарен.

Автор: dgambu 31.8.2012, 08:06
Проблема решена. Всем Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)