<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Система управления новостями</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link href="style.css" rel="stylesheet" type=text/css>
</head>
<!– background="fon.gif" –>
<body bgcolor="#ffffff" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" bottommargin="0" rightmargin="0">
<?php
$conn = mysql_connect("localhost", "newsadmin", "newsadmin") or die(mysql_error());
$db = mysql_select_db("news",$conn) or die(mysql_error());
mysql_query(" SET CHARSET cp1251 ");
$nums = 10;
if (isset($_GET['page'])) { $page = intval($_GET['page']); }
else { $page = 1; }
$query = "SELECT COUNT(*) AS counter FROM news";
$sql = mysql_query($query,$conn) or die(mysql_error());
$row = mysql_fetch_assoc($sql);
$elements = $row['counter'];
$pages = ceil($elements/$nums);
if ($page < 1) { $page = 1; }
elseif ($page > $pages) { $page = $pages; }
$start = ($page-1)*$nums;
// если в таблице нет записей
if ($start < 0) $start = 0;
$query = "SELECT * FROM news ORDER BY hotnews DESC,date DESC LIMIT {$start}, {$nums}";
$sql = mysql_query($query,$conn) or die(mysql_error());
echo"<table name='outer' height='100%' width='100%' border='0' cellspacing='0' cellpadding='10'>";
echo"<tr height='40px'><td colspan='3' ></td><tr/>";
echo"<tr>";
echo"<td width='10%' align='left'></td>";
echo"<td width='80%' align='left' valign='top'>";
echo"<table name='inner_text' width='100%' height='80%' border='0' cellspacing='0' cellpadding='5'>";
echo"<tr>";
echo"<td width='100%' height='50' align='left' class= 'navigation'>
<a href='index.php'>Новости</a>
<a href='index.php'>Настройки</a>
</td>";
echo"</tr>";
$fulltext = 0;
$info = '';
while ($row = mysql_fetch_assoc($sql))
{
// выводим новости из базы
$id = $row['id'];
$daten = $row['date'];
$head = $row['head'];
$text = $row['text'];
$image = $row['image'];
$hotnews = $row['hotnews'];
echo"<tr>";
$info = "<td width='100%' align='left' class= 'fonts' valign='top'>";
if ($hotnews == 1 ) { $info .= "<tc1>$daten: </tc1>"
. $head . "<a href='readnews.php'> читать</a></td>";
}
elseif ($hotnews == 0 ) { $info .= "<tc>$daten: </tc>"
. $head . "<a href='readnews.php'> читать</a></td>";
}
//if (isset($_GET['fulltext']) AND $fulltext == 0){ $info .= "<br><text>$text</text>"; }
echo $info;
echo"</tr>";
}
echo"</table>";
echo"<table name='inner_pages' width='100%' height='20%' border='0' cellspacing='0' cellpadding='5'>";
echo"<tr>";
echo"<td width='100%' height='80%' align='left' valign='bottom' class= 'navigation'>";
echo"<pg>Страницы: </pg>";
// выводим количество страниц
for ($i=1; $i<=$pages; $i++)
{
if ($i != $page) { echo " <a href='?page=" . $i . "'>" . $i . "</a> "; }
// выбранная страница
//else { echo " <b>" . $i . "</b> "; }
else { echo " <span>" . $i . "</span> "; }
}
echo"</td>";
echo"</tr>";
echo"<tr>";
echo"<td height='20%' class= 'fonts' align='left' valign='bottom'>
<copyright>Мини-система управления новостями</copyright>
</td>";
echo"</tr>";
echo"</table>";
echo"</td>";
echo"<td width='10%' align='left'></td>";
echo"</tr>";
echo"<tr height='20px'><td colspan='3'></td><tr/>";
echo"</table>";
?>
</body>
</html>
Форум → Программирование → PHP для идиотов → Управление новостями - заголовок новости и текст новости
Управление новостями - заголовок новости и текст новости
-
Может кто подскажет какие варианты есть для вывода полного текста новости при щелчке на заголовке.Вот скрипт:
-
-
2 ноября 2009 г. 1:46, спустя 12 минут 2 секунды
я из базы получаю заголовки новостей ($row['head']),вывожу их все (с разбиением по страницам) и нужно при щелчке на конкретный заголовок новости выводить полный текст этой новости ($row['text']).желательно на этой же странице.какие варианты есть это сделать - ?Спустя 295 сек.я наверное не очень четко ставлю вопрос - но блин что-то я не догоняю как его правильно сформулировать,примерно понимаю что надо использовать наверное get и post или что др. но как конкретно - хз. -
2 ноября 2009 г. 1:48, спустя 1 минуту 54 секунды
а зачем выводить их на этой же странице ?
п.с. А вариантов много… все зависит от того, что тебе нужно + от того, какую структуру хочется/можно получить согласно задумки автора.
п.с.2 Такой кусок ненужного кода ни я ни кто другой смотреть не будет, так как и без тебя насмотреться успевают. Если есть конкретные вопросы по конкретному куску кода или конкретной задаче, то да вопрос - поможем. А в куске говна искать изюминку никто не хочет :)Спустя 71 сек.ak1981, передавай ГЕТом АйДишку выбранной/кликнутой новости, и при построении страницы выбирай из базы всю информацию именно по этой новости. -
2 ноября 2009 г. 1:56, спустя 7 минут 42 секунды
я первый пост на форуме запостил :) такой кусок кода у вас считается большим ? просто на будущее знать,может ещё надо будет что запостить. -
2 ноября 2009 г. 2:07, спустя 11 минут 39 секунд
ak1981, передавай ГЕТом АйДишку выбранной/кликнутой новости, и при построении страницы выбирай из базы всю информацию именно по этой новости.
если так делать - то видимо будет на странице только вся инфа по новости с переданной айдишкой т.е. одна новость на странице (по крайней мере я так себе это представляю),а хотелось бы чтобы отстался список заголовков новостей и "развернутая" новость по которой кликнули - ну типа как бывает например список сайтов по категориям,возле названия категории + и когда по нему кликаешь - выводятся подкатегории. -
2 ноября 2009 г. 2:38, спустя 30 минут 15 секунд
п.с.2 Такой кусок ненужного кода ни я ни кто другой смотреть не будет…
конкретный кусок кода:
…
$query = "SELECT * FROM news ORDER BY hotnews DESC,date DESC LIMIT {$start}, {$nums}";
…
$info = "<td width='100%' align='left' class= 'fonts' valign='top'>";
if ($hotnews == 1 ) { $info .= "<tc1>$daten: </tc1>" . $head . "<a href='readnews.php'> читать</a></td>"; }
elseif ($hotnews == 0 ) { $info .= "<tc>$daten: </tc>" . $head . "<a href='readnews.php'> читать</a></td>"; }
echo $info;
это я пробовал сделать с выводом текста новости на другой странице href='readnews.php'.там практически идентичный скрипт,за исключением:
…
$query = "SELECT * FROM news WHERE id = 29";
…
$info = "<td width='100%' align='left' class= 'fonts' valign='top'>";
if ($hotnews == 1 ) { $info .= "<tc1>$daten:</tc1> <a1>" . $head . "</a1>"; }
elseif ($hotnews == 0 ) { $info .= "<tc>$daten:</tc> <a1>" . $head . "</a1>"; }
$info .= "<br><text>$text</text></td>";
echo $info;
вот в этот запрос получается мне и надо передать id с помощью ГЕТа - не знаю как.и есчё получается что у меня будет два практически одинаковых скрипта,
вот и вопрос как это все сделать в одном скрипте если возможно. -
2 ноября 2009 г. 10:55, спустя 8 часов 16 минут 52 секунды
Вывод новостей мне тоже кажется надо делать через переменную GET. А вот что бы они выводились все на одной страницы и другие категории тоже оставалсись, то как мне кажется есть два варианта.
1. Выводиш новость на новой странице. Но и на туже новую страницу заосвываеш заголовки других новостей… Точно также пишеш запрос в БД и вставляеш.
2. Вариант с развертыванием… тут новости будеш выводить в таблице.
Примерно вот так.
Запрос на вывод новостей:$query = "SELECT * FROM news";
$result = mysql_query($query);
А табличку с новостями будеш выводить так:while ($row = mysql_fetch_array($result))
{
Здесь таблица.
При щелчке по ссылке "Подробнее" будет передаваться переменная read.
If ($_GET['read']== какой нибудь уникальный идентификатор, например тот же id){
Делаем проверку
Выводим полный текст новости
}
}
Вот так можно попробовать… Идея в этом мне кажется есть… подумаеш, может что нибудь придумаеш -
2 ноября 2009 г. 11:02, спустя 7 минут 10 секунд
ak1981, передавай ГЕТом АйДишку выбранной/кликнутой новости, и при построении страницы выбирай из базы всю информацию именно по этой новости.
если так делать - то видимо будет на странице только вся инфа по новости с переданной айдишкой т.е. одна новость на странице (по крайней мере я так себе это представляю),а хотелось бы чтобы отстался список заголовков новостей и "развернутая" новость по которой кликнули - ну типа как бывает например список сайтов по категориям,возле названия категории + и когда по нему кликаешь - выводятся подкатегории.
примеры ajax сто раз уже расписывалось… если включишь мозг и прочитаешь , то это то что тебе нужно )
PS если грубо извиняюсь заранее… всю ночь не спал )))) бывает ) -
3 ноября 2009 г. 1:14, спустя 14 часов 12 минут 21 секунду
Если Аякс, то тут не ко мне. А вот если просто среди списка сделать отображение полной новости, то элементарно - запросом вытаскиваешь все заголовки и АйДишки новостей (как обічно) + вторым запросом тут же тащишь инфу о полной новости. И когда в цикле выводишь заголовки, то делаешь проверку на АйДи выводимого заголовка (новости) и того АйДи, который у тебя в ГЕТе будет (требуемая к полному отображению новость): если совпали, то выводить в данной итерации цикла все данные об этой новости (получается полную новость), а далее (в последующих итерациях) просто выводишь оставшиеся заголовки новостей.$query = "SELECT * FROM news ORDER BY hotnews DESC,date DESC LIMIT {$start}, {$nums}";
Если ты так делаешь, то:
1. Тогда не нужно делать второй запрос, так как полные данные о новости уже "вытянуты" этим запросом
2. Это неправильно: нужно выбирать только те данные, которые тебе таки нужны для построения списка заголовков-ссылок, а именно: id (каждой из выбраных новостей), title (заголовок новости), short_text (возможно короткий текст тоже нужен). Но ВСЕ данные обо ВСЕХ новостях тянуть НЕ нужно. Для этого таки лучше два запроса делать.
Итого, в твоем случае нужно сделать примерно так:$query = "SELECT id, title, short_text FROM news ORDER BY hotnews DESC,date DESC LIMIT {$start}, {$nums}";
$query2 = "SELECT full_text FROM news WHERE id=$_GET['id'];
Далее пробуй сам. Скажешь что понял, что получилось, чего не получилось. -
3 ноября 2009 г. 4:03, спустя 2 часа 48 минут 29 секунд
Вот так можно попробовать… Идея в этом мне кажется есть… подумаеш, может что нибудь придумаеш
я что-то похожее пробовал делать - чегой-то не получилось :)Спустя 173 сек.
примеры ajax сто раз уже расписывалось… если включишь мозг и прочитаешь , то это то что тебе нужно )
да я про ajax и всякие другие js догадывался что их здесь можно прицепить,но т.к. с ними не дружу то и не буду пока юзатьСпустя 98 сек.
PS … всю ночь не спал )))) бывает )
судя по твоей аватаре ты боишься замерзнуть :) -
3 ноября 2009 г. 4:12, спустя 9 минут 40 секунд
… Но ВСЕ данные обо ВСЕХ новостях тянуть НЕ нужно. Для этого таки лучше два запроса делать.
согласен что лишнее тянут не надо,но в таблице только 5 полей - и тянуть то нечего,кроме что BLOB поля с картинкой,его наверно не стоит тянуть -
3 ноября 2009 г. 4:38, спустя 25 минут 53 секунды
… И когда в цикле выводишь заголовки, то делаешь проверку на АйДи выводимого заголовка (новости) и того АйДи, который у тебя в ГЕТе будет (требуемая к полному отображению новость): если совпали, то выводить в данной итерации цикла все данные об этой новости (получается полную новость), а далее (в последующих итерациях) просто выводишь оставшиеся заголовки новостей.
я в принципе то получаю уже что нужно (список заголовков новостей и одну с полным текстом новости по нужному АйДи),но только подставляя АйДи "вручную".не понимаю принципа работы всех этих глобальных переменных - и проблема передать нужный АйДи чтобы его потом проверять.сейчас у меня 2 скрипта - index.php и readnews.php. в index.php я вывожу список заголовков новостей и потом при клике на читать нужного заголовка
("<a href='readnews.php?page=".$page."&id_read=".$id_read."'> читать</a> ) перехожу в readnews.php.собственно если я загоню нужный АйДи в $id_read то вопрос будет исчерпан.я вот чего не догоняю:
1. я в цикле прохожу по всем записям таблицы (в index.php) - ГЕТ на каждой итерации будет меняться в соответствии с текущей записью и при выходе из цикла будет содержать значения последней прочитанной записи или в ГЕТе будет массив со всеми записями ?
2. когда перехожу по ссылке в readnews.php - в ГЕТе будут значения установленные в index.php или будут пустые переменные ? -
8 ноября 2009 г. 0:25, спустя 4 дня 19 часов 46 минут
спасибо ,, за помощь.сделал что хотел (айдишник ГЕТом передаю),единстсвенное что получилось 2 скрипта (наверняка можно все в один запыхнуть),но пока сойдет.
Пожалуйста, авторизуйтесь, чтобы написать комментарий!