Простой сайт с нуля на php и mysql #2 - добавление и редактирование материала

Добавил: WorldPad, 2013-01-26 13:16:18. Просмотров: 1386. Категория: Серия простой сайт с нуля на php и mysql

Простой сайт с нуля на php и mysql #2 - добавление и редактирование материала

Продолжаю серию по написанию простого сайта с нуля на php и mysql и теперь мы рассмотрим написание модуля добавления и редактирования уже имеющегося материала на вашем сайте. И так за основу я взял урок "Простой сайт с нуля на php и mysql". Приступим к практике)).

 

Немного переписав основной программный код сайта от первого урока я приступаю к написанию модуля.

 

Первым делом нужно добавить ссылку в шаблон которая будет нас переводить на страницу с формой добавления материала.

Предложение "Тут к примеру меню" меняю на ссылку "<a href='/?page=addnews'>добавить материал</a>".

 

Затем в файле index.php в месте вывода материалов:

<?php
$query = mysql_query( "SELECT * FROM post" );
while( $row = mysql_fetch_assoc($query) ){
    echo "<tr><td>".$row['title']."</td></tr>
          <tr><td>".$row['text']."</td></tr>
          <tr><td height="20"></td></tr>" ;
}
?>

 

Нужно изменить код так чтобы все материалы показывались на главной странице, а на странице /?page=addnews показывалась наша форма.

Для этого делает используем условие if else так:

<?php

$page = $_GET['page'];

if ( !$page ){ // Если страница главная выводим наш материал
   $query = mysql_query( "SELECT * FROM post" );
   while( $row = mysql_fetch_assoc($query) ){
         echo "<tr><td>".$row['title']."</td></tr>
          <tr><td>".$row['text']."</td></tr>
          <tr><td height="20"></td></tr>" ;
   }

} elseif ( $page == 'addnews' ) {

include_once "mod/addnews.php" ; // Подключаем форму добавления материала

}
?>

 

Создадим файл с формой добавления addnews.php и поместим его в предварительно созданую папку mod.

В файле пропиши саму форму:

<form action="/?page=addnews" method="POST">
<tr>
<td>Название:</td><td><input type="text" name="name" value="" size="60" /></td>
</tr>
<tr>
<td>Дата:</td><td><input type="text" name="date" value="" size="30" /></td>
</tr>
<tr>
<td>Автор:</td><td><input type="text" name="author" value="" size="30" /></td>
</tr>
<tr>
<td>Текст:</td><td><textarea rows="10" cols="50"></textarea></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="Сохранить" /></td>
</tr>
</form>

 

Теперь пропишим выше формы, код обработчик который будет получать данные методом POST и после их проверки занесём в базу данных.

<?php
if( isset( $_POST['submit'] ) ){ // Проверка что форма отправлена
    if( empty( $_POST['name'] ) || empty( $_POST['author'] ) || empty( $_POST['text'] ) ){
        // Если поля не заполнены показываем ошибку
        echo '<p style="color:red;">Все поля обязательны к заполнению.</p>';
    }else{
        $name = mysql_real_escape_string( $_POST['name'] );
        $author = mysql_real_escape_string( $_POST['author'] );
        $text = mysql_real_escape_string( $_POST['text'] );
        // заносим данные в базу данных
        if( mysql_query( "INSERT INTO `post` (`id`, `title`, `text`, `user`) VALUES (NULL, '{$name}', '{$text}', '{$author}');" ) ){
            echo '<p style="color:green;">Материал добавлен!</p>';
        }
    }
}
?>

 

Это точно касается добавления материала на сайт, но и форма редактирования не особо отличается.

Ссылка на редактирование материала будет к примеру /?page=editnews и в качестве параметра показывающий который именно материал нам нужно редактировать будем передавать id материала. И снова открываем файл index.php и смотрим код вывода материала который мы не так давно правили.

В него нам нужно всего лишь добавить ссылку на редактирование.

<?php

$page = $_GET['page'];

if ( !$page ){ // Если страница главная выводим наш материал
   $query = mysql_query( "SELECT * FROM post" );
   while( $row = mysql_fetch_assoc($query) ){
         echo "<tr><td>".$row['title']."</td></tr>
          <tr><td>".$row['text']."</td></tr>
          <tr><td height="20"><a href='/?page=editnews&idnews=".$row['id']."'>EDIT</a></td></tr>" ;
   }

} elseif ( $page == 'addnews' ) {

include_once "mod/addnews.php" ; // Подключаем форму добавления материала

} elseif ( $page == 'editnews' ) {

include_once "mod/editnews.php" ; // Подключаем форму добавления материала

}
?>

И так ссылка на редактирование будет/?page=editnews&idnews=1, /?page=editnews&idnews=2, /?page=editnews&idnews=3 и так далее.

Форма же редактирования не очень отличается от формы добавления. Только в форме редактирования нужно делать запрос данных из базы перед выводом формы.

<form action="/?page=editnews&idnews=<?=$idnews;?>" method="POST">
<tr>
<td>Название:</td><td><input type="text" name="name" value="<?=$mysql['title'];?>" size="60" /></td>
</tr>
<tr>
<td>Автор:</td><td><input type="text" name="author" value="<?=$mysql['user'];?>" size="30" /></td>
</tr>
<tr>
<td>Текст:</td><td><textarea name="text" rows="10" cols="50"><?=$mysql['text'];?></textarea></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="Сохранить" /></td>
</tr>
</form>

И код обработчик

<?php

$idnews = intval( $_GET['idnews'] );

if( isset( $_POST['submit'] ) ){ // Проверка что форма отправлена
    if( empty( $_POST['name'] ) || empty( $_POST['author'] ) || empty( $_POST['text'] ) ){
        // Если поля не заполнены показываем ошибку
        echo '<p style="color:red;">Все поля обязательны к заполнению.</p>';
    }else{
        $name = mysql_real_escape_string( $_POST['name'] );
        $author = mysql_real_escape_string( $_POST['author'] );
        $text = mysql_real_escape_string( $_POST['text'] );
        // заносим данные в базу данных
        if( mysql_query( "UPDATE `post` SET `title` = '{$name}', `text` = '{$text}', `user` = '{$author}' WHERE `id` = '{$idnews}';" ) ){
            echo '<p style="color:green;">Материал успешно отредактирован!</p>';
        }
    }
}

$mysql = mysql_fetch_assoc( mysql_query( "SELECT * FROM `post` WHERE `id` = '{$idnews}'" ) );
?>

 

Вот как видите реализовать добавление материалом и их редактирование на сайте не сложно. Ещё хотелось бы посоветовать добавить на ваш Простой сайт с нуля на php и mysql модуль регистрации на php.

 

Так же вы можете прикрутить постраничную навигацию по материалам из этого урока.

 

Надеюсь информация была вам полезна. Дерзайте товарищи!

 

Исходники материала [attachment=10:www.rar].

 

SQL база данных:

CREATE TABLE IF NOT EXISTS `post` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `text` text CHARACTER SET utf8 NOT NULL,
  `user` varchar(10) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;

INSERT INTO `post` (`id`, `title`, `text`, `user`) VALUES
(1, 'Первый пост', 'Текст первого поста', '1'),
(2, 'Первый пост', 'Текст второго поста', '1'),
(3, 'Первый пост', 'Текст третьего поста', '1');

 

Статья по просьбе yura200676, Простой сайт с нуля на php и mysql #2 - добавление и редактирование материала подготовлена для пользователей сайта Arts-UP.ru