Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Уроки PHP - урок 3.4 - Работа с БД MySQL. Запросы удаления DELETE.

08/12/2019, by Ivan

В прошлом уроке мы разобрались как добавлять новые методы к нашему управляющему классу simpleCMS, теперь давайте добавим еще один метод удаления записи delete().

Добавлять мы будем метод как обычно:

public function delete($mid){
    
}  

 Как вы видите мы передаем параметр $mid - id нашей записи. Если вы вспомните прошлый урок, то мы решили использовать другой способ передачи параметра, напрямую из get-запроса, а сейчас мы попробуем передавать параметр другим путем.

Итак, метод мы определили, давайте теперь напишем обработку пути в файл index.php:

	  switch ($_GET['admin']){
	    case 'add':
		  print $obj->display_admin(); // если переменная равна 1, то отображаем форму добавления
		break;
		case 'update':
		  print $obj->display_update();  // если переменная равна update, то отображаем форму изменения
		break;
		case 'delete':
		  if($_GET['mid']){ //если переменная ровна delete, то проверяем наличие mid
		    $obj->delete($_GET['mid']); //вызываем метод удаления сообщения
			print $obj->display_public(); // если переменной нет, то отображаем сообщения
		  }else{
		    print '<p>Не выбран mid!</p>';
		    print $obj->display_public(); // отображаем список сообщений			
		  }
		break;
		default:
		  print $obj->display_public(); // если переменной нет, то отображаем сообщения
	  }

Чтобы все корректно работало и удалялось сообещение URL должен иметь вид:

http://test/index.php?admin=delete&mid=7

В этом случае будет удалено сообщение с mid=7. Для этого давайте напишем реализацию нашего метода delete():

  public function delete($mid){
    mysql_query('DELETE FROM Messages WHERE mid='.$mid) or die(mysql_error());
  }  

Давайте разберем из чего устроен запрос mysql delete на удаление записи. Сначала идет слово DELETE, за ним мы пишем второй оператор FROM. После оператора FROM мы указываем таблицу из которой нужно удалить записи (ОСТОРОЖНО! если не указать условие удаления, то удаляться все записи в таблице!) и после этого мы указываем условия удаления записей. Нас интересует запись с mid, значение которого мы передаем через параметр метода. В конце мы пишем проверку того выполнел запрос или нет.

Как я говорил ранее наш метод будет вызывать когда в URL будет два параметра admin=delete&mid=7. Для этого мы добавим ссылки под каждым сообщением, подредактировав метод display_public():

  public function display_public() { // метод вывода сообщений
    $content = '';
	$sql = 'SELECT * FROM Messages ORDER BY mid DESC'; //запрос выборки
	$result = mysql_query($sql) or die(mysql_error());  // результат выполнения запроса выборки мы сохраняем в переменную
	while($row = mysql_fetch_array($result)){ // переменную запроса выборки необходимо обработать специальной функцией mysql_fetch_array()
	  $content .= '<div class="post" id="mid-' . $row['mid'] . '">'; // div оборачивающий запись
	  $content .= '<span class="time">#' . $row['mid'] . ' от ' . date('d-m-Y', $row['created']) . '</span><h2>' . $row['title'] . '</h2>'; 	// выводим время и заголовок
	  $content .= '<p>' . $row['bodytext'] . '</p>'; // выводим текст сообщения
	  $content .= '<p>';
	  $content .= '<a href="/index.php?admin=update&mid=' . $row['mid'] . '">Редактировать сообщение</a>'; // добавляем ссылку на редактирование сообщения
	  $content .= '<a href="/index.php?admin=delete&mid=' . $row['mid'] . '">Удалить сообщение</a>'; //добавляем ссылку на удаление сообщения
	  $content .= '</p>';
	  $content .= '</div>'; // конец оборачивающего div'a
	}
	$content .= '<p><a href="/index.php?admin=add">Добавить сообщение</a></p>';
    return $content;
  }

Теперь когда мы кликаем по ссылке удалить сообщение, то сообщение удаляется как это и планировалось. Теперь можно быстро убрать ненужные сообщения со странице прямо с сайта, а не через PhpMyAdmin.

Осталось только сделать небольшие отступы между ссылками редактирования и удаления сообщений:

.post a{
  padding-right: 5px;
}

 

 Думаю на этом урок закончен, в следующем уроке мы разберем еще один важный оператор для выборки из нескольких таблиц JOIN.