PHP Code->Registrierungs Prozess Datei



  • Naja er zählt einfach nicht hoch ob extern oder intern.
    Dein erster Vorschlag will irgendwie nicht funktionieren.
    Er überschreibt immer wieder den gleichen Datensatz.



  • Sehe das gerade erst, dass das ganze in eine DB kommt - dachte, du hast das so in einem Text-File 🙄 Wie schreibst du denn in die DB bzw. was soll da das Array - etwas mehr Code würde nicht schaden 😉



  • Ok hier ist der Code.
    Die Variablen kommen aus einem vorhergehenden Formular.

    <?
    $i = 0; 
    $i++; 
    $benutzer[$i] ["Nickname"] = "$eins"; 
    $benutzer[$i] ["Kennwort"] = "$zwei"; 
    $benutzer[$i] ["Nachname"] = "$drei"; 
    $benutzer[$i] ["Vorname"] = "$vier"; 
    
    $connectionid  = mysql_connect ("localhost", "root", ""); 
    if (!mysql_select_db ("userdat", $connectionid)) 
    { 
      die ("Keine Verbindung zur Datenbank"); 
    } 
    mysql_query ("DELETE FROM benutzerd"); 
    while (list ($key, $value) = each ($benutzer)) 
    { 
      $sql = "INSERT INTO ". 
        "benutzerdaten (Nickname, Kennwort, Nachname, Vorname) ". 
      "VALUES ('".$value["Nickname"]."', '". 
                           md5 ($value["Kennwort"])."', '". 
                           $value["Nachname"]."', '". 
                           $value["Vorname"]."')"; 
      mysql_query ($sql); 
      if (mysql_affected_rows ($connectionid) > 0) 
      { 
        echo "Angelegt.<br>\n"; 
      } 
      else 
      { 
       echo "Fehler.<br>\n"; 
      } 
    } 
    ?>
    


  • Und da wird jetzt in der DB immer der Datensatz überschrieben 😕
    BTW: statt while (list ($key, value)=each(value) = each (benutzer)) besser so:

    foreach($benutzer as $key => $value)
    


  • Ja aber das Problem mit dem Überschreiben exestiert jetzt noch.
    Er zählt immer noch nicht.
    Theoretisch müßte ich doch die Fumktionen eines simplen PHP->MYSQL Counter Nutzen können oder?



  • Hab folgendes geschrieben..
    Hab zwar Nachts meine Schwächen aber ich hoffe es ist alles einigermaßen richtig.

    <?
    //Verbindet zu Datenbank
    $connectionid  = mysql_connect ("localhost", "root", ""); 
    if (!mysql_select_db ("LoginSystem", $connectionid)) 
    { 
      die ("Keine Verbindung zur Datenbank"); 
    } 
    //Select Feld 1=id 
    [b]$sqlab  = "select Id * from benutzerdaten";[/b]
    //tja Definition von Id=$plus
    //Ab hier schwankt mein Gefühl das es laufen könnte
    
    [b]$benutzer[$i] ["Id"] = "$plus";[/b] 
    $benutzer[$i] ["Nickname"] = "$eins"; 
    $benutzer[$i] ["Kennwort"] = "$zwei"; 
    $benutzer[$i] ["Nachname"] = "$drei"; 
    $benutzer[$i] ["Vorname"] = "$vier"; 
    
    //er soll hochzählen mit dem ausgelesenen Wert
    [b]$plus++;[/b] 
    
    mysql_query ("DELETE FROM benutzerdaten"); 
    foreach($benutzer as $key =>$value)
    { 
    //Jetzt soll er die Id schreiben aber das tut er irgendwie nicht.
    
    [b]  $sql = 'INSERT INTO `benutzerdaten` ( `Id` , `Nickname` , `Kennwort` , `Nachname` , `Vorname` ) '
            . ' VALUES ( \'$value["Id"]\', \'\', \'\', \'\', \'\' );'
            . ' '; [/b]
      $sql = "INSERT INTO ". 
        "benutzerdaten (Nickname, Kennwort, Nachname, Vorname) ". 
      "VALUES ('".$value["Nickname"]."', '". 
                           md5 ($value["Kennwort"])."', '". 
                           $value["Nachname"]."', '". 
                           $value["Vorname"]."')"; 
      mysql_query ($sql); 
    
      if (mysql_affected_rows ($connectionid) > 0) 
      { 
        echo "Benutzer erfolgreich angelegt.<br>\n"; 
      } 
      else 
      { 
       echo "Fehler beim Anlegen der Benutzer.<br>\n"; 
      } 
    } 
    ?>
    

    Ich währe danbar für weitere Hilfe und Fehleranalyse.

    m.f.g.



  • Bist du dir sicher, dass wirklich nur ein Datensatz in der DB-Tabelle steht?! Wie hast du nachgeschaut (PHPMyAdmin oder eigener Code)?
    Ist mysql_query erfolgreich - falls nicht: was gibt mysql_error() zurück?! 🙂

    Und was wird jetzt bei deinem letzten Code am Ende ausgegeben?



  • Ich hab mit PHP MYADMIN nachgeschautr eben der Funktion von xampp.
    Achja wenn er schreibt dann schreibt er ne nul in die das ID Feld.
    Er will einfach nicht zählen un in ne neue Zeile springen.
    Eine Fehlermeldung gibt es keine, weil der Benutzer ja angelegt wird aber irgendwie auch immer wieder überschrieben.



  • Achso, sehe die Id-Spalte jetzt erst. Hast du denn diese Spalte als Auto-Increment angelegt?!



  • Jap
    aber was bringt mir Auto wenn ich selber mit dem Code um einen höher zähle?



  • Also ich hab jetzt mal auf meine Arbeitsplatz schnell xampp installiert.

    Der Benutzer wird angelegt.
    Das einzige Problem das noch exestiert ist, das der PHP-Script
    automatisch überschreibt aber die ID wird hoch gezählt.
    6.ter =Benutzer id6
    Aber er lässt eben die anderen Daten nicht drin



  • Ok ich hab die Lösung selber gefunden.
    War ein kleiner dummer Fehler.
    Für jeden den es interressiert, hier nochmal die jetzige Version:

    <?
    $connectionid  = mysql_connect ("localhost", "root", ""); 
    if (!mysql_select_db ("login", $connectionid)) 
    { 
      die ("Keine Verbindung zur Datenbank"); 
    } 
    $benutzer[$i] ["Nickname"] = "eins"; 
    $benutzer[$i] ["Kennwort"] = "zwei"; 
    $benutzer[$i] ["Nachname"] = "drei"; 
    $benutzer[$i] ["Vorname"] = "vier"; 
    foreach($benutzer as $key =>$value) 
    { 
      $sql = "INSERT INTO ". 
        "benutzerdaten (Nickname, Kennwort, Nachname, Vorname) ". 
      "VALUES ('".$value["Nickname"]."', '". 
                           md5 ($value["Kennwort"])."', '". 
                           $value["Nachname"]."', '". 
                           $value["Vorname"]."')"; 
      mysql_query ($sql); 
    
      if (mysql_affected_rows ($connectionid) > 0) 
      { 
        echo "erfolgreich.<br>\n"; 
      } 
      else 
      { 
       echo "Fehler.<br>\n"; 
      } 
    } 
    ?>
    

    Ich danke nochmal allen für ihre Hilfe.

    m.f.g.



  • Hab jetzt noch ein Problem:
    Ich habe folgendes.
    Das ist die Login Prozess Datei.

    <?php 
    session_start (); 
    $connectionid = mysql_connect ("localhost", "root", ""); 
    if (!mysql_select_db ("loginsystem", $connectionid)) 
    { 
      die ("Keine Verbindung zur Datenbank"); 
    } 
    
    $sql = "SELECT ". 
        "id, Nickname, Nachname, Vorname ". 
      "FROM ". 
        "benutzerdaten ". 
      "WHERE ". 
        "(Nickname like '".$_REQUEST["name"]."') AND ". 
        "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"; 
    $result = mysql_query ($sql); 
    
    if (mysql_num_rows ($result) > 0) 
    { 
      $data = mysql_fetch_array ($result); 
      $_SESSION["user_id"] = $data["id"]; 
      $_SESSION["user_nickname"] = $data["Nickname"]; 
      $_SESSION["user_nachname"] = $data["Nachname"]; 
      $_SESSION["user_vorname"] = $data["Vorname"]; 
    
      header ("Location: index.php"); 
    } 
    else 
    { 
      header ("Location: login.php?fehler=1"); 
    } 
    ?>
    

    Nur mir wird die ganze Zeit der Fehler ausgegeben.
    Die Daten von Teil 1 sind in der Datenbank und das funktioniert auch alles aber eben Teil 2 (der hier) nicht..
    Nochmal zur Erklärung und für den Durchblick.
    Die Daten die nun eingegeben werden haben nichts mit der obrigen Datei zu tun.
    Denn diese hier kriegt Werte aus einem Login Formular und das oben ist die Registrierung.
    Also Variablen aus einem Login Formular.

    Ich wäre euch super danbar für konstruktive Hilfe.

    m.f.g. 😕


Anmelden zum Antworten