logo

Palette - Učinite je šarenom🎨

Palette - Vizuelni page builder. Ne moraš biti dizajner.

Uživo demo Preuzmi Palette

Scroll

PHP lekcije - lekcija 3.4 - Rad sa bazom podataka MySQL. DELETE upiti za brisanje.

26/05/2025, by Ivan

U prethodnoj lekciji smo naučili kako dodati nove metode u našu upravljačku klasu simpleCMS, a sada ćemo dodati još jednu metodu za brisanje zapisa delete().

Dodavamo metod na uobičajen način:

public function delete($mid){

}  

 Kao što vidite, prosleđujemo parametar $mid - id našeg zapisa. Ako se sjetite prethodne lekcije, odlučili smo koristiti drugi način prosleđivanja parametara direktno iz GET zahtjeva, a sada ćemo pokušati proslijediti parametar na drugačiji način.

Dakle, definiravali smo metod, sada napišimo obradu puta u datoteku index.php:

	  switch ($_GET['admin']){
		    case 'add':
			  print $obj->display_admin(); // ako je varijabla jednaka 1, prikazujemo formu za dodavanje
			break;
			case 'update':
			  print $obj->display_update();  // ako je varijabla jednaka update, prikazujemo formu za promjenu
			break;
			case 'delete':
			  if($_GET['mid']){ //ako je varijabla jednaka delete, provjeravamo prisutnost mid
			    $obj->delete($_GET['mid']); //pozivamo metod brisanja poruke
				print $obj->display_public(); // ako varijable nema, prikazujemo poruke
			  }else{
			    print '<p>Mid nije izabran!</p>';
			    print $obj->display_public(); // prikazujemo listu poruka
			  }
			break;
			default:
			  print $obj->display_public(); // ako varijable nema, prikazujemo poruke
		  }

Da bi sve radilo ispravno i poruka se obrisala, URL bi trebao biti:

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

U tom slučaju će se obrisati poruka sa mid=7. Za to ćemo napisati implementaciju našeg metoda delete():

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

Hajde da razmotrimo kako je sastavljen MySQL DELETE upit za brisanje zapisa. Prvo dolazi riječ DELETE, zatim pišemo drugi operator FROM. Nakon operatora FROM navodimo tablicu iz koje trebamo obrisati zapise (PAŽNJA! ako ne navedete uslov za brisanje, brisat će se svi zapisi u tablici!) i nakon toga navodimo uslove za brisanje zapisa. Nas zanima zapis sa mid vrijednosti koju prosleđujemo kroz parametar metoda. Na kraju napišemo provjeru da li je upit izvršen ili nije.

Kao što sam rekao ranije, naš metod će se pozvati kada u URL-u budu dva parametra admin=delete&mid=7. Za to ćemo dodati linkove ispod svake poruke, editujući metod display_public():

  public function display_public() { // metod za prikaz poruka
    $content = '';
	$sql = 'SELECT * FROM Messages ORDER BY mid DESC'; //SELECT upit
	$result = mysql_query($sql) or die(mysql_error());  // rezultat izvršavanja SELECT upita čuvamo u varijablu
	while($row = mysql_fetch_array($result)){ // varijabla SELECT upita mora biti obrađena specijalnom funkcijom mysql_fetch_array()
	  $content .= '<div class="post" id="mid-' . $row['mid'] . '">'; // div koji omotava zapis
	  $content .= '<span class="time">#' . $row['mid'] . ' od ' . date('d-m-Y', $row['created']) . '</span><h2>' . $row['title'] . '</h2>'; 	// prikazujemo vrijeme i naslov
	  $content .= '<p>' . $row['bodytext'] . '</p>'; // prikazujemo tekst poruke
	  $content .= '<p>';
	  $content .= '<a href="/index.php?admin=update&mid=' . $row['mid'] . '">Uredi poruku</a>'; // dodajemo link za uređivanje poruke
	  $content .= '<a href="/index.php?admin=delete&mid=' . $row['mid'] . '">Obriši poruku</a>'; //dodajemo link za brisanje poruke
	  $content .= '</p>';
	  $content .= '</div>'; // kraj div-a koji omotava
	}
	$content .= '<p><a href="/index.php?admin=add">Dodaj poruku</a></p>';
    return $content;
  }

Sada kada kliknemo na link za brisanje poruke, poruka se briše kao što je i planirano. Sada možemo brzo ukloniti nepotrebne poruke sa stranice direktno sa sajta, umjesto kroz PhpMyAdmin.

Ostaje samo da napravimo male razmake između linkova za uređivanje i brisanje poruka:

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

 

 Mislim da je ova lekcija završena, u sljedećoj lekciji ćemo razmotriti još jedan važan operator za izbor iz više tablica JOIN.