Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Создаю Редактор Новостей


Автор: ReactOS 17.12.2007, 15:19
Привет!


Решил для своей практики, заняться созданием Рекдактора Новостей.
В процессе создания, уже ни раз проверял Код, пытался найти ошибку, но не нашел!  smile 

Прошу помочь мне, в создании Редактора Новостей!  smile 


newslist.php
Код

<html>

<head>
<title>newslist.php</title>

</head>

<body>

<?

$db_name = "dbnews";
$table = "news";
$host = "localhost";
$user = "root";
$pass = "";

$link = mysql_connect($host, $user, $pass) or
die(mysql_errno($link).mysql_error($link));

$db = mysql_select_db($db_name, $link) or
die(mysql_errno($link).mysql_error($link));

$result = mysql_query($link) or
die(mysql_errno($link).mysql_error($link));

echo("<table border = 1>");
$th = explode("#", "ID#Text#Date#Change#Delete");

echo("<tr><th>");
echo implode("</th><th>", $th);
echo("</th></tr>");
while($data = mysql_fetch_row($result))
    {
        echo("<tr><td>");
        echo implode("</td></td>", $th);
        echo("</td><td><a href = 'changeview.php?id=". $data[0]. "'>Change</a>");
        echo("</td><td><a href = 'changeview.php?id=". $data[0]. "'>Change</a>");
        echo("</td><tr>");
    }


mysql_free_result($result);
mysql_close($link);
echo("</table>");
echo("<a href = 'addnews.php'>Add One News!</a>");    
    
?>


</body>

</html>



addnews.php
Код

<html>

<head>
<title>addnews.php</title>

</head>

<body>

News Body:<br>
<form method = "post" action = "savenews.php">
<textarea rows = "5" cols = "20" name = "newsbody"></textarea><br>
<input type = "submit" value = "Save">
<input type = "reset" value = "Clear">
</form>
<br>

<a href = "newslist.php">Back to the "NewsList"</a>

</body>

</html>



changenews.php
Код

<html>

<head>
<title>Change One News</title>

</head>

<body>


"Body News"<br>


<?php

//Configuration.Connect 
/* begin Config */
$db_name = "dbnews";
$table = "news";
$host = "localhost";
$user = "root";
$pass = "";
/* end Config */


$link = mysql_connect($host, $user, $pass) or
die(mysql_errno($link).mysql_error($link));

$db = mysql_select_db($db_name, $link) or
die(mysql_errno($link).mysql_error($link));

$newsid = $_REQUEST['id'];
$sql_query = "SELECT * FROM news WHERE id = \"$newsid\"";

$result = mysql_query($sql_query, $link) or
die(mysql_errno($link).mysql_error($link));

$data = mysql_fetch_row($result);


// Show
echo("<form method = \"post\" action = \"updatenews.php?id=$newsid\">");

echo("<textarea rows = \"5\" name = \"newsbody\" cols = \"20\">$data[1]</textarea><br>");
// Show


mysql_free_result($result);
mysql_close($link);


?>

<input type = "submit" value = "Save! :)">
<input type = "reset" value = "Reset! :)">
</form>

<br>

<a href = "newslist.php">Back to the "NewsList"! ;)</a>

</body>

</html>



deletenews.php
Код

<?php

//Configuration.Connect 
/* begin Config */
$db_name = "dbnews";
$table = "news";
$host = "localhost";
$user = "root";
$pass = "";
/* end Config */

$link = mysql_connect($host, $user, $pass) or
die(mysql_errno($link).mysql_error($link));

$db = mysql_select_db($db_name, $link) or
die(mysql_errno($link).mysql_error($link));

$newsid = $_REQUEST['id'];
$sqlquery = "DELETE FROM news WHERE id = \"$newsid\"";

$result = mysql_query($sql_query, $link) or
die(mysql_errno($link).mysql_error($link));

mysql_close($link);
header('Location: newslist.php');

?>



savenews.php
Код

<?php

//Configuration.Connect 
/* begin Config */
$db_name = "dbnews";
$table = "news";
$host = "localhost";
$user = "root";
$pass = "";
/* end Config */


$link = mysql_connect($host, $user, $pass) or
die(mysql_errno($link).mysql_error($link));

$db = mysql_select_db($db_name, $link) or
die(mysql_errno($link).mysql_error($link));

$newsbody = $_POST['newsbody'];
$sql_query = "INSERT INTO news (date, text) VALUES (NOW(), \"$newsbody\")";
$result = mysql_query($sql_query, $link) or
die(mysql_errno($link).mysql_error($link));

mysql_close($link);
header('Location: newslist.php');

echo($newsdata);

?>



updatenews.php
Код

<?php

//Configuration.Connect 
/* begin Config */
$db_name = "dbnews";
$table = "news";
$host = "localhost";
$user = "root";
$pass = "";
/* end Config */


$link = mysql_connect($host, $user, $pass) or
die(mysql_errno($link).mysql_error($link));

$db = mysql_select_db($db_name, $link) or
die(mysql_errno($link).mysql_error($link));


$newsbody = $_POST['newsbody'];
$newsid = $_REQUEST['id'];
$sql_query = "UPDATE news SET text = \"$newsid\"";

$result = mysql_query($sql_squery, $link) or
die(mysql_errno($link).mysql_error($link));

mysql_close($link);
header('Location: newslist.php');

?>



SQL-запрос в MySQL:
Код

CREATE TABLE `news` (
  `id` int NOT NULL auto_increment,
  `text` varchar(255) NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY  (`id`)
)



Проблема в том, что новости в MySQL добавляются (я проверил это с помощью phpMyAdmin), НО в Браузере - отображается только ошибка, когда я собираюсь редактировать!

1064 - У меня ошибка в Синтаксисе SQL!


Прошу помочь в Создании!  smile 

Автор: Feldmarschall 17.12.2007, 15:22
Ты бы это... Хотя бы файл и строку, что ли, написал, в которой выдается эта ошибка?

Автор: PARROT 17.12.2007, 15:27
ReactOS, Сам писал скрипт или из книги взял?

Автор: ReactOS 17.12.2007, 15:33
Цитата

Ты бы это... Хотя бы файл и строку, что ли, написал, в которой выдается эта ошибка?


1064
You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for
the right syntax to use near 'Resource id #2' at line 1


После того, как добавил Новость (с помощью "addnews.php"), на "newslist.php" выдает данную ошибку! smile


Цитата

ReactOS, Сам писал скрипт или из книги взял?


Часть сам, часть взял!  smile 

Автор: Feldmarschall 17.12.2007, 15:47
На newslist.php у тебя выполняется только один запрос.
посмотри внимательно на строчку, которая его выполняет. Ничего необычного не видишь?
Сравни тогда с выполнением запросов в других скриптах.

Автор: Feldmarschall 17.12.2007, 16:18
не забывай про функцию mysql_real_escape_string(), которой надо обрабатывать любые данные, помещаемые в запрос.
А в остальном - нормальный редактор. Только стоит подумать о том, чтобы сократить повторяемость кода.
к примеру, файлы savenews.php, deletenews.php и updatenews.php отличаются всего одной строчкой.





Автор: ReactOS 18.12.2007, 13:50
Прежде всего, исправляю свои ошибки:


newslist.php
Код

<html>

<head>
<title>newslist.php</title>

</head>

<body>

<?php

//Configuration.Connect 
/* begin Config */
$db_name = "dbnews";
$table = "news";
$host = "localhost";
$user = "root";
$pass = "";
/* end Config */

$link = mysql_connect($host, $user, $pass) or
die(mysql_errno($link).mysql_error($link));

$db = mysql_select_db($db_name, $link) or
die(mysql_errno($link).mysql_error($link));

$result = mysql_query("SELECT * FROM ". $table, $link) or
die(mysql_errno($link).mysql_error($link));

echo("<table border = 1>");
$th = explode("#", "ID#Text#Date#Change#Delete");

echo("<tr><th>");
echo implode("</th><th>", $th);
echo("</th></tr>");
while($data = mysql_fetch_row($result))
    {
        echo("<tr><td>");
        echo implode("</td><td>", $data);
        echo("</td><td><a href = 'changenews.php?id=". $data[0]. "'>Change</a>");
        echo("</td><td><a href = 'deletenews.php?id=". $data[0]. "'>Delete</a>");
        echo("</td><tr>");
    }


mysql_free_result($result);
mysql_close($link);
echo("</table>");
echo("<a href = 'addnews.php'>Add One News!</a>");    
    
?>


</body>

</html>



update.php
Код

<?php

//Configuration.Connect 
/* begin Config */
$db_name = "dbnews";
$table = "news";
$host = "localhost";
$user = "root";
$pass = "";
/* end Config */


$link = mysql_connect($host, $user, $pass) or
die(mysql_errno($link).mysql_error($link));

//Selecting DB('db_news')
$db = mysql_select_db($db_name, $link) or
die(mysql_errno($link).mysql_error($link));


$newsbody = $_POST['newsbody'];
$newsid = $_REQUEST['id'];
$sql_query = "UPDATE news SET text = \"$newsbody\" WHERE id = \"$newsid\"";

$result = mysql_query($sql_squery, $link) or
die(mysql_errno($link).mysql_error($link));

mysql_close($link);
header('Location: newslist.php');

?>



<html>

<head>
<title>Change One News</title>

</head>

<body>


"Body News"<br>


changenews.php
Код

<?php

//Configuration.Connect 
/* begin Config */
$db_name = "dbnews";
$table = "news";
$host = "localhost";
$user = "root";
$pass = "";
/* end Config */


$link = mysql_connect($host, $user, $pass) or
die(mysql_errno($link).mysql_error($link));

$db = mysql_select_db($db_name, $link) or
die(mysql_errno($link).mysql_error($link));

$newsid = $_REQUEST['id'];
$sql_query = "SELECT * FROM news WHERE id = \"$newsid\"";

$result = mysql_query($sql_query, $link) or
die(mysql_errno($link).mysql_error($link));

$data = mysql_fetch_row($result);


// Show
echo("<form method = \"post\" action = \"updatenews.php?id=$newsid\">");

echo("<textarea rows = \"5\" name = \"newsbody\" cols = \"20\">$data[1]</textarea><br>");
// Show


mysql_free_result($result);
mysql_close($link);


?>

<input type = "submit" value = "Save! :)">
<input type = "reset" value = "Reset! :)">
</form>

<br>

<a href = "newslist.php">Back to the "NewsList"! ;)</a>

</body>

</html>



deletenews.php
Код

<?php

//Configuration.Connect 
/* begin Config */
$db_name = "dbnews";
$table = "news";
$host = "localhost";
$user = "root";
$pass = "";
/* end Config */

$link = mysql_connect($host, $user, $pass) or
die(mysql_errno($link).mysql_error($link));

$db = mysql_select_db($db_name, $link) or
die(mysql_errno($link).mysql_error($link));

$newsid = $_REQUEST['id'];
$sqlquery = "DELETE FROM news WHERE id = \"$newsid\"";

$result = mysql_query($sql_query, $link) or
die(mysql_errno($link).mysql_error($link));

mysql_close($link);
header('Location: newslist.php');

?>



Все работает, как надо, кроме двух функций smile
Изменение и удаление Новостей! smile

Когда пытаюсь изменить/удалить Новость, то пишет ошибку, что мой запрос был пустым! smile
Чего-то не пойму, вроде в запросах пишу, чтобы изменялся, почему пишет Query was Empty! smile

Прошу помощи в доработке данного Редактора! smile

Автор: Feldmarschall 18.12.2007, 13:56
Во-первых, не надо постить сюда тексты скриптов, не относящихся к вопросу. Если у тебя ошибка только в двух.
Во-вторых, с такой внимательностью, как твоя, программирование превратится в весьма нелегкое занятие.

И первая твоя проблема, и вторая, к программированию, как таковому, отношения не имеют. Точно так же ты можешь ошибиться где угодно. К примеру в договоре при приеме на работу можешь написать не 30000 руб, а 30 руб.

Здесь у тебя то же самое. В одном месте одно имя переменной, а в другом - другое.

Частично тебе может помочь во втором случае отображение всех ошибок.
Напиши вначале всех скриптов строчку
error_reporting(E_ALL);

PHP тебя хотя бы предупредит, что ты пвтаешься подставить в mysql_query несуществующую переменную

Автор: bars80080 18.12.2007, 14:10
прикольный запрос для редактирования
Цитата

$sql_query = "SELECT * FROM news WHERE id = \"$newsid\"";

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)