Как правильно реализовать

Статус
Закрыто для дальнейших ответов.

Fliand

Well-Known Member
Регистрация
16.09.2007
Сообщения
81
Вот хочу написать новостной скрипт. И возник вопрос. Мне нужно, что на главно стр отображались новости, но ни полностью, а токо начало новости и далее мы могли нажимать на ссылку читать дальше и уже просматривать новсть полностью.

Вот сделал так, но не уверен, что это правильно. Плиз подскажите как это лучше сделать.

Код:
<!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">
<title></title>
<link href="styles/style.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="all">
<div id="main">
<div id="top"><h1>Лента новостей</h1></div>
<?php
require_once 'functions.php';
$link = connect_db();
	$rows = mysql_query("SELECT COUNT(*) FROM news;");
	$rows = mysql_fetch_array($rows);
	$rows = $rows['COUNT(*)'];
	
	if(isset($_GET['news'])) {
		$page = $_GET['news'];
		$num_news = $rows;
		
		if($page < 1) $page = 1;
		if($page > $num_news) $page = $num_news;

		$query = "SELECT * FROM news WHERE id=".$page.";";
		$result = mysql_query($query);
		$row = mysql_fetch_array($result);
		
		$head = $row['head'];
		$nick = $row['nick'];
		$msg = $row['text'];
		$date = $row['date'];
		$id = $row['id'];
?>
	<!-- ВЫВОД ПОЛНОГО СООБЩЕНИЯ -->
<?php
	} else {
	if($rows == 0) {
?>
	<p>Новостей нет <b>:(</b></p>
<?php
	}
	
	$page = $_GET['page'];
	$num_page = ceil($rows / $posts);
	
	if(!isset($page)) $page = 1;
	if($page < 1) $page = 1;
	if($page > $num_page) $page = $num_page;
	
	$i = 0;
	$start = ($page-1) * $posts;
	$result = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT ".$start.", ".$posts.";");
	if($result) {
		while($row = mysql_fetch_array($result)) {
		$i++;
			$head = $row['head'];
			$nick = $row['nick'];
			$msg = $row['text'];
			$date = $row['date'];
			$id = $row['id'];
			
?>

	<!-- ВЫВОД ННЕПОЛНЫХ СООБЩЕНИЙ -->
	
<?php
		}
	}
	mysql_close($link);
	
	$url_admin = 'admin.php';

	if($num_page != 1) {
		echo "<div class=\"pages\">";

		$start_page = start_page($page, $num);
		$end_page = end_page($page, $num, $num_page);
		
		if((($page-$num)-1) > 0) echo "<a href=\"$url_admin?page=1\">1</a><b>...</b>";
		if($page > 1) echo "<a href=\"$url_admin?page=".($page-1)."\" title=\"Предыдущая страница\"><</a>";
		
		for($i = $start_page; $i <= $end_page; $i++) {
			if($i == $page) {
?>	
				<a href="<?=$url_admin."?page=".$i;?>" id="this_page"><?=$i;?></a>
<?php			
			} else {
?>
				<a href="<?=$url_admin."?page=".$i;?>" title="<?=$i;?>"><?=$i;?></a>
<?php
			}
		}
		if($page < $num_page) echo "<a href=\"$url_admin?page=".($page+1)."\" title=\"Следующая старница\">></a>";
		if(($page+$num) < $num_page) echo "<b>...</b><a href=\"$url_admin?page=$num_page\">$num_page</a>";
		
		echo "</div>";	
	}

<?php
}
?>
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Код нормальный...
Но вывод неполных сообщений можно сделать легче...
В MySQL есть функция SUBSTR, можно сделать доролнительное поле с неролгными новостями и обозвать его. Вроде должно работать быстрее чем обрабатывать каждую новость в PHP.
А так... Снабжайте всегда свой код коментариями, просто многим не нравится читать пустой код... Слишком муторно. Код вроде валидный )))
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Вы знаете, особых претензий вроде бы нет, просто ощущение что писано по статьям или во времена php3.
Сейчас не модно:
1) разбивать код хтмл вставками, сейчас делают котлеты отдельно, мухи отдельно, в смысле код отдельно шаблоны отдельно
2) мешать работу с базой данных и обработчик
3) почему вы так не любите массивы? зачем массив переносить в переменные(где то лишних 10 строчек), если вы хотите вывести массив в строке: string ="test{array['1'][2]}test";
4) хорошо бы все вывести в классы/функции и для мускула отдельный класс
5) кстати, где-то, то ли здесь, то ли на spravkaweb.ru я писал более правильный запрос для вывода с limit и получения полного кол-ва записей
 

Fliand

Well-Known Member
Регистрация
16.09.2007
Сообщения
81
Просто я недавно начал осваивать php, много незнаю. А как бы правильней было-бы реализовать аторизацию на 3 стр, как раз с шаблонами.
Вот у мя index.php, в ней линк на login.php, в ней мы авторизуемся и скрипт переадрисовывается на admin.php, а отсюда мы уже можем попасть на add_news.php и change_news.php. Впринципе я знаю как делать, но как бы сделать лучше, как сейчас делают. Можно плиз пример кодика простенького, чтоб понять смысл. Заранее спс.
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Вы знаете, Alex, я бы за такие примеры убивал. Кривизна дикая, начнем с того что str_replace работает с массивами. Мешанина еще та, т.е. эта цмс из разряда представленного кода :(
вот код написанный мной наверное год назад, использую до сих пор в некоторых мелких проектах, он почти аналогичен представленному, только не чистит сокращения и поправильней написан
Код:
<?php
/**
 * Класс обработки шаблонов
 *
 */
class templ
{
	var $Dir='';
	function templ($dir = '')
	{
		if($dir!='')
		{
			$this->Dir = $dir.'/';
		}
	}
	/**
	 * PRIVATE метод для преобразования ключей для замены
	 *
	 * @param unknown_type $element
	 * @param unknown_type $key
	 */
	function ext1(&$element,$key)
	{
		$element = "%$key%";
	}	
	/**
	 * Метод использует файл для хранения шаблона
	 *
	 * @param string $FileName
	 * @param assocArrey $ArrayA
	 * @return string/false
	 */
	function CreateTempF($FileName,$ArrayA)
	{
		if(!file_exists($this->Dir.$FileName)){return false;}		
		return $this->CreateTempT(file_get_contents($this->Dir.$FileName),$ArrayA);
	}
	/**
	 * Метод вставляет в шаблон ассоц массив
	 * $text = 'Text %inc% Text'
	 * $ArrayA = array('inc'=>'VAL',..)
	 * result:
	 * Text VAL Text
	 *
	 * @param string $Text
	 * @param assocArrey $ArrayA
	 * @return string
	 */
	function CreateTempT($Text,$ArrayA)
	{		
		$ArrayVal = array_values($ArrayA);
		array_walk($ArrayA,array(&$this,'ext1'));
		return str_replace($ArrayA,$ArrayVal,$Text);
	}
	
}
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Я же сказал, что это нек самый правильный код, а так только для осознавания что такое шаблон и его свойства... Код конечно не из лучших...
 
Статус
Закрыто для дальнейших ответов.
Верх Низ