ФорумПрограммированиеPHP для идиотов → Управление новостями - заголовок новости и текст новости

Управление новостями - заголовок новости и текст новости

  • ak1981

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 1 ноября 2009 г. 17:26

    Может кто подскажет какие варианты есть для вывода полного текста новости при щелчке на заголовке.Вот скрипт:



    <!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;>

    <html>
    <head>
    <title>Система управления новостями</title>
    <meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=windows-1251&quot;>
    <link href=&quot;style.css&quot; rel=&quot;stylesheet&quot; type=text/css>
    </head>

    <!– background=&quot;fon.gif&quot; –>
    <body bgcolor=&quot;#ffffff&quot; topmargin=&quot;0&quot; leftmargin=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; bottommargin=&quot;0&quot; rightmargin=&quot;0&quot;>

    <?php
    $conn = mysql_connect(&quot;localhost&quot;, &quot;newsadmin&quot;, &quot;newsadmin&quot;) or die(mysql_error());
    $db = mysql_select_db(&quot;news&quot;,$conn) or die(mysql_error());
    mysql_query(&quot; SET CHARSET cp1251 &quot;);

    $nums = 10;

    if (isset($_GET[&#39;page&#39;])) { $page = intval($_GET[&#39;page&#39;]); }
    else { $page = 1; }

    $query = &quot;SELECT COUNT(*) AS counter FROM news&quot;;
    $sql = mysql_query($query,$conn) or die(mysql_error());
    $row = mysql_fetch_assoc($sql);

    $elements = $row[&#39;counter&#39;];

    $pages = ceil($elements/$nums);

    if ($page < 1) { $page = 1; }
    elseif ($page > $pages) { $page = $pages; }

    $start = ($page-1)*$nums;

    // если в таблице нет записей
    if ($start < 0) $start = 0;

    $query = &quot;SELECT * FROM news ORDER BY hotnews DESC,date DESC LIMIT {$start}, {$nums}&quot;;
    $sql = mysql_query($query,$conn) or die(mysql_error());

    echo&quot;<table name=&#39;outer&#39; height=&#39;100%&#39; width=&#39;100%&#39; border=&#39;0&#39; cellspacing=&#39;0&#39; cellpadding=&#39;10&#39;>&quot;;
    echo&quot;<tr height=&#39;40px&#39;><td colspan=&#39;3&#39; ></td><tr/>&quot;;
    echo&quot;<tr>&quot;;
    echo&quot;<td width=&#39;10%&#39; align=&#39;left&#39;></td>&quot;;
    echo&quot;<td width=&#39;80%&#39; align=&#39;left&#39; valign=&#39;top&#39;>&quot;;

    echo&quot;<table name=&#39;inner_text&#39; width=&#39;100%&#39; height=&#39;80%&#39; border=&#39;0&#39; cellspacing=&#39;0&#39; cellpadding=&#39;5&#39;>&quot;;
    echo&quot;<tr>&quot;;
    echo&quot;<td width=&#39;100%&#39; height=&#39;50&#39; align=&#39;left&#39; class= &#39;navigation&#39;>
    <a href=&#39;index.php&#39;>Новости</a>
    <a href=&#39;index.php&#39;>Настройки</a>
    </td>&quot;;
    echo&quot;</tr>&quot;;
    $fulltext = 0;
    $info = &#39;&#39;;
    while ($row = mysql_fetch_assoc($sql))
    {
    // выводим новости из базы
    $id = $row[&#39;id&#39;];
    $daten = $row[&#39;date&#39;];
    $head = $row[&#39;head&#39;];
    $text = $row[&#39;text&#39;];
    $image = $row[&#39;image&#39;];
    $hotnews = $row[&#39;hotnews&#39;];
    echo&quot;<tr>&quot;;
    $info = &quot;<td width=&#39;100%&#39; align=&#39;left&#39; class= &#39;fonts&#39; valign=&#39;top&#39;>&quot;;
    if ($hotnews == 1 ) { $info .= &quot;<tc1>$daten:&amp;nbsp;&amp;nbsp;</tc1>&quot;
    . $head . &quot;<a href=&#39;readnews.php&#39;>&amp;nbsp;читать</a></td>&quot;;
    }
    elseif ($hotnews == 0 ) { $info .= &quot;<tc>$daten:&amp;nbsp;&amp;nbsp;</tc>&quot;
    . $head . &quot;<a href=&#39;readnews.php&#39;>&amp;nbsp;читать</a></td>&quot;;
    }
    //if (isset($_GET[&#39;fulltext&#39;]) AND $fulltext == 0){ $info .= &quot;<br><text>$text</text>&quot;; }
    echo $info;
    echo&quot;</tr>&quot;;
    }
    echo&quot;</table>&quot;;
    echo&quot;<table name=&#39;inner_pages&#39; width=&#39;100%&#39; height=&#39;20%&#39; border=&#39;0&#39; cellspacing=&#39;0&#39; cellpadding=&#39;5&#39;>&quot;;
    echo&quot;<tr>&quot;;
    echo&quot;<td width=&#39;100%&#39; height=&#39;80%&#39; align=&#39;left&#39; valign=&#39;bottom&#39; class= &#39;navigation&#39;>&quot;;
    echo&quot;<pg>Страницы:&amp;nbsp;</pg>&quot;;
    // выводим количество страниц
    for ($i=1; $i<=$pages; $i++)
    {
    if ($i != $page) { echo &quot; <a href=&#39;?page=&quot; . $i . &quot;&#39;>&quot; . $i . &quot;</a> &quot;; }
    // выбранная страница
    //else { echo &quot; <b>&quot; . $i . &quot;</b> &quot;; }
    else { echo &quot; <span>&quot; . $i . &quot;</span> &quot;; }
    }
    echo&quot;</td>&quot;;
    echo&quot;</tr>&quot;;
    echo&quot;<tr>&quot;;
    echo&quot;<td height=&#39;20%&#39; class= &#39;fonts&#39; align=&#39;left&#39; valign=&#39;bottom&#39;>
    <copyright>Мини-система управления новостями</copyright>
    </td>&quot;;
    echo&quot;</tr>&quot;;
    echo&quot;</table>&quot;;

    echo&quot;</td>&quot;;
    echo&quot;<td width=&#39;10%&#39; align=&#39;left&#39;></td>&quot;;
    echo&quot;</tr>&quot;;
    echo&quot;<tr height=&#39;20px&#39;><td colspan=&#39;3&#39;></td><tr/>&quot;;
    echo&quot;</table>&quot;;

    ?>

    </body>
    </html>


  • Sinkler

    Сообщения: 9655 Репутация: N Группа: в ухо

    Spritz 1 ноября 2009 г. 17:34, спустя 7 минут 44 секунды

    в смысле?
  • ak1981

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 1 ноября 2009 г. 17:46, спустя 12 минут 2 секунды

    я из базы получаю заголовки новостей ($row[&#39;head&#39;]),вывожу их все (с разбиением по страницам) и нужно при щелчке на конкретный заголовок новости выводить полный текст этой новости ($row[&#39;text&#39;]).желательно на этой же странице.какие варианты есть это сделать - ? {+++295+++} я наверное не очень четко ставлю вопрос - но блин что-то я не догоняю как его правильно сформулировать,примерно понимаю что надо использовать наверное get и post или что др. но как конкретно - хз.
  • Givi

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 1 ноября 2009 г. 17:48, спустя 1 минуту 54 секунды

    а зачем выводить их на этой же странице ?

    п.с. А вариантов много… все зависит от того, что тебе нужно + от того, какую структуру хочется/можно получить согласно задумки автора.
    п.с.2 Такой кусок ненужного кода ни я ни кто другой смотреть не будет, так как и без тебя насмотреться успевают. Если есть конкретные вопросы по конкретному куску кода или конкретной задаче, то да вопрос - поможем. А в куске говна искать изюминку никто не хочет :) {+++71+++} ak1981, передавай ГЕТом АйДишку выбранной/кликнутой новости, и при построении страницы выбирай из базы всю информацию именно по этой новости.
  • ak1981

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 1 ноября 2009 г. 17:56, спустя 7 минут 42 секунды

    я первый пост на форуме запостил :) такой кусок кода у вас считается большим ? просто на будущее знать,может ещё надо будет что запостить.
  • ak1981

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 1 ноября 2009 г. 18:07, спустя 11 минут 39 секунд

    ak1981, передавай ГЕТом АйДишку выбранной/кликнутой новости, и при построении страницы выбирай из базы всю информацию именно по этой новости.

    если так делать - то видимо будет на странице только вся инфа по новости с переданной айдишкой т.е. одна новость на странице (по крайней мере я так себе это представляю),а хотелось бы чтобы отстался список заголовков новостей и &quot;развернутая&quot; новость по которой кликнули - ну типа как бывает например список сайтов по категориям,возле названия категории + и когда по нему кликаешь - выводятся подкатегории.
  • ak1981

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 1 ноября 2009 г. 18:38, спустя 30 минут 15 секунд

    п.с.2 Такой кусок ненужного кода ни я ни кто другой смотреть не будет…

    конкретный кусок кода:



    $query = &quot;SELECT * FROM news ORDER BY hotnews DESC,date DESC LIMIT {$start}, {$nums}&quot;;

    $info = &quot;<td width=&#39;100%&#39; align=&#39;left&#39; class= &#39;fonts&#39; valign=&#39;top&#39;>&quot;;
    if ($hotnews == 1 ) { $info .= &quot;<tc1>$daten:&amp;nbsp;&amp;nbsp;</tc1>&quot; . $head . &quot;<a href=&#39;readnews.php&#39;>&amp;nbsp;читать</a></td>&quot;; }
    elseif ($hotnews == 0 ) { $info .= &quot;<tc>$daten:&amp;nbsp;&amp;nbsp;</tc>&quot; . $head . &quot;<a href=&#39;readnews.php&#39;>&amp;nbsp;читать</a></td>&quot;; }
    echo $info;


    это я пробовал сделать с выводом текста новости на другой странице href=&#39;readnews.php&#39;.там практически идентичный скрипт,за исключением:



    $query = &quot;SELECT * FROM news WHERE id = 29&quot;;

    $info = &quot;<td width=&#39;100%&#39; align=&#39;left&#39; class= &#39;fonts&#39; valign=&#39;top&#39;>&quot;;
    if ($hotnews == 1 ) { $info .= &quot;<tc1>$daten:</tc1> <a1>&quot; . $head . &quot;</a1>&quot;; }
    elseif ($hotnews == 0 ) { $info .= &quot;<tc>$daten:</tc> <a1>&quot; . $head . &quot;</a1>&quot;; }
    $info .= &quot;<br><text>$text</text></td>&quot;;
    echo $info;


    вот в этот запрос получается мне и надо передать id с помощью ГЕТа - не знаю как.и есчё получается что у меня будет два практически одинаковых скрипта,
    вот и вопрос как это все сделать в одном скрипте если возможно.
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 2 ноября 2009 г. 2:55, спустя 8 часов 16 минут 52 секунды

    Вывод новостей мне тоже кажется надо делать через переменную GET. А вот что бы они выводились все на одной страницы и другие категории тоже оставалсись, то как мне кажется есть два варианта.

    1. Выводиш новость на новой странице. Но и на туже новую страницу заосвываеш заголовки других новостей… Точно также пишеш запрос в БД и вставляеш.

    2. Вариант с развертыванием… тут новости будеш выводить в таблице.

    Примерно вот так.

    Запрос на вывод новостей:

    $query = &quot;SELECT * FROM news&quot;;
    $result = mysql_query($query);


    А табличку с новостями будеш выводить так:

    while ($row = mysql_fetch_array($result))
    {  
    Здесь таблица.

    При щелчке по ссылке &quot;Подробнее&quot; будет передаваться переменная read.

    If ($_GET[&#39;read&#39;]== какой нибудь уникальный идентификатор, например тот же id){
    Делаем проверку
    Выводим полный текст новости
    }

    }



    Вот так можно попробовать… Идея в этом мне кажется есть… подумаеш, может что нибудь придумаеш
  • mario

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 2 ноября 2009 г. 3:02, спустя 7 минут 10 секунд


    ak1981, передавай ГЕТом АйДишку выбранной/кликнутой новости, и при построении страницы выбирай из базы всю информацию именно по этой новости.

    если так делать - то видимо будет на странице только вся инфа по новости с переданной айдишкой т.е. одна новость на странице (по крайней мере я так себе это представляю),а хотелось бы чтобы отстался список заголовков новостей и &quot;развернутая&quot; новость по которой кликнули - ну типа как бывает например список сайтов по категориям,возле названия категории + и когда по нему кликаешь - выводятся подкатегории.

    примеры ajax сто раз уже расписывалось… если включишь мозг и прочитаешь , то это то что тебе нужно )
    PS если грубо извиняюсь заранее… всю ночь не спал )))) бывает )
  • Givi

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 2 ноября 2009 г. 17:14, спустя 14 часов 12 минут 21 секунду

    Если Аякс, то тут не ко мне. А вот если просто среди списка сделать отображение полной новости, то элементарно - запросом вытаскиваешь все заголовки и АйДишки новостей (как обічно) + вторым запросом тут же тащишь инфу о полной новости. И когда в цикле выводишь заголовки, то делаешь проверку на АйДи выводимого заголовка (новости) и того АйДи, который у тебя в ГЕТе будет (требуемая к полному отображению новость): если совпали, то выводить в данной итерации цикла все данные об этой новости (получается полную новость), а далее (в последующих итерациях) просто выводишь оставшиеся заголовки новостей.

    $query = &quot;SELECT * FROM news ORDER BY hotnews DESC,date DESC LIMIT {$start}, {$nums}&quot;;

    Если ты так делаешь, то:
    1. Тогда не нужно делать второй запрос, так как полные данные о новости уже &quot;вытянуты&quot; этим запросом
    2. Это неправильно: нужно выбирать только те данные, которые тебе таки нужны для построения списка заголовков-ссылок, а именно: id (каждой из выбраных новостей), title (заголовок новости), short_text (возможно короткий текст тоже нужен). Но ВСЕ данные обо ВСЕХ новостях тянуть НЕ нужно. Для этого таки лучше два запроса делать.
    Итого, в твоем случае нужно сделать примерно так:

    $query = &quot;SELECT id, title, short_text FROM news ORDER BY hotnews DESC,date DESC LIMIT {$start}, {$nums}&quot;;
    $query2 = &quot;SELECT full_text FROM news WHERE id=$_GET[&#39;id&#39;];

    Далее пробуй сам. Скажешь что понял, что получилось, чего не получилось.
  • ak1981

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 2 ноября 2009 г. 20:03, спустя 2 часа 48 минут 29 секунд



    Вот так можно попробовать… Идея в этом мне кажется есть… подумаеш, может что нибудь придумаеш


    я что-то похожее пробовал делать - чегой-то не получилось :) {+++173+++}

    примеры ajax сто раз уже расписывалось… если включишь мозг и прочитаешь , то это то что тебе нужно )

    да я про ajax и всякие другие js догадывался что их здесь можно прицепить,но т.к. с ними не дружу то и не буду пока юзать {+++98+++}

    PS … всю ночь не спал )))) бывает )

    судя по твоей аватаре ты боишься замерзнуть :)
  • ak1981

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 2 ноября 2009 г. 20:12, спустя 9 минут 40 секунд


    … Но ВСЕ данные обо ВСЕХ новостях тянуть НЕ нужно. Для этого таки лучше два запроса делать.

    согласен что лишнее тянут не надо,но в таблице только 5 полей - и тянуть то нечего,кроме что BLOB поля с картинкой,его наверно не стоит тянуть
  • ak1981

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 2 ноября 2009 г. 20:38, спустя 25 минут 53 секунды


    … И когда в цикле выводишь заголовки, то делаешь проверку на АйДи выводимого заголовка (новости) и того АйДи, который у тебя в ГЕТе будет (требуемая к полному отображению новость): если совпали, то выводить в данной итерации цикла все данные об этой новости (получается полную новость), а далее (в последующих итерациях) просто выводишь оставшиеся заголовки новостей.

    я в принципе то получаю уже что нужно (список заголовков новостей и одну с полным текстом новости по нужному АйДи),но только подставляя АйДи &quot;вручную&quot;.не понимаю принципа работы всех этих глобальных переменных - и проблема передать нужный АйДи чтобы его потом проверять.сейчас у меня 2 скрипта - index.php и readnews.php. в index.php я вывожу список заголовков новостей и потом при клике на читать нужного заголовка
    (&quot;&lt;a href=&#39;readnews.php?page=&quot;.$page.&quot;&amp;id_read=&quot;.$id_read.&quot;&#39;>&amp;nbsp;читать&lt;/a> ) перехожу в readnews.php.собственно если я загоню нужный АйДи в $id_read то вопрос будет исчерпан.я вот чего не догоняю:
    1. я в цикле прохожу по всем записям таблицы (в index.php) - ГЕТ на каждой итерации будет меняться в соответствии с текущей записью и при выходе из цикла будет содержать значения последней прочитанной записи или в ГЕТе будет массив со всеми записями ?
    2. когда перехожу по ссылке в readnews.php - в ГЕТе будут значения установленные в index.php или будут пустые переменные ?
  • ak1981

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 7 ноября 2009 г. 16:25, спустя 4 дня 19 часов 46 минут

    спасибо
    ,
    ,
    за помощь.сделал что хотел (айдишник ГЕТом передаю),единстсвенное что получилось 2 скрипта (наверняка можно все в один запыхнуть),но пока сойдет.
  • 2 августа 2017 г. 6:18, спустя 2824 дня 12 часов 53 минуты

    Пользователь был удалён, сообщения недоступны


Пожалуйста, авторизуйтесь, чтобы написать комментарий!