Aus einer Liste von Datensätzen einzelne entfernen bzw. updaten

Cappaja

Erfahrenes Mitglied
Hallo,

folgendes Problem: Ich generiere via PHP aus einer Datenbank mit folgendem Code eine Liste die auch ohne Probleme korrekt angezeigt wird:

PHP:
echo "<table>";
echo "<tr><th>ID</th><th>Name</th><th>Passwort</th><th>Rolle</th></tr>";
while($obj = $result->fetch_object()) {
	echo "<tr>";
	echo "<td>".$obj->id."</td>";
	echo "<td>".$obj->name."</td>";
	echo "<td>".$obj->password."</td>";
	echo '<td>';
	echo '<select name="role" size="1">';
	
	switch($obj->role)
	{
		case "Projektleiter":
			echo '<option value="Projektleiter" selected="selected">Projektleiter</option>';
			echo '<option value="Entwickler">Entwickler</option>';
			echo '<option value="Anforderer">Anforderer</option>';
			break;
		case "Entwickler":
			echo '<option value="Projektleiter">Projektleiter</option>';
			echo '<option value="Entwickler" selected="selected">Entwickler</option>';
			echo '<option value="Anforderer">Anforderer</option>';		
			break;
		case "Anforderer":
			echo '<option value="Projektleiter">Projektleiter</option>';
			echo '<option value="Entwickler">Entwickler</option>';
			echo '<option value="Anforderer" selected="selected">Anforderer</option>';		
			break;
		default:
			echo "</select><p><b>Unbekannte Rolle in users.php</b></p><select>";
	}
	
	echo '</select>';
	echo '</td>';
	echo '<td><input name="save" type="button" value="Speichern" /></td>';
	echo '<td><input name="del" type="button" value="Löschen" /></td>';
	echo "</tr>";
}
echo "</table>";

Jetzt können aber mehrere Einträge in dieser Liste stehen und jeder Eintrag soll separat, ähnlich wie in PHPMyAdmin, gelöscht oder aktualisiert werden können.

Meine Frage: Wie kann ich einen Eintrag gezielt löschen oder aktualisieren? Stimmt der Type Button oder brauch ich ein Submit? Kann ja nicht jeden Eintrag mit isset() prüfen, da muss es doch so eine Art Array-Funktion geben!? Das Attribut name der beiden input-Felder kann ich natürlich problemlos über einen iterator beliebig unterschiedlich nennen aber das löst mein Problem ja nicht wirklich. Ich hoffe ihr könnt mir da weiterhelfen...

Beste Grüße

Cappaja
 
Löschen:

$sql = "DELETE FROM Projektleiter WHERE `id` = '$id'";

Ändern:

$sql = "UPDATE `Projektleiter` SET ".
"`name` = '$name', ".
"`password` = '$password' ".
"WHERE `id` = '$id' LIMIT 1";
 
Hey MatMagic,

danke für die Gegenantwort ;) Allerdings ist das nicht meine Frage. Nicht seitens SQL sondern PHP. Ich habe in meiner angezeigten Liste für jeden Datensatz je zwei Buttons (Löschen und Speichern) woher finde ich jetzt PHP-seitig heraus welchen Datensatz ich gerade updaten oder löschen möchte? Eigentlich macht man das über isset() aber bei vielen Datensätzen macht das wenig Sinn.

Als kleine Bemerkung am Rande: Deine Datenbankabfragen sind in Punkto Sicherheit zu hinterfragen. Schau mal nach Prepared Statements in Verbindung mit mysqli oder PDO. Falls es nur ein Beispiel war vergiss es einfach ;)

Grüße Cappaja
 
Dann musst du auch für jeden Eintrag einzelne Buttons generieren. Standardmäßig wird das zB über die ID gelöst, also fürs bearbeiten gibts dann einen Link wie update.php?id=123
 
Ahhhh okay, habs verstanden, ich nehme statt nem Button also nen einfach Hyperlink etwa der Art:

HTML:
<a href='index.php?del=$row->ID'>Loeschen</a>

wenn ich das richtig verstanden habe?
 
Zuletzt bearbeitet:
Zum Updaten musst du ja eh erstmal auf ne andere seite mit nem anderen Formular weiterleiten, richtig?

PHP:
 echo '</select>';
    echo '</td>';
    echo '<td><input name="save" type="button" value="Speichern" /></td>';
    echo '<td><input name="del" type="button" value="Löschen" /></td>';
    echo '<td><a href="update.php?id=' . $obj->id . '">Editieren</a></td>';
    echo "</tr>";
 
Naja ich brauch nicht extra ne update.php und delete.php erzeugen. ich kann ja auch etwa so vorgehen (für delete):

PHP:
echo '<td><a href="users.php?upd='.$obj->id.'">Speichern</a></td>';
echo '<td><a href="users.php?del='.$obj->id.'">Löschen</a></td>';
...
...
...
if(isset($_GET['del']) and !empty($_GET['del'])){
    // SQL Query
}

Edit: Also so hat es jetzt funktioniert, merci nochmal für den hinweis mit dem Query @alxy
 
Zuletzt bearbeitet:
naja, das mit dem del per Link find ich ist ne schlechte Idee. Stell dir vor du bist grade angemledet und jemand schick dir ne modifizierte Seite wo die ganzen del Links zB als src in img Tags angegeben sind. Dann ist deine Liste sfort leer....
 
Zurück