Вывод новостей на страницу. Не получаеться

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

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

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Всем добрый вечер.

    Подскажите пожалуйста как сделать следущее.
    В базе данных есть таблица news
    в таблице поля
    id
    title
    text
    textmore


    так вот как вывести на страницу новости
    чтоб вышло так.
    На странице новость выводиться в виде ссылки, если на нее нажать то увидим полную новость.ъ
    При этом надо чтоб выводилось указаное число ссылок(новостей)
    Например выводим 10 ссылок, под ними находиться навигация примерно
    <<<<начало <<123456789>> далее >>>>


    Вот код навигации.
    HTML:
    <?
    $link = mysql_connect("localhost","root",""); //Подключаемся к серверу базы данных
    mysql_select_db("smrty",$link); //Выбираем базу
     function page()
    {
        if(empty($_GET["page"])){
            $page = 0;
        } else {
    if(!is_numeric($_GET["page"])) die("Неправильный формат номера страницы!");
            $page = $_GET["page"];
        }
            return $page;
    }
    
     function sql_query($onpage, $page, $table)
    {
        $begin = $page*$onpage; // откуда начинать
            $sql = "SELECT * FROM ".$table." LIMIT ".$begin.", ".$onpage;
            $result = mysql_query($sql) or die(mysql_error());
            return $result;
    }
    
    
    //Функция навигации:
    
    function navigation($onpage, $page, $table)
    {
            $return = null;
        $count = mysql_query("SELECT COUNT(*) FROM news") or die(mysql_error());
            $count = mysql_fetch_array($count);
            $count = $count[0];
            $pages = $count/$onpage;
            if($page!==0){
                $prev = "<A HREF=\"?page=".($page-1)."\">&lt;</A>";
            } else {
                $prev = "<";
            }
            if($page<round($pages-1)){
                $next = "<A HREF=\"?page=".($page+1)."\">&gt;</A>";
            } else {
                $next = ">";
            }
            for($i=0;$i<$pages;$i++)
            {
                if($i==$page){
                    $return.="[".($i+1)."]";
                } else {
                    $return.="<A HREF=\"?page=".$i."\">[".($i+1)."]</A>";
                }
            }
            return $prev.$return.$next;
    }
    
    
    //С функциями покончили! Как ими пользоваться?
    
    $onpage = 1; // записей на страницу
    $table = "news"; // из какой таблицы
    mysql_connect("localhost", "root", "") or die(mysql_error()); // коннект к БД
    mysql_select_db("smrty"); // выбор БД
    $page = page(); // определяем страницу
    $result = sql_query($onpage, $page, $table); // sql - запрос
    while($data = mysql_fetch_array($result)) // цикл вывода
    {
    // Этот  кусок выводит   поля новостей
     [B]echo " titletext <b>$data[titletext]</b><br /> ";
     echo "id<b> $data[id]</b><br />";
     echo "text<b> $data[text]</b><br />";
      echo "textmore <b>$data[texmore]</b><br />";[/B]
    
    }
    $navigation = navigation($onpage, $page, $table); // определим навигацию
    echo $navigation; // выведем ее
    mysql_close(); // отключение от БД
    ?>
    
    
    
    
    
    
    Хочу делать скриптец CMS.
    но вот не пойму как реализовать нужное.

    Можно сделать что то типа

    HTML:
      echo "<A HREF=?news=$data[id]>$data[titletext]</A><BR>";
         $news = $_GET["news"];
           $is= $data["id"];
            if($news==$is){
       echo " titletext <b>$data[titletext]</b><br /> ";
        echo "id<b> $data[id]</b><br />";
         echo "text<b> $data[text]</b><br />";
            echo "textmore <b>$data[texmore]</b><br />";
            }
    $data[id] это номер статьи.

    Буду благодарен за любые идеи.
     
  2. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
  3. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Перед тем как что-то писать неплохо было бы выучить теорию.
    Не $data[texmore], а $data['texmore'] и так везде.

    ЗЫ писуны, блин...
     
  4. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Я так и делаю , если если вывожу данные так 1) echo $data['tletext'];

    если с кавычками то так 3)
    HTML:
    echo " titletext <b>".$data['titletext']."</b><br /> ";
    PHP_Master а может раскажете чем некорректна строка echo " titletext <b>$data[titletext]</b><br /> "; ?
    Помоему вполне корректна.
     
  5. masnull

    masnull Прохожие

    Вполне корренктна, но не рекомендуется начиная с уровня вывода ошибок E_NOTICE
     
  6. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    С навигацией разобрался.
    Но вот как реализовать чтоб
    например http://сайт.ру/4.php?page=1

    titletext название1
    text короткая новость текст1
    textmore полная новость текст1
    1 | 2 | 3 > >>

    так вот
    я хочу сделать чтоб новость выводилась так

    HTML:
    [B]titletext  название1 в виде ссылки[/B] и
    text  короткая новость текст1
    если нажимаем на ссылку и то открываем страницу полной новости.



    Саму ссылку сделать не проблемма.
    Но я так понимаю что надо сделать условие например
    по ID новости.
    Если жмем на ссылку http://название1
    то видим полную новость.
    урл получиться типа http://сайт.ру/4.php?page=1&news=4

    тоесть &news=4
    выводит новость 4 на странице 1.
    Просто раньше не писал таких приоложений.

    вот примерно такой запрос который выводит нам всю новость
    HTML:
    $result=mysql_query("select id,title,date,description,news from base WHERE title='$search' order by id desc LIMIT $start,$num",$db); 
    $myrow=mysql_fetch_array($result);
    Это код просто для примера.

    Добавлено через 15 минут
    вот полностью рабочий пример.
    в базе такие таблицы
    HTML:
    titletext название1
    datepost  (13:19:19)
    text текст1
    texmore' полный текст1

    на сайте их видно как
    HTML:
    название1 (13:19:19)
    текст1
    полный текст1
    Все нормально работает,теперь надо сделать название ссылкой.
    Нижимая которую будем видеть только полную новость.

    Код:
    <?php$server = 'localhost';
    $user = 'root';
    $pass = '';
    $db = 'smrty';
    $table = 'news';
    $chislo = 1; // ЧИСЛО СООБЩЕНИЙ НА СТРАНИЦЕ
    $connect = mysql_connect ($server, $user, $pass);
    $select = mysql_select_db($db);
    $result = mysql_query("SELECT * from $table ORDER by id desc");
    if (!$result) {
    echo $text_error;
    exit;}
    $num_rows = mysql_num_rows($result);
    $num_rows = round($num_rows/$chislo);
    if (isset($_GET['page'])) {
    $nav = $_GET['page'];
    }
    else {
    $nav = 1;}
    $nav = intval($nav); // ДЛЯ ЗАЩИТЫ ОТ НЕХОРОШИХ ДЯДЕНЕК МЫ ВЫДЕЛИМ ЦЕЛУЮ ЧАСТЬ $GET['str']
    echo 'Навигация: ';
    $num_rows++;
    for ($i=1; $i<$num_rows; $i++)
    {
    if ($i != $nav)
    {
    echo "<a href='?page=$i'>$i</a>";
    }
    else
    {
    echo "<span> $i </span>";
    }
    }
    echo '<hr />';
    if (!isset($_GET['page'])) {
    $page = 0;
    }
    else {
    $page = $_GET['page']*$chislo - $chislo;
    }
    $nomer = $page+$chislo;
    $res = mysql_query("SELECT * from $table ORDER by id limit $page, $chislo");
    if (!$result) {
    echo $text_error;
    exit;
    }
    while ($row = mysql_fetch_array($res))
    {
    $name = $row['titletext'];
    $date = $row['datepost'];
    $com = $row['text'];
     $coms = $row['texmore'];
    echo "<table border=0 cellspacing=0 cellpadding=5 width=100%>
    <tr bgcolor=#eeeeee><td class=td>$name ($date)</td></tr>
    <tr bgcolor=#d2e8ff><td class=td>$com</td></tr>
    <tr bgcolor=#d2e8ff><td class=td>$coms</td></tr>
    </table> <br>";
    
    }
    ?>
     
  7. Alexand87

    Alexand87 Писатель

    Регистр.:
    27 янв 2009
    Сообщения:
    9
    Симпатии:
    0
    Открывай любой простенький движок и смари что там и как
     
  8. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Сдалал так
    Код:
    <?
    
    // Подключение к базе данных
    
    @$db=mysql_connect('localhost','root','');
    mysql_select_db('xxx');
    @$action=$_GET['action'];
    @$id=$_GET['id'];
    if (!$action && !$id){
    
    $sql="SELECT * FROM `news` ORDER BY `id` ASC LIMIT 0,6";
    $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"];
     echo '('.$date.') <a href="6.php?id='.$id.'">'.$tema.'</a><p><hr>';
    }
    } 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>
        <a href="6.php">  Вернуться к новостям</a>';
      }
    
    ?>

    выводит нужное количество ссылок на полную новость.
    Так же выводит саму новость если перейти по ссылке.
    Но по умолчанию на главной одна новость самая последняя видна полностью, и к тому же под ссылками.


    вот пример

    (0000-00-00) Статья 1

    (0000-00-00) Статья 2

    (0000-00-00) Статья 3
    и так все 6 ссылок

    (0000-00-00) Статья 4

    (0000-00-00) Статья 5

    (0000-00-00) Статья 6 < это ссылка

    Статья 6
    Добавил: сиб
    Экологическая обстановка в Москве в пятницу,

    Вернуться к новостям


    вот картинка чтоб проще понять было.

    Надо чтоб видно был только ссылку.
     

    Вложения:

  9. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Нифига не корректна.
    $data[titletext] - неопределённый элемент массива, поскольку при такой записи titletext будет трактоваться не как ключ массива, а как константа (которая не определена).

    Хотя в итоге и сработает, но о коректности говорить не приходится.
     
  10. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    ну так понятно $data[titletext]; что не корректно.

    а так echo "$data[titletext] ";
    так ведь она в кавычках получаеться.
    Или это не важно?
    Век живи век учись,как говориться. :)
     
Статус темы:
Закрыта.