PHP-Skript zum ändern der Userdaten

  • Ich habe hier das Script das die Daten von einem Formular die dort eingegeben wurden, ändern soll, er ändert aber nichts. Kann mir da bitte jemand helfen???


    <?php

    session_start();

    require_once('config.php');

    $errmsg_arr = array();

    $errflag = false;

    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    if(!$link) {
    die('Failed to connect to server: ' . mysql_error());
    }

    $db = mysql_select_db(DB_DATABASE);
    if(!$db) {
    die("Unable to select database");
    }

    function post($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
    $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
    }

    $member_id = ($_POST['member_id']);
    $fname = ($_POST['fname']);
    $lname = ($_POST['lname']);
    $login = ($_POST['login']);
    $password = ($_POST['password']);
    $cpassword = ($_POST['cpassword']);
    $email = ($_POST['email']);
    $website = ($_POST['website']);
    $ort = ($_POST['ort']);

    if($fname == '') {
    $errmsg_arr[] = 'First name missing';
    $errflag = true;
    }
    if($lname == '') {
    $errmsg_arr[] = 'Last name missing';
    $errflag = true;
    }
    if($login == '') {
    $errmsg_arr[] = 'Login ID missing';
    $errflag = true;
    }
    if($password == '') {
    $errmsg_arr[] = 'Password missing';
    $errflag = true;
    }
    if($cpassword == '') {
    $errmsg_arr[] = 'Confirm password missing';
    $errflag = true;
    }
    if( strcmp($password, $cpassword) != 0 ) {
    $errmsg_arr[] = 'Passwords do not match';
    $errflag = true;
    }
    if($email == '') {
    $errmsg_arr[] = 'Confirm email missing';
    $errflag = true;
    }
    if($website == '') {
    $errmsg_arr[] = 'Confirm website missing';
    $errflag = true;
    }
    if($ort == '') {
    $errmsg_arr[] = 'Confirm ort missing';
    $errflag = true;
    }

    if($login != '') {
    $qry = "SELECT * FROM members WHERE member_id='$member_id'";
    $result = mysql_query($qry);
    if($result) {
    if(mysql_num_rows($result) > 0) {
    $errmsg_arr[] = 'Login ID already in use';
    $errflag = true;
    }
    @mysql_free_result($result);
    }
    else {
    die("Query failed");
    }
    }

    if($errflag) {
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
    session_write_close();
    header("location: profile-form.php");
    exit();
    }

    $aendern = "UPDATE members SET fname = 'fname', lname = 'lname', login = '' WHERE member_id = ''";
    $update = @mysql_query($qry);

    if($result) {
    header("location: aenderung-success.php");
    exit();
    }else {
    die("Query failed");
    }
    ?>

  • $aendern = "UPDATE members SET fname = 'fname', lname = 'lname', login = '' WHERE member_id = ''";

    fname ist auch keine Variable... gleiches gilt bei den anderen ....
    du musst die schon $fname nennen

    und WHERE member_id = "" ist ja acuh mal der größte quatsch

  • Ja ok das habe ich geändert aber was meinst du mit member_is = '' ist voll der quatsch, da musst du mir schon genauer sagen was daran quatsch ist

  • naja momentan ändert er alle Werte, wo die member_id leer ist..da frage ich mich aber, wieso sollte eine member_id leer sein?
    ids sind dafür da, einen Eintrag zu nummerieren, also leicht wiederzufinden.

    Außerdem verstehe ich nicht ganz, was das script machen soll.

    Soll man seine eigenen Werte ändern?
    dann fehlt bei member_id die eigene id.

  • also ich habe es jetzt so fname = '$fname', lname = 'lname' WHERE meber_id = '$member_id'

  • Ja stimmt das ist blöd, es sollen die daten des eingeloggten users geändert werden. was muss ich den eingeben damit er die ID des angemeldeten user nimmt und dessen daten ändert?

  • Mittels member_id='$member_id'";

    meber_id wohl eher nicht

    Einmal editiert, zuletzt von Pion (27. September 2010 um 19:12)

  • $aendern = "UPDATE members SET fname = '$fname', lname = '$lname', login = '$login' WHERE member_id = '$member_id'";
    $update = @mysql_query($qry);

    So habe ich das jetzt geändert und es funktioniert noch immer nicht, wenn die id des users dessen daten ich ändern will eingebe, ändert er auch nichts dort muss irgendwo noch ein fehler sein

  • Was sagt mysql_error?

    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  • $update = @mysql_query($qry);

    Eher ändern zu

    $update = @mysql_query($aendern);

    Entferne außerdem das @.....

    Die Fehlen aber sämtlich Grundlagen, mache erst mal paar Tutorials

    mfg