MySQL einträge löschen

Wild-Wolf

Grünschnabel
Hallo zusammen.
Habe über die SuFu jetzt nichts gefunden, was mir weiterhilft. Sollte ich dennoch was übersehen haben, bitte ich um entschuldigung. Muss noch dazu sagen, solange mache ich noch kein PHP und MySQL

Ich würde gerne per Button gelistete Datensätze löschen.
Soweit habe ich das auch schon:
PHP:
<?php
require(__DIR__ . '/../inc/config.php');

if (! $user_list) {
	die ("Anfrage nicht erfolgreich");
}

echo '<table border="1" cellpadding="0" cellspacing="0" width="400px" id="overview_list">';
echo "<tr>";
echo "<th>Benutzername</th><th>E-Mail</th><th>Optionen</th>";
echo "</tr>";

while ($ausgabe = mysql_fetch_array($user_list, MYSQL_ASSOC)){
	echo "<tr>";
	echo "<td>". $ausgabe['benutzer']. "</td>";
	echo "<td>". $ausgabe['email']. "</td>";
	echo "<td id='options'><a href='user.php?id=".$ausgabe['id']."'>
	<img src='images/delete.gif' width='20' height='20' alt='L&ouml;schen' title='L&ouml;schen' /></a>
    <a href='#'><img src='images/edit.gif' width=#20' height='20' alt='&Auml;ndern' title='&Auml;ndern' /></a></td>";
	echo "</tr>";
}
	echo "</table>";
		mysql_free_result($user_list);
?>

so sieht der Eintrag in der config aus:
PHP:
$user_delete = "DELETE * FROM user WHERE id ='".$_GET['id']."' ";

Nur wenn ich jetzt auf das schöne X klicke passiert nichts.

Das anlege Formular sowie die Auflistung und das Löschen sind alle in einer Datei:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Adminbereich - Benutzerverwaltung</title>
<link rel="stylesheet" href="admin.css" type="text/css" />
<script src="SpryAssets/SpryValidationPassword.js" type="text/javascript"></script>
<link href="SpryAssets/SpryValidationPassword.css" rel="stylesheet" type="text/css" />
</head>

<body>
<p><h4>Benutzer in der Datenbank:</h4></p>

<?php

require(__DIR__ . '/../inc/config.php');

if (! $user_list) {
	die ("Anfrage nicht erfolgreich");
}
	echo '<table border="1" cellpadding="0" cellspacing="0" width="400px" id="overview_list">';
	echo "<tr>";
	echo "<th>Benutzername</th><th>E-Mail</th><th>Optionen</th>";
	echo "</tr>";

while ($ausgabe = mysql_fetch_array($user_list, MYSQL_ASSOC)){

	echo "<tr>";
	echo "<td>". $ausgabe['benutzer']. "</td>";
	echo "<td>". $ausgabe['email']. "</td>";
	echo "<td id='options'><a href='user.php?id=".$ausgabe['id']."'>
	<img src='images/delete.gif' width='20' height='20' alt='L&ouml;schen' title='L&ouml;schen' /></a>
	<a href='#'><img src='images/edit.gif' width=#20' height='20' alt='&Auml;ndern' title='&Auml;ndern' /></a>
	</td>";
	echo "</tr>";
}
		
	echo "</table>";
	mysql_free_result($user_list);
?>

<p><h4>Neuen Benutzer anlegen</h4></p>

<?php

require(__DIR__ . '/../inc/config.php');
if (empty($form_benutzer)) {
	$benutzer_err="* ";$benutzer="";
} 

else{
	$benutzer_err=" "; $benutzer=$_POST["benutzer"];
}

if (empty($form_email)) {
	$email_err="* ";$email="";
} 

else{
	$email_err=" "; $email=$_POST["email"];
}

?>

<div id="submit_form">
	<form action="<?php $_SERVER['index.php'] ?>" method="post" >
	
	Benutzer:<span class="importent"><?php echo $benutzer_err ?></span>
	<p><input name="benutzer" type="text" value="<?php echo $benutzer ?>" /></p>
	
	Password:<span class="importent">*</span>
	<p><span id="sprypassword1">
	<input type="password" name="password" id="password" /><br />
	<span class="passwordRequiredMsg">Passwort erforderlich!</span></span></p>
	
	E-Mail:<span class="importent"><?php echo $email_err ?></span>
	<p><input name="email" type="text" value="<?php echo $email ?>"/></p>
	
	<p><input name="newuser" type="submit" value="Speichern" />
	<input name="zur&uuml;ck" type="reset" value="Zur&uuml;cksetzen" /></p>
	
	</form>

<!-- Benutzer anlegen -->
<div><p>

<?php

require(__DIR__ . '/../inc/config.php');
if ($form_password == "" OR $form_benutzer == "") {
	echo "<strong>Bitte alle Felder ausfüllen</strong>";
	exit;
}

	if ($user_exist == 0) {

		if (mysql_query($sql_save_newuser) == true) {
			echo "<table border='0'><tr><th>Folgendes Benutzer wurde erfolgreich angelegt:</th></tr> <td>Benutzer:" . $form_benutzer;
			echo  "<br /> E-Mail: " . $form_email;
			echo "</td></tr></table>";
		}
		
		else{
		
		echo "Fehler beim anlegen. Bitte versuche es noch einmal";
		}
	}

	else {
		echo "<strong class='entry_fail'>Benutzer schon vorhanden. Bitte anderen Benutzer wählen</strong>";
	}
	
?>
</p></div>
</div>

<script type="text/javascript">
<!--
var sprypassword1 = new Spry.Widget.ValidationPassword("sprypassword1");
//-->
</script>

</body>
</html>
 
Zuletzt bearbeitet:
Willkommen Wild-Wolf.

Sorry, das folgende ist nicht böse gemeint.

Bitte formatiere deinen Code (es hilft auch dir - glaub mir). So wie er jetzt da steht, ist es fast nicht möglich ihn zu lesen, geschweige zu verstehen.
PHP High Quality PHP-Code – Teil 1 Code-Style. Vor allem Kapitel 4.

Und wo in deinem Code ist dieses X, das du klickst?
 
Hi,

ok werds versuchen zu ändern.
Das X ist in dem Fall die Grafik:

Code:
<a href='user.php?id=".$ausgabe['id']."'>
<img src='images/delete.gif' width='20' height='20' alt='L&ouml;schen' 
title='L&ouml;schen' /></a>
 
Zuletzt bearbeitet:
item:
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.

item: Ist die id eine Zahl? wenn ja, dann sollte sie im SQL auch wie eine Zahl behandelt werden. Also ohne die '

item: Wo in deinem Code sollte der Delete ausgeführt werden?
 
Naja wenn ich auf den Button delete klicke, möchte ich das der Eintrag gelöscht wird und das auch ausgegeben wird.
HTML:
<a href='user.php?id=".$ausgabe['id']."'>
    <img src='images/delete.gif' width='20' height='20' alt='L&ouml;schen' 
title='L&ouml;schen' /></a>

Wenn ich auf ändern klicke soll eine Seite aufgehen oder wenn es geht in der selben Seite wo ich Dann die Daten ändern kann.

Mein Problem ist das ich ja alles per echo ausgegeben habe. Auch die Links mit der id. Und jetzt weiß ich net wie ich das so wie eben beschrieben erweitern soll. Also mit if und else

habe jetzt noch den Befehl: mysql_query($user_delete) eingebunden:
PHP:
<?php
require(__DIR__ . '/../inc/config.php');

if (! $user_list) {
    die ("Anfrage nicht erfolgreich");
}

echo '<table border="1" cellpadding="0" cellspacing="0" width="400px" id="overview_list">';
echo "<tr>";
echo "<th>Benutzername</th><th>E-Mail</th><th>Optionen</th>";
echo "</tr>";

while ($ausgabe = mysql_fetch_array($user_list, MYSQL_ASSOC)){
    echo "<tr>";
    echo "<td>". $ausgabe['benutzer']. "</td>";
    echo "<td>". $ausgabe['email']. "</td>";
    echo "<td id='options'><a href='user.php?id=".$ausgabe['id']."'>
    <img src='images/delete.gif' width='20' height='20' alt='L&ouml;schen' title='L&ouml;schen' /></a>
    <a href='#'><img src='images/edit.gif' width=#20' height='20' alt='&Auml;ndern' title='&Auml;ndern' /></a></td>";
    echo "</tr>";
}
    echo "</table>";
        mysql_free_result($user_list);
        mysql_query($user_delete);
?>

Nu löscht sich zwar der User, allerdings auch wenn ich auf ändern klicke...
 
Du solltest deinem Link noch eine Action mitgeben, damit das Script auch weiss, dass du löschen willst

HTML:
<a href='user.php?id=3&action=delete'>...</a>

Su, nun kannst du das $_GET so auswerten, dass du auch weisst was angeklickt wurde

PHP:
//Prüfen ob die action 'delete' ist
if($_GET['action'] == 'delete'){
    //Prüfen ob die ID auch brav eine Nummer ist
    //TODO: Wennn icht, schöner abfangen und nicht den Code einfach abbrechen wie in diesem Beispiel
    if(!is_numeric($_GET['id']) exit('Id muss eine Zahl sein');
    //SQL zusammenstellen
    $sql = "DELETE * FROM user WHERE id =".$_GET['id'];
    //und ausführen
    mysql_query($sql);
}
 
Jepp. das ist richtig. Habe das DELETE ungelesen von dir kopiert - sollte ich nicht mehr machen (also ungelesen kopieren *g*)
 
Zurück