Как создать вывод новостей на странице?

Тема в разделе "PHP", создана пользователем асс, 9 фев 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    добрый вечер.
    Хочу сделать скрипт блокнотик.
    Но вот никак не могу понять как мне выводить носоить на странице.
    Вот пример .http://www.regnum.ru/news


    И так название новости она же ссылка на полную новость

    Президент РФ утвердил отмену избирательного залога
    нажимаем на ссылку и переходим к полной новости.
    Мне нужно когда попадаем на полную новость чтоб
    она была в самом верху. Под ней в низу были остальные ссылки на другие новости.


    При этом нужно чтоб на странице выводилось № число новостей

    Может кто помочь? Буду очень благодарен.

    Новости храняться в базе в таблицах
    id
    name
    text
    date






    Собственно вот есть скрипт, в нем выводяться новости и должа быть пагинация.
    Но скрипт очень громоздкий.Может кто подскажет компактное решение?


    PHP:
    <?

    @
    $db=mysql_connect('localhost','root','');
    mysql_select_db('xxx');

    $per_page=10;

    @
    $action=$_GET['action'];
    @
    $id=$_GET['id'];

    if (!
    $id && $action){
    if (isset(
    $_GET['page'])) $page=($_GET['page']-1); else $page=0;
    $start=abs($page*$per_page);
    $q="SELECT count(*) FROM `news`";
    $res=mysql_query($q);
    $row=mysql_fetch_row($res);
    $total_rows=$row[0];
    $num_pages=ceil($total_rows/$per_page);
    echo 
    '<h1>Новости проекта</h1>';
    $sql="SELECT * FROM `news` ORDER BY `id` DESC LIMIT ".($page*$per_page).",".$per_page;
    $result=mysql_query($sql);
    $num_results=mysql_num_rows($result);
    for (
    $i=0$i<$num_results$i++)
        {
        
    $row=mysql_fetch_array($result);
     
    $id=$row["id"];
        
    $author=$row["author"];
        
    $date=$row["date"];
        
    $tema=$row["tema"];
        
    $text=$row["text"];
      echo 
    '<b>'.$tema.'</b><br>

        <a href="/news/'
    .$id.'/">Добавил</a>: <b>'.$author.'</b>

    ('
    .$date.')<p> '.$text.' <hr>';
        }

    for(
    $i=1;$i<=$num_pages;$i++) {
      if (
    $i-== $page) {
        echo

    "[".(abs($i*$per_page)-$per_page+1)." - ".abs($i*$per_page)."]  ";
      }
      else {
        echo 
    '[<a
    href="1.php?action=all&page='
    .$i.'">'.(abs($i*$per_page)-$per_page+1)." - ".abs($i*$per_page)."</a>]  ";
    }}}if (!
    $action && !$id){
    $sql="SELECT * FROM `news` ORDER BY `id` DESC LIMIT 0,10";
    $result=mysql_query($sql);
    $num_results=mysql_num_rows($result);

    for (
    $i=0$i<$num_results$i++)
        {
        
    $row=mysql_fetch_array($result);
        
    $id=$row["id"];

        
    $date=$row["date"];
        
    $tema=$row["tema"];
        echo 
    '('.$date.') <a href="1.php?id='.$id.'">'.$tema.'</a><p>';
        }}
    if (!
    $action && $id){

    $sql="SELECT * FROM `news` WHERE `id`=".$id;
    $result=mysql_query($sql);

        
    $row=mysql_fetch_array($result);
        
    $id=stripslashes($row["id"]);
        
    $author=$row["author"];
        
    $date=$row["date"];
        
    $text=$row["text"];
        
    $tema$row["tema"];
        echo 
    '<h1>'.$tema.'</h1>

        Добавил: <b>'
    .$author.'</b> ('.$date.')<p> '.$text.' <p>';
    }
    ?>
     
  2. Yaggi Jah

    Yaggi Jah Постоялец

    Регистр.:
    15 ноя 2006
    Сообщения:
    75
    Симпатии:
    31
    Вполне себе подходящий по ваши нужды скрипт. Некуда его ужимать :)
     
    асс нравится это.
  3. Kiborgik

    Kiborgik Создатель

    Регистр.:
    7 фев 2009
    Сообщения:
    46
    Симпатии:
    10
    можешь к примеру не делать лишних телодвижений и выводить данные сразу через $row... не присваивая переменым значения, также почему не юзать просто while(mysql_fetch_array($result); ) вместо фора там где не требуеться подсчет итераций ишки
     
    асс нравится это.
  4. asterpool

    asterpool Создатель

    Регистр.:
    24 июн 2008
    Сообщения:
    30
    Симпатии:
    1
    еще если новость выводится, то список не нужно выводить, поставь условие, что если id определен, то чтоб лишний раз for\while не отрабатывал

    можно вывод списка и вывод новости разными файлами сделать, тогда каждый из них будет достаточно компактным)))
     
    асс нравится это.
Статус темы:
Закрыта.