Въпрос към един от уроците тук...

korea60

Registered
Ства въпрос за този урок: http://web-tourist.net/login/login/view.php?st=1204 найстина е хубав и много ми допада като за начинаещ, но да попитам как мога да корегирам проблема с натискане на бутон а"Enter" при въвеждане на новина. Когато го направя системата се бъгва, вероятно защото е зададено да чете '|' при въвеждане.

Проблема е във визуализацията на файла allnews.php
 
Не съм сигурен, но май проблема е в:

$news = ("$title|$date|$news\n"); - от файла add.php, според него се чете заглавието, датата и новината, като същите се разделят с |. но ако се натисне ентер новият текст отива на нов ред в файла news и, май не се прочита.

Дал съм права за четене и запис на всички фаулове.
 
Предлагам ти да пробваш някой друг урок, в който е обяснено как става това с база данни. :)
 
ето ти една елементарна система/сега е драснах../

Създавай си един файл с име: config.php

PHP:
<?php
$hostname = 'localhost';
$username = 'root'; //потребител
$password = 'parola'; //парола на базата
$database = 'database'; //името на базата
$connection = mysql_connect($hostname,$username,$password); //пробваш да се connect-неш към mysql, ако не успееш ще върне грешка
if (!$connection) {
	die('MySQL Connect ГРЕШКА: ' . mysql_error()); //тук показваме грешката
}
mysql_select_db($database, $connection)or die(mysql_error()); //ако успешно си се connect-нал правим опит да вземем базата данни, ако не съществува ще върне грешка
$chars = mysql_query("set character set cp1251") or die(mysql_error());
?>

файла за добавяне(add.php);
PHP:
<?php
include("config.php");
if(isSet($_POST['submit'])) {
	if(isSet($_POST['title'], $_POST['text'], $_POST['author'])) {
		$title = $_POST['title']; //взимаме заглавието
		$author = $_POST['author']; //взимаме автора
		$text = $_POST['text']; //взимаме текста
	} else {
		$title = "";
		$author = "";
		$text = "";
	}
	if(empty($title) || empty($text) || empty($author)) { //проверяваме дали полетата са попълнени, ако някое поле е празно връщаме грешка
		echo "Не си въвел информацията";
	} else {
		$time = time();
		$ip = $_SERVER['REMOTE_ADDR'];
		mysql_query("INSERT INTO `news` (author, title, text, time, ip) VALUES ('{$author}', '{$title}', '{$text}', '{$time}', '{$ip}')") or die(mysql_error()); //ако всичко е наред и няма грешки(празни полета) добавяме информацията в базата
	}
} else {
	echo "
	<form method=\"POST\">
		Автор: <input type=\"text\" name=\"author\" /> <br />
		Заглавие: <input type=\"text\" name=\"title\" /> <br />
		<textarea name=\"text\" rows=\"20\" cols=\"15\"></textarea><br />
		<input type=\"submit\" value=\"Давай!\" name=\"submit\" />
	</form>"; //формата
}
?>

Файл за преглед (view.php);
PHP:
<?php
include("config.php");
if(isSet($_GET['id'])) {
	$id = (int)$_GET['id']; //филтрираме GET да бъде само за числови стойности. Тук доста често се среща грешката, че се ползва функция като addslashes() или mysql_real_escape_string(). Тогава могат да "пробият" системата - някое псевдно хакерче
} else {
	$id = "";
}
$query = mysql_query("SELECT * FROM `news` WHERE `id`='{$id}';")or die(mysql_error()); //правим заявка дали новината съществува
if((mysql_num_rows($query) > 0) && ($id != NULL)) { //ако новината не съществува или не е избрана ще върне грешка
	while ($row = mysql_fetch_object($query)) {
		$date = date("d/M/Y G:i", $row->time);
		echo "Заглавие: {$row->title} <br />
		Текст: {$row->text}<br />
		Публикувано на: {$date}";
	}
} else {
	echo "Новината не съществува.";
}
?>

Файл с всички новини (index.php);
PHP:
<?php
include("config.php");
$query = mysql_query("SELECT * FROM `news` ORDER BY `id`;")or die(mysql_error()); //взимаме новините подредени по ID номера
if(mysql_num_rows($query) > 0) { //използваме if(); ако няма новини да върне грешка
	while ($row = mysql_fetch_object($query)) {
		$date = date("d/M/Y G:i", $row->time); 
		echo "<a href=\"view.php?id={$row->id}\">{$row->title} | {$date}</a> <br />\n";
	}
} else {
	echo "Няма добавени новини.";
}
?>

Това ти е таблицата.
[sql]CREATE TABLE IF NOT EXISTS `news` (
`id` int(15) NOT NULL auto_increment,
`author` varchar(50) NOT NULL,
`ip` varchar(15) NOT NULL,
`title` varchar(50) NOT NULL,
`text` TEXT NOT NULL,
`time` varchar(50) NOT NULL default '0',
PRIMARY KEY (`id`)
);[/sql]

Може лесно да се добавят и категории както и BBCODE.. :?: Точно и за т'ва ти пиша една елементарна система долу-горе да и схванеш смисъла /някъде съм писал и коментари/

Давам ти примера с база от данни, защото по-бързо ще се извежда информацията.. абе въобще всичко е по-бързо.

Все пак е хубаво да прочетеш и как се работи с файлове - налага се по някой път. ;)
 
nom3r1 благодаря за скрипта, но не съм много в ча с mysql - даже незнам как да направя последното SQL-а.

Трябва ми guestbook, а даденият пример вършеше страхотна за мене работа докато не се сблъсках с грешката от натискането на Enter-a.


Мерси все пак, по нататак ще разгледам и даденият скрипт.
 

Горе