Datensätze markieren und löschen

von Wolfgang Arnberger

Werden Datensätze ausgelesen, dann ist es immer auch praktisch
diese mit einer Checkbox zu markieren, um Sie daraufhin zu löschen.
Dieser Trick zeigt, wie es ganz leicht geht.

Sie können Datensätze ganz einfach auslesen. Nur bietet
es sich oftmals an, diese dann gleich zu markieren, und dann entsprechend
zu löschen.
Dabei ist der Trick recht einfach. Zunächst werden die Daten
aus der SQL Tabelle ausgelesen. Die Tabelle wird in unserem Beispiel
mit diesem SQL Code erzeugt:

CREATE TABLE testdaten (
ID mediumint(8) unsigned NOT NULL auto_increment,
feld varchar(50) NOT NULL,
PRIMARY KEY (ID)
);

Jedes Feld ist jetzt durch die ID eindeutig bezeichnet. Über
diese wird der Datensatz angesprochen, und schlussendlich auch gelöscht.
Der hauptsächliche Trick besteht in der Checkbox. Als Wert
wird ihr eben diese ID zugewiesen. Das Array loeschen[]
enthält dann alle ausgewählten Datesätze.

<input type="checkbox" name="loeschen[]"
 value="<? echo '$ID' ?>">

Hier der gesamte PHP Code:

<?
// Verbindung zur Datenbank herstellen
$db=@mysql_connect("localhost","","");
$select=@mysql_select_db("test",$db);

if($submit) {
// Wenn der Submit-Button geklickt wurde ...

// die Anzahl der markierten Datensaetze ermitteln
$y=count($loeschen);
echo 
"$y Datensätze werden gelöscht.<br><br>";

    // Für jeden markierten Datensatz
    // den delete-Befehl aufrufen.
    
for($x=0;$x<$y;$x++) {
    
mysql_query("delete from testdaten 
where ID='$loeschen
[$x]'");
    echo 
"Gelöscht: $loeschen[$x]<br>";
    }
}

// Die vorhandenen Datensätze abrufen
$result=mysql_query("select * from testdaten");

// Nur wenn Daten gefunden wurden,
// wird das Formular angezeigt.
if(mysql_num_rows($result)) {
?>
<form method="post" action="loeschen.php">
  <table width="300" border="0" cellspacing="0" 
cellpadding="0">
  <?
  
// Daten anzeigen
  
while($row=mysql_fetch_array($result,MYSQL_ASSOC)) {
  
$ID=$row["ID"];
  
$feld=$row["feld"];
  
?>
    <tr>
      <td width="30">
        <input type="checkbox" name="loeschen[]" 
value="<? echo $ID ?>">
      </td>
      <td><? echo $feld ?></td>
  </tr>
  <? ?>
</table>
  <br>
  <input type="submit" name="submit" value="Löschen">
</form>
<?
} else {
echo 
"Keine Daten gefunden.";
}
?>

Zunächst wird die Verbindung zur Datenbank aufgebaut.
Ist der Submit-Button geklickt worden, if($submit),
dann wird die Zahl der ausgewählten Elemente ermittelt$y=count($loeschen);.
Jetzt kommt die Lösch-Routine, also die Schleife. Der SQL Befehl
wird für jeden zu löschenden Datensatz dynamisch generiert
und auch übermittelt. Das war die Löschung der einzelnen
Datensätze.

Zunächst müssen die Daten jedoch ausgelesen werden, was
über den restlichen PHP Code gemacht wird.
$result=mysql_query("select * from testdaten");

Ermittelt alle vorhandenen Datensätze. Diese werden dann dynamisch
über eine while-Schleife in das Formular gesetzt.
while($row=mysql_fetch_array($result,MYSQL_ASSOC)) {

Die Checkbox, sowie der Wert von "feld" wird über
die Schleife ausgegeben.

<input type="checkbox" name="loeschen[]" 
value="<? echo $ID ?>">

Das ganze ist für Anfänger vielleicht ein wenig schwer
zu begreifen, Sie sollten das ganze einfach mal ausprobieren.
Die Skripte gibt es hier als Download.
In der Datei "testdaten.sql" befindet sich die SQL Anweisung
für das generieren der Tabelle.
Die Datei "fill.php" füllt ihre Tabelle mit einigen
Testdatensätzen. Auch hier müssen Sie die Daten für
die Datenbankverbindung anpassen.
Die Datei "loeschen.php" ist für das Anzeigen der
Daten, und das löschen der Daten verantwortlich.

(wa | tf)

Vielen dank an IT-Studio.net,
und an Herrn Arnberger.

This entry was posted in PHP Tricks. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *