logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaring❗

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

❗Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll

PHP-lessen - les 3.4 - Werken met MySQL-databases. DELETE-verzoeken (verwijderquery’s).

09/10/2025, by Ivan

In de vorige les hebben we geleerd hoe we nieuwe methoden kunnen toevoegen aan onze beheersklasse simpleCMS. Nu voegen we nog een methode toe voor het verwijderen van een record: delete().

We voegen de methode toe zoals gebruikelijk:

public function delete($mid){
    
}  

 Zoals je ziet, geven we de parameter $mid door — het ID van onze record. Als je je de vorige les herinnert, besloten we een andere manier van parameterdoorvoer te gebruiken, namelijk direct via een GET-verzoek. Nu proberen we een andere aanpak.

We hebben de methode gedefinieerd, laten we nu de routeverwerking toevoegen in het bestand index.php:

	  switch ($_GET['admin']){
	    case 'add':
		  print $obj->display_admin(); // als de variabele gelijk is aan add, toon het formulier voor toevoegen
		break;
		case 'update':
		  print $obj->display_update();  // als de variabele gelijk is aan update, toon het formulier voor bewerken
		break;
		case 'delete':
		  if($_GET['mid']){ // als de variabele gelijk is aan delete, controleer of mid bestaat
		    $obj->delete($_GET['mid']); // roep de verwijdermethode aan
			print $obj->display_public(); // toon de berichten na verwijderen
		  }else{
		    print '<p>Geen mid geselecteerd!</p>';
		    print $obj->display_public(); // toon de lijst met berichten			
		  }
		break;
		default:
		  print $obj->display_public(); // standaard: toon alle berichten
	  }

Om alles correct te laten werken en het bericht te verwijderen, moet de URL er als volgt uitzien:

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

In dit geval wordt het bericht met mid=7 verwijderd. Laten we nu de implementatie van onze methode delete() schrijven:

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

Laten we analyseren hoe een MySQL DELETE-query is opgebouwd. Eerst gebruiken we het sleutelwoord DELETE, gevolgd door de operator FROM. Daarna geven we de tabel op waaruit we records willen verwijderen. (LET OP! Als je geen verwijderingsvoorwaarde opgeeft, worden alle records uit de tabel verwijderd!) Vervolgens specificeren we de voorwaarde voor het verwijderen. In ons geval is dat het record met een specifiek mid-nummer dat via de parameter wordt doorgegeven. Aan het einde voegen we een foutcontrole toe om te zien of de query correct is uitgevoerd.

Zoals eerder vermeld, wordt onze methode aangeroepen wanneer de URL twee parameters bevat: admin=delete&mid=7. Om dat te laten werken, voegen we onder elk bericht een verwijderlink toe door de methode display_public() aan te passen:

  public function display_public() { // methode voor het weergeven van berichten
    $content = '';
	$sql = 'SELECT * FROM Messages ORDER BY mid DESC'; // selectquery
	$result = mysql_query($sql) or die(mysql_error());  // sla het queryresultaat op in een variabele
	while($row = mysql_fetch_array($result)){ // verwerk het resultaat met mysql_fetch_array()
	  $content .= '<div class="post" id="mid-' . $row['mid'] . '">'; // div voor het bericht
	  $content .= '<span class="time">#' . $row['mid'] . ' van ' . date('d-m-Y', $row['created']) . '</span><h2>' . $row['title'] . '</h2>'; 	// toon tijd en titel
	  $content .= '<p>' . $row['bodytext'] . '</p>'; // toon berichttekst
	  $content .= '<p>';
	  $content .= '<a href="/index.php?admin=update&mid=' . $row['mid'] . '">Bericht bewerken</a>'; // link voor bewerken
	  $content .= '<a href="/index.php?admin=delete&mid=' . $row['mid'] . '">Bericht verwijderen</a>'; // link voor verwijderen
	  $content .= '</p>';
	  $content .= '</div>'; // einde van div
	}
	$content .= '<p><a href="/index.php?admin=add">Bericht toevoegen</a></p>';
    return $content;
  }

Nu, wanneer we op de link “Bericht verwijderen” klikken, wordt het bericht daadwerkelijk verwijderd — precies zoals bedoeld. We kunnen nu snel ongewenste berichten direct op de website verwijderen, zonder phpMyAdmin te gebruiken.

Tot slot voegen we wat ruimte toe tussen de links voor bewerken en verwijderen:

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

 

Ik denk dat deze les hiermee afgerond is. In de volgende les zullen we een andere belangrijke operator bespreken voor het ophalen van gegevens uit meerdere tabellen tegelijk: JOIN.