Problem beim sql Daten löschen

Hallo,

ich hab schon wieder ein Problem bei dem ich nicht weiter komme.
Und zwar bastle ich gerade eine Memberliste für eine Clanpage. Das Abrufen der Memberdaten aus der sql DB funktioniert auch problemlos.
Nur gehört ja dazu auch ein skript mit dem ich neue Member hinzufügen und löschen kann. Das hinzufügen funktioniert auch problemlos. Nur das Löschen nicht so richtig.

Und zwar hab ich es so gemacht, daß über eine while-schleife erstmal die Member die in der DB vorhanden sind in einer Tabelle ausgegeben werden. Und hinter jedem Member steht dann ein Formular Botton über den man den jeweiligen Member löschen können soll.

Nur leider, wenn ich auf diesen Botton zu einem bestimmten Member klicke, löscht er nicht diesen Member hinter dem der Botton steht, sondern immer den letzten in der Liste bzw DB.

Also auch wenn ich bei dem ersten Member auf löschen klicke, löscht er den letzten.

Ich hab hab schon ewig nach dem Fehler gesucht. Da aber mein PHP Kenntnisse noch nicht so sehr fortgeschritten sind, bin ich leider nicht fündig geworden.

Ich hoffe jemand von euch kann mir helfen und findet den Fehler.

Danke schon mal!

Hier noch der Quelltext:
PHP:
<?php
 ////////////////////////////////////////Datenbankverbindung-Anfang/////////////////////////////////////////////////////////////////////
         include ("connectdb.php");
 ////////////////////////////////////////Datenbankverbindung-Ende/////////////////////////////////////////////////////////////////////
         include ("checkuser.php");
         echo "
         <h2>-=]Member Admin[=-</h2><br /><br />";
         
         
 ////////////////////////////////////////Member-hinzufügen-Anfang///////////////////////////////////////////////////////////////////// 	
         
         if ($_REQUEST['NewMember']) {
 echo "
 <table align=\"center\" width=\"400px\" cellpadding=\"3\" cellspacing=\"0\" border=\"1\">
 <form method=\"post\" action=\"".$_SERVER['PHP_SELF?action=memberadmin']."\">
         
 <tr align=\"left\"><td><h3>Nickname:</h3></td><td><input class=\"input\" type=\"text\" name=\"Nickname\" size=\"30\"></td></tr>
 <tr align=\"left\"><td><h3>e-Mail Adresse:</h3></td><td><input class=\"input\" type=\"text\" name=\"Mail\" size=\"30\"></td></tr>
 <tr align=\"left\"><td><h3>Passwort:</h3></td><td><input class=\"input\" type=\"password\" name=\"pwd\" size=\"30\"></td></tr>
 <tr align=\"left\"><td><h3>Status:</h3></td><td><select name=\"Status\" class=\"select\"><option value=\"User\">User</option><option value=\"Admin\">Admin</option><option value=\"News\">News</option></td></tr>
 <tr align=\"left\"><td>&nbsp;</td><td><input class=\"ab\" name=\"Send\" type=\"submit\" value=\"Senden\"></td></tr>
 </form>
 </table>"; }
         		
         		
         elseif ($_REQUEST['Send']) { 
  
  $Datum = date("Y-m-d");
 mysql_query("INSERT INTO benutzerdaten (Nickname, Mail, Kennwort, Status, Mitglied) VALUES ('".$_REQUEST['Nickname']."', '".$_REQUEST['Mail']."', '".md5 ($_REQUEST["pwd"])."', '".$_REQUEST['Status']."', '$Datum')") or die ("Fehler beim Daten senden");
 echo" 
 <h6>Member wurde hinzugefügt!</h6>","	
 <table align=\"center\" width=\"400px\" cellpadding=\"3\" cellspacing=\"0\" border=\"0\">
 <form method=\"post\" action=\"".$_SERVER['PHP_SELF?action=memberadmin']."\">
 <tr align=\"center\">><td><input class=\"ab\" name=\"zurueck\" type=\"submit\" value=\"zurück\"></td></tr>
 </table>";
         	} 
         
 ////////////////////////////////////////Member-hinzufügen-Ende/////////////////////////////////////////////////////////////////////
         
         
 ////////////////////////////////////////Member-löschen-Anfang////////////////////////////////////////////////////////////////////// 
         
         elseif ($_REQUEST['loeschen']) {
 mysql_query("DELETE FROM benutzerdaten WHERE id='".$_REQUEST['id']."'") or die ("Fehler beim löschen der Daten");
 echo" 
 <h6>Member wurde gelöscht!</h6>","	
 <table align=\"center\" width=\"400px\" cellpadding=\"3\" cellspacing=\"0\" border=\"0\">
 <form method=\"post\" action=\"".$_SERVER['PHP_SELF?action=memberadmin']."\">
<tr align=\"center\">><td><input class=\"ab\" name=\"zurueck\" type=\"submit\" value=\"zurück\"></td></tr>
 </table>";
         	}
         
 ////////////////////////////////////////Member-löschen-Ende/////////////////////////////////////////////////////////////////////// 
       	
         
 ////////////////////////////////////////Member-Liste-Anfang/////////////////////////////////////////////////////////////////////
         
         else {
 echo "
 <table bgcolor=\"#111111\" border=\"1\" cellspacing=\"0\">
 <tr>
 <td width=\"25px\"><h3>ID:</h3></td>
 <td width=\"100px\"><h3>Nickname:</h3></td>
 <td width=\"100px\"><h3>Eintritt:</h3></td>
 <td width=\"150px\">&nbsp;</td>
 </tr></table>";	
 		
 $abfrage = "SELECT * FROM benutzerdaten ORDER BY id";
 $ergebnis = mysql_query($abfrage);
 while($row = mysql_fetch_object($ergebnis))
 					 
 echo "
 <table bgcolor=\"#111111\" border=\"1\" cellspacing=\"0\">
 <form method=\"post\" action=\"".$_SERVER['PHP_SELF?action=memberadmin']."\">
 <tr>
 <td width=\"25px\"><h3>$row->id</h3></td>
 <td width=\"100px\"><h3>$row->Nickname</h3></td>
 <td width=\"100px\"><h3>$row->Mitglied</h3></td>
<td width=\"150px\"><input class=\"ab\" name=\"loeschen\" type=\"submit\" value=\"Löschen\"><input name=\"id\" type=\"hidden\" value=\"",$row->id,"\">",
 "<input class=\"ab\" name=\"edit\" type=\"submit\" value=\"Editieren\"></td>
 </tr>
 </table>";
         				
 echo"
  <table align=\"center\" width=\"400px\" cellpadding=\"3\" cellspacing=\"0\" border=\"0\">
 <form method=\"post\" action=\"".$_SERVER['PHP_SELF?action=newmember']."\">
 <tr align=\"center\">><td><input class=\"ab\" name=\"NewMember\" type=\"submit\" value=\"New-Member\"></td></tr>
 </table>"; }	
         				
 ////////////////////////////////////////Member-Liste-Ende/////////////////////////////////////////////////////////////////////
         
         ?>
 
Zuletzt bearbeitet:
Hi,
wie sieht eigentlich die Ausgabe im Fall ELSE aus?
Wenn ich so drüberschau sieht es aus als würde nur 1 Member ausgegeben wird, oder täusch ich mich da?
Wenn du dann alle Member ausgeben willst würd ichs so machen:
PHP:
for($i=0; $i<mysql_num_rows($sql); $i++) $MEMBER[$i]=mysql_fetch_object($sql)

for($i=0; $i<mysql_num_rows($sql); $i++)
{
echo '<td>';
echo $MEMBER[$i]->Nicknme;
echo '<td>';
echo $MEMBER[$i]->id;
// usw...
}
Dann solltest du jedem Formular einen anderen Namen geben (Array) oder Checkboxen verwenden. Damit kannst du auch mehrere Member gleichzeitig löschen. (mehr dazu bei Bedarf)
mfg
 
mauli_rulez hat gesagt.:
wie sieht eigentlich die Ausgabe im Fall ELSE aus?

Die Ausgabe im Fall ELSE ist die Besagte Memberliste, bei der hinter jedem Member dieser Botton steht.

mauli_rulez hat gesagt.:
Wenn ich so drüberschau sieht es aus als würde nur 1 Member ausgegeben wird, oder täusch ich mich da?

Da täuschst du dich. Da die while-schleife alle Member aus der sql Tabelle ausgibt die vorhanden sind und die Tabelle für die Ausgabe innerhalb dieser Schleife liegt, wird sie für jeden Member automatisch erstellt.


Somit ist mein Problem leider immer noch nicht gelöst. Aber trotzdem Danke für die Antwort.
 
ja sry,
ist mir mittlerweile auch mal aufgefallen dass das eine while-Schleife ist.

Na gut, mit den Buttons kann ich dir nicht direkt helfen, aber ich hab bereits angedeutet Checkboxen zu verwenden. Find ich persönlich besser weil man auch mehrere Einträge löschen kann.

Hab sowas schonmal gemacht, war allerdings für ein Gästebuch gedacht:
PHP:
//in die Schleife kommt dann hinter jeden Eintrag:

<input type="checkbox" name="delete_eintrag[]" value="<? echo $eintrag[$i]->id; ?>">
// Habs halt mit der for-Schleife gemacht, deswegen $eintrag[$i]->id


//und dann in dem verarbeitenden Teil etwas in der Art:

$ids = implode("' OR id='", $_REQUEST["delete_eintrag"]);
$ids = "id='$ids'";
$query = mysql_query("DELETE FROM guestbook WHERE $ids");
Wie du siehst hab ich für name ein Array genommen und dann die IDs als Werte.

Vielleicht hilft dir das ja irgendwie weiter :)
mfg
 
Erstmal Danke für deine Antwort!

Aber das hilft mir auch nicht wirklich weiter. Die Checkboxen brauch ich in meinem Fall nicht, da mein Clan keine so große Fluktuation bei den Mitgliedern hat. Somit brauch ich da nicht all zu häufig einen Member löschen oder gar mehrere.

Ich glaube auch nich unbedingt das der Fehler an den Button liegt. Ich denke mal eher an der Übergabe an die If Anweisung.

Denn wenn ich auf den Button klicke wird ja ein Member gelöscht. Nur halt nich der der gelöscht werden soll.
 
Immer unten anfangen, also in diesem Fall bei der Übergabe. Füg mal folgende Zeile in dein Script ein und überprüfe, ob id korrekt übergeben wird:
PHP:
var_dump($_REQUEST);
Übrigens würde ich dir empfehlen, auf $_REQUEST zu verzichten – $_POST, $_GET und $_COOKIE leisten genausogute Dienste, sind aber sicherheitstechnisch weniger kritisch.
 
Hab gerade etwas ausprobiert.

Und zwar hab ich in meinem Formular zum löschen mal die method auf GET geändert. Somit kann ich ja in der URL sehen was alles mit übergeben wurde.

Und dabei kam vollgende URL raus:

"http://./Memberadmin.php?id=1&id=2&id=3&id=4&id=5&loeschen=Loeschen&id=28&id=54"

Somit sieht das für mich aus als ob er alle id's mit übergibt und halt nur vor die jenige die gelöscht werden soll dieses "loeschen=Loeschen" davor schreibt.

Wie kann ich es nun erreichen das nur die eine id die gelöscht werden soll übergeben wird? Oder kann ich ich die richtige irgent wie da raus selektieren?
 
Hi,
also ich will ein letztes Mal mein Glück versuchen
(Wenn das nix hilft halt ich mich raus) ;)

Du köntest den <form ... > tag aus der Schleife rausnehmen, sodass du nur 1 Formular hast.

Dann hast du ein Formular mit mehreren Submit-Buttons und da helfen dir diese Links weiter:

http://www.stadtaus.com/tutorials/content_cat_7_id_35.php
http://www.masterportal24.com/faq2/index.cgi?board=htmlallgemein&action=display&num=343 (mit Beispiel)
und vor allem:
http://www.php-faq.de/q/q-formular-buttons.html

so viel Glück damit
 
OK! Danke für die Hilfe.
Ich hab jetzt erstmal das Formular raus genommen und stattdessen einen Link an die stelle gesetzt. Und an den Link noch ein ?action=blabla&id=$row->id dran gehangen.
Damit funktioniert es ersmal. Aber ich werde das noch mal ausprobieren mit den Formularen.

Jetzt hab ich aber schon wieder ein anderes Problem. Will desswegen aber nicht extra ein neues Tema auf machen. Weil ist mit sicherheit nur ein kleiner Anfängerfehler von mir. Aber vieleicht findet ihn jemand von euch.

Hier mal der Code:

PHP:
<?php
   include ("connectdb.php");
   include ("checkuser.php");
   
   
   echo "<h2>-=]Members[=-</h2><br />";
   
   		if ($profil == 1) {
   			
 			$abfrage = "SELECT * FROM benutzerdaten WHERE id = $_SESSION[user_id]";
   			$ergebnis = mysql_query($abfrage);
   			while($row = mysql_fetch_object($ergebnis)) { 
   		
   			echo" 
 			<table align=\"center\" width=\"90%\" cellpadding=\"3\" cellspacing=\"0\" border=\"1\">
 			<form method=\"post\" action=\"$PHP_SELF?action=members\">
   		
 			<tr align=\"left\"><td width=\"250px\"><h3>Nickname:</h3></td><td><input class=\"input\" type=\"text\" name=\"Nickname\" size=\"40\" value=\"$row->Nickname\"></td></tr>
 			<tr align=\"left\"><td><h3>e-Mail Adresse:</h3></td><td><input class=\"input\" type=\"text\" name=\"Mail\" size=\"40\" value=\"$row->Mail\"></td></tr>
 			<tr align=\"left\"><td><h3>Passwort:</h3></td><td><input class=\"input\" type=\"password\" name=\"passwort\" size=\"40\"></td></tr>
 			<tr align=\"left\"><td><h3>Neues Passwort:</h3></td><td><input class=\"input\" type=\"password\" name=\"newpwd\" size=\"40\"></td></tr>
 			<tr align=\"left\"><td><h3>Neues Passwort wiederholen:</h3></td><td><input class=\"input\" type=\"password\" name=\"newpwd2\" size=\"40\"></td></tr>
 			<tr align=\"left\"><td>&nbsp;</td><td>&nbsp;</td></tr>
 			<tr align=\"left\"><td><h3>Vorname:</h3></td><td><input class=\"input\" type=\"text\" name=\"Vorname\" size=\"40\" value=\"$row->Vorname\"></td></tr>
 			<tr align=\"left\"><td><h3>Nachname:</h3></td><td><input class=\"input\" type=\"text\" name=\"Nachname\" size=\"40\" value=\"$row->Nachname\"></td></tr>
 			<tr align=\"left\"><td><h3>Alter:</h3></td><td><input class=\"input\" type=\"text\" name=\"old\" size=\"40\" value=\"$row->old\"></td></tr>
 			<tr align=\"left\"><td><h3>ICQ:</h3></td><td><input class=\"input\" type=\"text\" name=\"ICQ\" size=\"40\" value=\"$row->ICQ\"></td></tr>
 			<tr align=\"left\"><td><h3>Wohnort:</h3></td><td><input class=\"input\" type=\"text\" name=\"Wohnort\" size=\"40\" value=\"$row->Wohnort\"></td></tr>
 			<tr align=\"left\"><td><h3>Games:</h3></td><td><input class=\"input\" type=\"text\" name=\"Games\" size=\"40\" value=\"$row->Games\"></td></tr>
 			<tr align=\"left\"><td><h3>Fähigkeiten:</h3></td><td><input class=\"input\" type=\"text\" name=\"Fähigkeiten\" size=\"40\" value=\"$row->Fähigkeiten\"></td></tr>
   			
 			<tr align=\"left\"><td colspan=\"2\" align=\"center\"><input name=\"id\" type=\"hidden\" value=\"",
   				 $row->id,
   				 "\">",
 		 "<input class=\"ab\" name=\"editprofil\" type=\"submit\" value=\"Ändern\">
   		
   			</td></tr>
   			</form>
   			</table>";} }
   	
   
   
   		elseif ($_POST['editprofil']) {
   
 		 mysql_query("update benutzerdaten set Nickname = '".$_POST['Nickname']."' WHERE id = '".$_POST['id']."' ");
 		 mysql_query("update benutzerdaten set Mail = '".$_POST['Mail']."' WHERE id = '".$_POST['id']."' ");
 		 mysql_query("update benutzerdaten set old = '".$_POST['old']."' WHERE id = '".$_POST['id']."' ");
 		 mysql_query("update benutzerdaten set ICQ = '".$_POST['ICQ']."' WHERE id = '".$_POST['id']."' ");
 		 mysql_query("update benutzerdaten set Wohnort = '".$_POST['Wohnort']."' WHERE id = '".$_POST['id']."' ");
 		 mysql_query("update benutzerdaten set Games = '".$_POST['Games']."' WHERE id = '".$_POST['id']."' ");
 		 mysql_query("update benutzerdaten set Fähigkeiten = '".$_POST['Fähigkeiten']."' WHERE id = '".$_POST['id']."' ");
 		 mysql_query("update benutzerdaten set Vorname = '".$_POST['Vorname']."' WHERE id = '".$_POST['id']."' ");
 		 mysql_query("update benutzerdaten set Nachname = '".$_POST['Nachname']."' WHERE id = '".$_POST['id']."' ");
   			
 			$abfrage = "SELECT * FROM benutzerdaten WHERE id = $_SESSION[user_id]";
   			$ergebnis = mysql_query($abfrage);
   			while($row = mysql_fetch_object($ergebnis)) 
   			$Kennwort = $row->Kennwort;	
   			
   			$user = $_POST["Nickname"];
   			$Passwort = $_POST["passwort"];
   			$pwd = md5($passwort);
   			$newpwd = $_POST["newpwd"];
   			$newpwd2 = $_POST["newpwd2"];
   			
 			if 	($Kennwort == "$passwort" AND $newpwd == "$newpwd2") {
   				
 		 	mysql_query("update benutzerdaten set Kennwort = $newpwd WHERE id = '".$_POST['id']."' ");
   				} 
   			
   			echo" 
 			<h6>Daten wurden geändert!</h6><br /><br />
 			<table align=\"center\" width=\"400px\" cellpadding=\"3\" cellspacing=\"0\" border=\"0\">
 			<form method=\"post\" action=\"$PHP_SELF?action=members\">
 			<tr align=\"center\"><td><input class=\"ab\" name=\"zurueck\" type=\"submit\" value=\"zurück\"></td></tr>
   			</table>";
   	} 
   
   		
   		else {
   			$abfrage = "SELECT * FROM benutzerdaten";
   			$ergebnis = mysql_query($abfrage);
   			while($row = mysql_fetch_object($ergebnis)) {
   			
   			echo "
 			<table cellpadding=\"5\" bgcolor=\"#222222\" width=\"80%\">
 			<tr style=\"background-image:url(./img/test2.gif)\">
   			<td width=\"90%\" align=\"center\">
   			
 			<table bgcolor=\"#111111\" border=\"1\" width=\"100%\" cellspacing=\"0\">
   			<tr>
 			<td bgcolor=\"#111111\" rowspan=\"8\" width=\"150px\">&nbsp</td>
 			<td width=\"100px\"><h3>Nickname:</h3></td>
 			<td><h3>$row->Nickname</h3></td>
   			</tr>
   			<tr>
 			<td width=\"100px\"><h3>Alter:</h3></td>
   			<td><h3>$row->old</h3></td>
   			</tr>
   			<tr>
 			<td width=\"100px\"><h3>Wohnort:</h3></td>
 			<td><h3>$row->Wohnort</h3></td>
   			</tr>
   			<tr>
 			<td width=\"100px\"><h3>e-Mail:</h3></td>
   			
   				
 			<td><h3>$row->Mail</h3></td>
   			</tr>
   			<tr>
 			<td width=\"100px\"><h3>ICQ:</h3></td>
   			<td><h3>$row->ICQ</h3></td>
   			</tr>
   			<tr>
 			<td width=\"100px\"><h3>Mitglied seit:</h3></td>
 			<td><h3>$row->Mitglied</h3></td>
   			</tr>
   			<tr>
 			<td width=\"100px\"><h3>Games:</h3></td>
 			<td><h3>$row->Games</h3></td>
   			</tr>
   			<tr>
 			<td width=\"100px\"><h3>Fähigkeiten:</h3></td>
 			<td><h3>$row->Fähigkeiten</h3></td>
   			</tr>
   			</table>
   				
   			</td></tr></table>"; } }
   ?>


Und zwar wird die eingeschachtelte If-Anweisung nicht ausgefürt. ( die "if ($Kennwort == "$passwort" AND $newpwd == "$newpwd2")....")

Ich weis aber nicht so recht warum sie nicht ausgefürt wird. Wäre suppi wenn mir da nochmal jemand von euch helfen könnte.

Danke schon mal!
Gruß
Speedster
 
Zurück