Итак, продолжаем серию уроков по Взаимодействию PHP и MYSQL. И сейчас речь пойдет об обновлении данных в базе. Тема – очень легкая, и если вы освоили предыдущие уроки, то вам не составит труда работать с этим. Вы, как и прежде можете использовать файлы и базу данных со второго урока. Скопируйте файл db.php, дабы не писать его дважды.

1. Создайте файл update.php. Он будет отвечать за вывод всех названий новостей. Это нужно для того, чтобы выбрать какую именно новость нужно обновить.

Скопируйте код:

include ("db.php");
 
$query = mysql_query ("SELECT id, title FROM news");
 
while ($row = mysql_fetch_array ($query))
{
printf ("<a href=\"form.php?id=%s\">%s</a><br>", $row["id"], $row["title"]);
}

Что мы сделали? Подключили файл db.php. Выполнили запрос на вывод идентификатора и названия новости. Начали цикл, с условием, выполнять пока не закончатся новости. Ну, и вывели название новости, с ссылкой на файл который отвечает за обновление.

2. Создайте файл form.php. Он нужен для редактирования новости.

Скопируйте код:

include ("db.php");
 
if (isset($_GET["id"])) {$id = $_GET["id"];}
 
$query = mysql_query ("SELECT * FROM news WHERE id='$id'");
$row = mysql_fetch_array ($query);
 
echo "<form method=\"POST\" action=\"handler.php\">
<input name=\"id\" type=\"hidden\" value=\"".$row["id"]."\" />
Название новости:<br>  
<input type=\"text\" name=\"title\" value=\"".$row['title']."\"><br>
Текст новости:<br>
<textarea name=\"text\" cols=\"20\" rows=\"5\">".$row['text']."</textarea><br>
<input type=\"submit\" value=\"Добавить\">
</form>";

Что мы сделали? Подключили файл db.php. Проверили, существует ли глобальная переменная id, если да, то записать ее значение в переменную id. Выполнили запрос на вывод новости которую нужно обновить. Вывели форму для обновления новости.

3. Создайте файл handler.php. Он нужен для непосредственного обновления новости в базе.

Скопируйте код:

include ("db.php");
 
if (isset($_POST["id"])) {$id = $_POST["id"];}
if (isset($_POST["title"])) {$title = $_POST["title"];}
if (isset($_POST["text"])) {$text = $_POST["text"];}
 
$title = htmlspecialchars($title);
$text = htmlspecialchars($text);
$title = stripslashes($title);
$text = stripslashes($text);
 
$query = mysql_query ("UPDATE news SET title='$title', text='$text' WHERE id='$id'");
 
if ($query)
{
echo "Новость успешно обновлена";
}
else
{
echo "Ошибка обновления новости";
}

Что мы сделали? Подключили файл db.php. Выполнили проверку, существует ли глобальные переменные id, title, text, если да, то записать их значения в соответствующие переменные. Обработали данные от посторонних кодов. Выполнили запрос на обновление новости. Если новость обновлена, вывести соответствующие сообщение, если нет, то вывести негативный ответ.

Исходные файлы