logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

PHP Lekcije - lekcija 3.4 - Rad sa MySQL bazom podataka. DELETE upiti.

26/05/2025, 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.

U prošlom času smo naučili kako dodavati nove metode našem kontrolnom klasu simpleCMS, sada hajde da dodamo još jednu metodu za brisanje zapisa delete().

Metodu ćemo dodati kao i obično:

public function delete($mid){
    
}  

Kao što vidite, prosleđujemo parametar $mid - id našeg zapisa. Ako se sećate prošlog časa, odlučili smo se za drugačiji način prosleđivanja parametra direktno iz get zahteva, a sada ćemo probati da parametar prosledimo na drugi način.

Metodu smo definisali, sada hajde da napišemo obradu puta u fajlu index.php:

	  switch ($_GET['admin']){
	    case 'add':
		  print $obj->display_admin(); // ako je promenljiva jednaka 'add', prikazujemo formu za dodavanje
		break;
		case 'update':
		  print $obj->display_update();  // ako je promenljiva jednaka 'update', prikazujemo formu za izmenu
		break;
		case 'delete':
		  if($_GET['mid']){ // ako je promenljiva jednaka 'delete', proveravamo postojanje mid
		    $obj->delete($_GET['mid']); // pozivamo metodu za brisanje poruke
			print $obj->display_public(); // prikazujemo poruke
		  }else{
		    print '<p>Nije izabran mid!</p>';
		    print $obj->display_public(); // prikazujemo listu poruka			
		  }
		break;
		default:
		  print $obj->display_public(); // ako promenljive nema, prikazujemo poruke
	  }

Da bi sve radilo ispravno i da bi poruka bila obrisana, URL treba da izgleda ovako:

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

U tom slučaju će biti obrisana poruka sa mid=7. Sada napišimo implementaciju naše metode delete():

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

Hajde da objasnimo kako izgleda mysql DELETE upit za brisanje zapisa. Prvo ide ključna reč DELETE, zatim pišemo ključnu reč FROM. Nakon FROM navodimo tabelu iz koje želimo da obrišemo zapise (PAŽNJA! ako se ne navede uslov brisanja, biće obrisani svi zapisi u tabeli!) i posle toga navodimo uslove brisanja zapisa. Nama je interesantan zapis sa mid vrednošću koju prosleđujemo kao parametar metode. Na kraju pravimo proveru da li je upit uspešno izvršen.

Kao što sam već rekao, naš metod će se pozivati kada u URL budu dva parametra: admin=delete&mid=7. Da bismo omogućili brisanje, dodaćemo linkove ispod svake poruke, izmenivši metodu display_public():

  public function display_public() { // metoda za prikaz poruka
    $content = '';
	$sql = 'SELECT * FROM Messages ORDER BY mid DESC'; // upit za selekciju
	$result = mysql_query($sql) or die(mysql_error());  // rezultat izvršenja upita čuvamo u promenljivoj
	while($row = mysql_fetch_array($result)){ // promenljivu rezultata treba obraditi funkcijom mysql_fetch_array()
	  $content .= '<div class="post" id="mid-' . $row['mid'] . '">'; // div koji obavija zapis
	  $content .= '<span class="time">#' . $row['mid'] . ' od ' . date('d-m-Y', $row['created']) . '</span><h2>' . $row['title'] . '</h2>'; 	// prikazujemo vreme i naslov
	  $content .= '<p>' . $row['bodytext'] . '</p>'; // prikazujemo tekst poruke
	  $content .= '<p>';
	  $content .= '<a href="/index.php?admin=update&mid=' . $row['mid'] . '">Izmeni poruku</a>'; // link za izmenu poruke
	  $content .= '<a href="/index.php?admin=delete&mid=' . $row['mid'] . '">Obriši poruku</a>'; // link za brisanje poruke
	  $content .= '</p>';
	  $content .= '</div>'; // kraj div-a
	}
	$content .= '<p><a href="/index.php?admin=add">Dodaj poruku</a></p>';
    return $content;
  }

Sada kada kliknemo na link za brisanje poruke, poruka će biti obrisana kao što je i planirano. Tako možemo brzo ukloniti nepotrebne poruke sa sajta, a ne preko PhpMyAdmin-a.

Ostaje još da napravimo male razmake između linkova za izmenu i brisanje poruka:

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

 

Mislm da je ovaj čas završen, u sledećem času ćemo proučiti još jedan važan operator za selekciju iz više tabela - JOIN.