mysql/php Datensätze löschen und zählen

  • Themenstarter Themenstarter koronyl
  • Beginndatum Beginndatum
K

koronyl

Hallo,
ich habe in PHP code der meine mysql tabelle ausliest:
PHP:
<?php
$host = "localhost";
$user = "###";
$pass = "###";
$dbase = "###";
$db = mysql_connect($host, $user, $pass) or die ("Verbindung fehlgeschlagen");
      mysql_select_db($dbase, $db) or die ("Verbindung zur datenbank fehlgeschlagen");
$select = "select * from users";
$result = mysql_query($select,$db);
if($result){
 echo "<table>";
 while($row = mysql_fetch_array($result)){
 echo "<tr><td>Nummer:</td><td>".$row['id']."</td></tr>";
   echo "<tr><td>Name:</td><td>".$row['full_name']."</td></tr>";
   echo "<tr><td>E-Mail:</td><td>".$row['user_email']."</td></tr>";
      echo "<tr><td>Passwort (MD5):</td><td>".$row['user_pwd']."</td></tr>";
   echo "<tr><td>Dabei seit:</td><td>".$row['joined']."</td></tr>";
   echo "<tr><td>Land:</td><td>".$row['country']."</td></tr>";
   echo "<tr><td>Aktivierungscode:</td><td>".$row['activation_code']."</td></tr>";
  echo "<tr><td>---------------------------</td><td>---------------------------------</td></tr>";
  }
 echo "</table>";
}
?>

Dieser funktioniert auch perfekt :)
Nur jetzt möchte ich das man indem man in ein Inputfeld die id der Spalte eingibt und man dann sozusagen einen User löschen kann....
Wie kann man das machen?
Meine Tabelle sieht wie folgt aus:

Field_name Min_value
clonewars_03.users.id 1
clonewars_03.users.full_name Tom
clonewars_03.users.user_name
clonewars_03.users.user_pwd c16e24898200c27d89cd30e9abd51984
clonewars_03.users.user_email ####@#####.de
clonewars_03.users.activation_code 3051
clonewars_03.users.joined 2009-03-17
clonewars_03.users.country Deutschland
clonewars_03.users.user_activated 1
 
Das versteh ich nicht ganz genau, warum willst du in ein Input Feld die ID eingeben?

Mach doch einfach ein Auswahlfeld mit deinen Nutzern und einen Button zum Löschen.

Gruß
evo
 
Ich wäre auch für die Option mit dem Auswahlfeld, aber um deine Frage zu beantworten: Du brauchst 1. ein input-Feld (type="text") wo du die ID eingeben kannst und ein input-Feld (type="submit") mit dem du dann das Formular absenden kannst (ist ja eigentlich klar) und 2. brauchst du eigentlich nur noch eine MySQL-Anfrage senden, welche in etwa so aussieht:
PHP:
$sql = "DELETE FROM `users` WHERE `id` = '".$_GET['id']."'";
Das ist alles.
 
PHP:
<?php

//MySQL-Verbindung
$host = "localhost"; 
$user = "###"; 
$pass = "###"; 
$dbase = "###"; 
$db = mysql_connect($host, $user, $pass) or die ("Verbindung fehlgeschlagen"); 
      mysql_select_db($dbase, $db) or die ("Verbindung zur datenbank fehlgeschlagen"); 

//abgeschickte Formular-Daten verarbeiten
if(ISSET($_POST['userid']) && intval($_POST['userid'])) {
	mysql_query("DELETE FROM `users` WHERE `id` = '".$_POST['userid']."'", $db);
	echo "Eintrag ". $_POST['userid'] ." wurde erfolgreich gelöscht.";
}else{

	$select = "select * from users"; 
	$result = mysql_query($select,$db); 
	
	/*hier hin deine while-Schleife mit den ECHOs
	...*/


	echo '<form action="'. $_SERVER['PHP_SELF'] .'" method="post">';
	echo '<input type="text" name="userid" value="'. $row['id'] .'">';
	echo '<input type="submit" value="löschen">';
	echo '</form>';

}
?>
Hierbei im Form-Tag die Get-Method zu benutzen, ist nicht zu empfehlen, es sei denn du möchtest dein Script angreifbarer machen.
 
@Elodrin_the_first
eine methode um user zu löschen ist normalerweise dem administrator vorbehalten und dieser besitzt dazu die entsprechenden Rechte. Wenn man also vorher die Rechte überprüft, sollte die lösung mit $_GET kein problem sein.

@koronyl
die lösung mit dem button hat dir doch Elodrin geliefert ;)
 
Eine Form für jede Zeile / jeden Benutzer in der Liste mit einem hidden Feld zur Benutzer-ID und eine Schaltfläche zum Absenden. Es müsste also in deine Schleife rein.

PHP:
while ($row = mysql_fetch_row($resource))
{
  $id = $row["benutzerID"];
  $name = $row["benutzerName"];
  echo <<<EOT
    <form method="post" action="">
    <input type="hidden" name="id" value="$id" />
    $name
    <input type="submit" value="L&ouml;schen" />
    </form>
EOT;
}

Oder per Link mit entsprechenden Query für jeden Benutzer:
/benutzerwervaltung/loeschen.php?id=888
 
Zuletzt bearbeitet:
mein code sieht jetzt so aus, aber es geht nicht:

PHP:
<?php

//MySQL-Verbindung
$host = "localhost";
$user = "####";
$pass = "###";
$dbase = "###";
$db = mysql_connect($host, $user, $pass) or die ("Verbindung fehlgeschlagen");
      mysql_select_db($dbase, $db) or die ("Verbindung zur datenbank fehlgeschlagen");

//abgeschickte Formular-Daten verarbeiten
if(ISSET($_POST['userid']) && intval($_POST['userid'])) {
    mysql_query("DELETE FROM `users` WHERE `id` = '".$_POST['userid']."'", $db);
    echo "Eintrag ". $_POST['userid'] ." wurde erfolgreich gelöscht.";
}else{

    $select = "select * from users";
    $result = mysql_query($select,$db);
    if($result){
 echo "<table>";
 while($row = mysql_fetch_array($result)){
 {
  $id = $row["userid"];
  $name = $row["benutzerName"];
  echo <<<EOT
    <form method="post" action="User.php">
    <input type="hidden" name="userid" value="$id" />
    $name
    <input type="submit" value="Löschen" />
    </form>
EOT;
}
 echo "<tr><td>Nummer:</td><td>".$row['id']."</td></tr>";
   echo "<tr><td>Name:</td><td>".$row['full_name']."</td></tr>";
   echo "<tr><td>E-Mail:</td><td>".$row['user_email']."</td></tr>";
      echo "<tr><td>Passwort (MD5):</td><td>".$row['user_pwd']."</td></tr>";
   echo "<tr><td>Dabei seit:</td><td>".$row['joined']."</td></tr>";
   echo "<tr><td>Land:</td><td>".$row['country']."</td></tr>";
   echo "<tr><td>Aktivierungscode:</td><td>".$row['activation_code']."</td></tr>";
  echo "<tr><td>---------------------------</td><td>---------------------------------</td></tr>";
  }
 echo "</table>";
}



}
?>

Er macht gar nichts :(

//EDIT
Ich bin auch ziemlich doof :D :-(
Jetzt hab ich auf jeden Fall Danke an alle :)
 
Zum löschen nehm ich immer ne Checkbox neben den Einträgen:D

Also:
PHP:
echo ('<input type="checkbox" name="userid[]" value="'.$id.'">');

und auf User.php

PHP:
$anz = count($kill);

// Alle selectierten Elemente löschen
if (isset($_POST['kill'])) {
	$i = 0;
	while($anz > 0) {
		if (is_numeric($kill[$i])) {
			$del= "DELETE FROM `users`  WHERE ID = ".$kill[$i];
			$do = mysql_query($del);	
			$i++;
}
}
}
 
Zurück