SetaPDF
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 26.12.2004, 21:53   #1
TP-Junior
 
Registriert seit: Dec 2004
webhero macht alles soweit korrekt

Löschen aus Datenbank


also ich habe ein script geschrieben was normalerweise einen Benutzer anhand seiner ID löschen soll aus der Datenbank.Er zeigt mir nach dem ausführen auch an das der User gelöscht wurde, bekomme also keinen fehler, nur wenn ich dann per phpmyadmin nachschaue ist der user immernoch da ... hoffe ihr könnt helfen.

PHP-Code:
<?php
// ######################### Datenbank verbindung ######################
//
include("db.inc.php");
$cnx mysql_connect("$host","$benutzer","$pw");
mysql_select_db("$database");

?>
<?php




// User löschen
$sqlbefehl "DELETE * FROM users
           WHERE userID ='"
.$id."'
           LIMIT 0,1"
;


mysql_query($sqlbefehl);

if (!
$sqlbefehl) {
   echo 
"User existiert nicht : " mysql_error();
   exit;
}

echo 
"User erfolgreich gelöscht!!!<br>";


?>
gruß
webhero
webhero ist offline   Mit Zitat antworten


Alt 26.12.2004, 23:52   #2
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
Generell: Er kann keinen Fehler ausgeben, da du nach dem mysql_query(); ja auch gar nicht überprüfst, ob mysql_errno(); einen Fehler enthält!

Dann gehe ich mal davon aus, dass die userID eindeutig ist, also kannst du das Limit (was in einer ordentlichen delete abfrage eigentlich sinnlos ist ) löschen. Da das Limit bei DELETE aber gültig ist, geh ich mal stark davon aus, dass das * in der Abfrage einen Syntaxfehler produziert. Also einfach nur DELETE FROM trallal WHERE schreiben!

Da du niergendswo $id abfängst, würd ich $_POST["id"] bzw. $_GET["id"] verwenden; ich nehm mal an, du wirst sie aus einem Formular oder der Url holen. Naja, ansonsten - geb einfach echo mysql_Error(); aus, und du siehst ja, was php nicht passt!

EDIT
(Kann auch sein, dass das LIMIT 0,1 den Fehler produziert!)
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

Geändert von Dennis The Menace (26.12.2004 um 23:57 Uhr).
Dennis The Menace ist offline   Mit Zitat antworten
Alt 26.12.2004, 23:53   #3
TP-Member
 
Registriert seit: Dec 2004
Ort: Schweiz - Luzern
gugus macht alles soweit korrekt
huhu

Entferne mal das "LIMIT 0,1" aus dem SQL Befehl. Ansonsten gib dir mal die $id peer echo aus, damit du sicher bist das die id auch übertragen wird.
gugus ist offline   Mit Zitat antworten
Alt 26.12.2004, 23:56   #4
TP-Junior
 
Registriert seit: Dec 2004
webhero macht alles soweit korrekt
ich probier es mal so ... das $_POST[id] hatte ich auch schon drin ... änderte aber nichts daran .. also wird es wohl an dem LIMIT liegen ... ich schreib dann rein wenn was nicht klappt
webhero ist offline   Mit Zitat antworten
Alt 27.12.2004, 00:01   #5
TP-Member
 
Registriert seit: Dec 2004
Ort: Schweiz - Luzern
gugus macht alles soweit korrekt
Es liegt schon am Limit das brauchst du nur bei einer Select Abfrage!

Ansonsten wie schon gesagt, prüfe immer nach ob die richtige ID mitgegeben wird. Kannst du ja mit einer echo Ausgabe prüfen...

Wenn du die Variabel über ein Formular mitgibst musst du $_POST['id'] oder $_GET['id'] verwenden. Je nach Übergabeart halt. Ausser du hast "globals" off was ich nicht hoffe
gugus ist offline   Mit Zitat antworten
Alt 27.12.2004, 00:01   #6
TP-Junior
 
Registriert seit: Dec 2004
webhero macht alles soweit korrekt
Also ich habe es nun so
PHP-Code:
<?php
// ######################### Datenbank verbindung ######################
//
include("db.inc.php");
$cnx mysql_connect("$host","$benutzer","$pw");
mysql_select_db("$database");

?>
<?php

$id 
$_POST['id'];


// User löschen
$sqlbefehl "DELETE * FROM users
           WHERE userID ='"
.$id."'";


mysql_query($sqlbefehl);

if (!
$sqlbefehl) {
   echo 
"User existiert nicht : " mysql_error();
   exit;
}

echo 
"User erfolgreich gelöscht!!!<br>";


?>
Es geht trotzdem nit ...
webhero ist offline   Mit Zitat antworten
Alt 27.12.2004, 00:09   #7
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
a) LIMIT darf in einer DELETE abfrage!
b) Nimm das Sternchen * da raus!
c) echo mysql_Error(); //nach dem query!

notfalls, wie gugus schon erwähnt hat, kannst du auch einfach mal echo $id; ausgeben und gucken, ob die ID überhaupt den richtigen Wert trägt!

hab ich schon erwähnt, dass
PHP-Code:
$test "halllo";
if( empty( 
$test ) ) .. 
wie bei dir im Code relativ sinnlos ist?
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

Geändert von Dennis The Menace (27.12.2004 um 00:12 Uhr).
Dennis The Menace ist offline   Mit Zitat antworten
Alt 27.12.2004, 00:12   #8
TP-Member
 
Registriert seit: Dec 2004
Ort: Schweiz - Luzern
gugus macht alles soweit korrekt
oops *kopfklatsch* naja nach den paar Bierchen heute... Das Sternchen darf natürlich ned sein...
gugus ist offline   Mit Zitat antworten
Alt 27.12.2004, 00:17   #9
TP-Junior
 
Registriert seit: Dec 2004
webhero macht alles soweit korrekt
Also ich habe es nun mal geändert und zwar anstatt anhand der userID auf den login namen .... habe das * entfernt und
PHP-Code:
echo myaql_Error(); 
angehängt ... kein erfolg ... ich bekomme kein MySQL fehler aber auch wird der user nicht gelöscht.
PHP-Code:
<?php
// ######################### Datenbank verbindung ######################
//
include("db.inc.php");
$cnx mysql_connect("$host","$benutzer","$pw");
mysql_select_db("$database");

?>
<?php

$id 
$_POST["login"];


// User löschen
$sqlbefehl "DELETE FROM users
           WHERE login ='"
.$login."'";


mysql_query($sqlbefehl);

echo 
mysql_Error();


?>
webhero ist offline   Mit Zitat antworten
Alt 27.12.2004, 00:23   #10
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
PHP-Code:
<?php
// ######################### Datenbank verbindung ######################
//
include "db.inc.php";
mysql_connect$host$benutzer$pw );
mysql_select_db$database );

//Kannst du nachher rauskommentieren:
echo 'Der Inhalt von $_POST["login"] ist: '.$_POST["login"];

//Löscht den User
mysql_query("DELETE FROM users WHERE login ='".$_POST["login"]."'");

if( 
mysql_errno() ) 
  echo 
mysql_Error();

?>
Wenn er jetzt nicht löscht, siehst du es entweder an dem ersten echo, an dem echo von mysql_error(), oder du hast nicht auf groß/kleinschreibung geachtet oder du bist in der falschen db/tabelle!
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

Geändert von Dennis The Menace (27.12.2004 um 00:26 Uhr).
Dennis The Menace ist offline   Mit Zitat antworten
Alt 27.12.2004, 00:27   #11
TP-Junior
 
Registriert seit: Dec 2004
webhero macht alles soweit korrekt
Es hat geklappt super ... nur wo war jetzt mein Fehler ?
webhero ist offline   Mit Zitat antworten
Alt 27.12.2004, 00:30   #12
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
Code:
$id = $_POST["login"]; 


// User löschen 
$sqlbefehl = "DELETE FROM users 
           WHERE login ='".$login."'";
Bei genauerem betrachtem fällt auf, dass da irgendetwas nicht hinhauen kann Wenn man mit error_reporting( E_ALL ); programmiert, kann einem soetwas nicht mehr passieren! Dann hätte er nämlich gemackert, dass die Variable $login nicht definiert ist!
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

Geändert von Dennis The Menace (27.12.2004 um 00:34 Uhr).
Dennis The Menace ist offline   Mit Zitat antworten
Alt 27.12.2004, 00:34   #13
TP-Junior
 
Registriert seit: Dec 2004
webhero macht alles soweit korrekt
Nun habe ich noch eine frage... und zwar würde ich gerne die Passwörter mit md5() verschlüsseln und dann auch so in der Datenbank abrufen .. ich hänge mal die anlegen.php an wo der user angelegt wird und die login.php wo sich eingeloggt wird ... einfach mal da einbauen bitte wie es gehört .. weil mit md5() hab ich noch nichts gemacht

anlegen.php
PHP-Code:
<?php
// #########################  Datenbank verbindung  ######################
//
include("db.inc.php");
$cnx mysql_connect("$host","$benutzer","$pw");
mysql_select_db("$database");

?>
<?php
$id 
$_POST[id];
$name $_POST[name];
$username $_POST[username];
$passwort $_POST[passwort];
$email $_POST[email];



// User anlegen
$sqlbefehl"Insert Into users
                    (userID,username,login,pwd,email)
             VALUES ('"
.$id."','".$name."','".$username."','".$passwort."','".$email."')";


mysql_query($sqlbefehl);

echo 
"User erfolgreich angelegt!!!<br>";


?>
und login.php
PHP-Code:
<?
include("db.inc.php");
session_start(); 
if(
trim($_POST[login]) && trim($_POST[passwort])) 

  
//Verbinden zum Server 
    
mysql_connect("$host","$benutzer","$pw") or die("Connect nicht möglich: ".mysql_error());
   
  
//Übergebene Daten gegen SQL Injections schützen 
  
if(get_magic_quotes_gpc()) 
  { 
    
$login $_POST[login]; 
    
$pwd $_POST[passwort]; 
  } 
  else 
  { 
      
$login addslashes($_POST[login]); 
    
$pwd addslashes($_POST[passwort]); 
  } 
     
    
//Daten holen 
    
$sql "SELECT * from users 
           WHERE login ='"
.$login."' 
           AND pwd ='"
.$pwd."'
           LIMIT 0,1"


  
$result mysql_db_query("$database",$sql) or die(mysql_error());
    
$row mysql_fetch_assoc($result); 
     
    
//recheck der Daten 
    
if($row[login] == stripslashes($_POST[login]) && $row[pwd] == stripslashes($_POST[passwort])) 
    { 
      
//Login erfolgreich 
      //User in die Session eintragen 
        
$_SESSION['userID']=$row[userID]; 
        
$_SESSION['username']=$row[username]; 
         
        
//und auf die Startseite redirecten. 
        
header("location: http://".$_SERVER[SERVER_NAME]."/member/index.php"); 

    } 
    else 
    { 
        
$status "Falsches Login oder Passwort"
    } 

else 

//Daten wurden noch nicht vollständig ausgefüllt 
$status = ($_POST['anmelden']) ?'Bitte fülle alle Felder aus!' 
'Bitte gebe Dein Login und Passwort in die dafür vorgesehenen Felder ein!'

?>
webhero ist offline   Mit Zitat antworten
Alt 27.12.2004, 00:38   #14
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
Zitat:
md5 -- Errechnet den MD5-Code eines Strings

string md5 ( string str)
Funktion ist ganz einfach, wenn du dass passwort in die SQL speichern möchtest, darfst du nicht $passwd = $_POST["passwd"]; schreiben, sondern musst einfach das md5 hinzufügen:

PHP-Code:
$passwort md5$_POST["passwort"] ); 
Wenn du jetzt das von user gesendete Passwort mit dem aus der DB vergleichen willst, musst du nur noch:

PHP-Code:
if( md5$_POST[" vom user gesendetes passwort "] ) == $passwortAusDatenbank
überprüfen!

Wobei md5 ABSOLUT NICHT ZUM PASSWORT VERSCHLÜSSELN geeignet ist
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

Geändert von Dennis The Menace (27.12.2004 um 00:42 Uhr).
Dennis The Menace ist offline   Mit Zitat antworten
Alt 27.12.2004, 00:48   #15
TP-Junior
 
Registriert seit: Dec 2004
webhero macht alles soweit korrekt
Ok nun habe ich es so das er es md5 verschlüsselt ... könntest du mir aber nun den absatzu zeigen bei der login.php das er es auch ausliest ??? weil ich habe keine ahnung davon

// Edit ... wieso ist md5() nicht geeignet?

Geändert von webhero (27.12.2004 um 00:51 Uhr).
webhero ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Löschen aus Datenbank Löschen aus Datenbank
« Sonderzeichen im Dateinamen bei Dateiuploads | Dynamische Tabelle + Dynamische Liste (ColdFusion) »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu