Registrierung in einer MYSQL Datenbank mit PHP



  • Hab ein kleines Problem und ich denke mal irgendwer hier hat bestimmt ne Lösung. Mit folgendem Code soll eine Datenbankeintragung stattfinden. Die config.php hat die Variablen Werte für die db_server u.s.w.
    Aus einem vorigen Formular sollen die Variablen eingesetzt werden.
    Das Formular sieht so aus:
    "formular.htm"

    <form action="registrierung-succes.php" method="post">
                        <input type="text" name="eins">
                        e-mail Adresse (*)
                        <input type="password" name="zwei">
                        Passwort (*)
                        <input type="text" name="drei">
                        Nachname (*)
                        <input type="text" name="vier">
                        Vorname (*)
                        <input name="f&uuml;nf" type="text" id="f&uuml;nf">
    (*) ..
                        <input type="submit" name="Send" value="Registrieren">
    

    Die PHP Datei mit dem Fortgang und dem PHP Code lautet so.
    "registrierung-succes.php"

    <?
    				@include("config.php");
    $connectionid  = mysql_connect ("$db_server", "$db_name", "$db_password"); 
    if (!mysql_select_db ("$db_user", $connectionid)) 
    { 
      die ("Keine Verbindung zur Datenbank"); 
    } 
    $benutzer[$i] ["id"] = "$nichts"; 
    $benutzer[$i] ["Nickname"] = "$zwei"; 
    $benutzer[$i] ["Kennwort"] = "$drei"; 
    $benutzer[$i] ["Vorname"] = "$vier"; 
    $benutzer[$i] ["Data"] = "$vier2"; 
    $benutzer[$i] ["Data2"] = "$vier3"; 
    $benutzer[$i] ["Data3"] = "$vier4"; 
    $benutzer[$i] ["Data4"] = "$vier5"; 
    $benutzer[$i] ["Data5"] = "$vier6"; 
    $benutzer[$i] ["Data6"] = "$vier7"; 
    $benutzer[$i] ["Data7"] = "$vier8"; 
    foreach($benutzer as $key =>$value) 
    { 
      $sql = "INSERT INTO ". 
        "benutzerdaten (Nickname, Kennwort, Vorname, Data1, Data2, Data3, Data4, Data5, Data6, Data7) ". 
               "VALUES ('".$value["Nickname"]."', '". 
                           $value["Kennwort"]."', '". 
                           $value["Vorname"]."')"; 
    					   $value["Data1"]."')";
    					   $value["Data2"]."')";
    					   $value["Data3"]."')";   
    					   $value["Data4"]."')"; 
                           $value["Data5"]."')"; 
    					   $value["Data6"]."')";
    					   $value["Data7"]."')";  
      mysql_query ($sql); 
    if (mysql_affected_rows ($connectionid) > 0) 
      { 
        echo "Benutzer erfolgreich angelegt.<br>\n"; 
      } 
      else 
      { 
       echo "Fehler beim Anlegen der Benutzer.<br>\n"; 
      } 
    } 
    ?>
    

    Bitte helft wenn ihr könnt..
    Danke im vorraus.



  • Du hast irgendwie vergessen zu schreiben, was das Problem eigentlich ist...



  • Also das Problem ist immernoch wie erwähnt das eine Datenbank Eintragung bei Ausführung nicht stattfindet.

    m.f.g.



  • Warum machst du eine foreach?

    Du versucht 11 Mal einen INSERT.

    Wo hast du bei
    benutzer[i] ["id"] = "$nichts";
    das $i her?
    Wofür legst du ein Array an wenn die Daten sowieso bereitsin variablen stehen.
    Hast du register_globals auf On? Wenn nein dann steht in den Variablen nichts drin.

    Verwenden dafür
    $_POST['']

    also z.B.

    _POST['eins'] _POST['zwei']
    u.s.w.
    Da steht dann der Wert aus der Form drin und du braucht kein Array anlegen.
    Wenn du nach mysql_query ($sql); einen Errorchek machen würdest hättest du gesehen das der Query falsch ist.

    Warum gibt es nach jeder Zeile einen ;
    Da fehlen nicht nur SQL-Grundlagen sondern auch PHP-Grundlagen.

    Ein erster INSERT würde so aussehen:

    INSERT INTO benutzerdaten (Nickname, Kennwort, Vorname, Data1, Data2, Data3, Data4, Data5, Data6, Data7) VALUES ('Nickname"','Kennwort"','Vorname');

    und das sind definitiv zuwenig Values.
    MySQL erwartet da 10 Values und du gibst ihm nur 3.



  • @Unix-Tom danke für deine Hilfe: Ich hab nunmal den meisten Müll rausgenommen und folgendes ist geblieben:

    <?
    				@include("config.php");
    $connectionid  = mysql_connect ("$db_server", "$db_name", "$db_password"); 
    if (!mysql_select_db ("$db_user", $connectionid)) 
    { 
      die ("Keine Verbindung zur Datenbank"); 
    } 
    { 
    $sql = "INSERT INTO ".benutzerdaten" VALUES('',".$_GET["Nickname"].",".$_GET["Nickname"].,".$_GET["Password"].,"1","1","1","1","1","1");";
    mysql_query ($sql); 
    if (mysql_affected_rows ($connectionid) > 0) 
      { 
        echo "Benutzer erfolgreich angelegt.<br>\n"; 
      } 
      else 
      { 
       echo "Fehler beim Anlegen der Benutzer.<br>\n"; 
      } 
    } 
    ?>
    

    Das ganze ergibt aber eine Fehlermeldung, die lautet:

    Parse error: parse error, unexpected T_STRING in /www/htdocs/v124444/registrierung-succes.php on line 229

    Was ist nun das Problem? Wäre dankbar für Hilfe
    Achja die Werte 1 sollen miteingetragen werden stehen aber eben nicht im Formular da sie als Zähler für einzelne Sektionen dienen sollen.

    Es sind eigentlich nur 4 Werte die aus dem vorigen Formular übertragen werden sollen.



  • Sagt doch schon PHP wo das Problem ist:
    .,".$_GET["Pa

    Es würde aber auch so nichtgehen da der QUERY wieder nicht richtig ist.
    STRINGS gehören in einfachen Hochkommas.
    Wenn du standardm. 1 in ein Feld eintragen willst kannst du dies auch bei der Tabledefinition angeben. Dann macht MySQL das selbst.

    Man kan ein INSERT auch

    INSERT INTO tabellenname SET spaltenname1 = 'hallo',spaltenname2 = 'HALLO', ......
    schreiben.
    Dadurch kann man sich nicht bei der Anzahl Spalten irren.



  • Also ich hab jetzt folgendes gecodet.
    Jetzt müßten ja nur noch die Werte eingesetzt werden oder? Zumindest funktioniertb das Anlagen der Felder.

    $sql = "INSERT INTO ". 
        "benutzerdaten (Nickname, Kennwort, Nachname, Vorname) ". 
      "VALUES ('".$value["eins"]."', '". 
                  $value["zwei"]."', '". 
                  $value["drei"]."', '". 
                  $value["vier"]."')"; 
     mysql_query ($sql); 
    if (mysql_affected_rows ($connectionid) > 0)
    

    Also die Frage ist wie setze ich eins auf Variable $eins im voraus so das Sie eingetragen wird? Mit get oder wie? lief nämlich irgendwie nie.



  • Naja du willst ja das deine Werte aus dem vorigen Forumlar eingefügt werden oder? Würd mich auch mal interressieren wie das funktioniert.



  • Jo und das soll so auch ma klappen wie ich es will.



  • Klappt jetzt alles also danke für die Hilfe...



  • Wenn man ein Formular absendet dann gibt es 3 GLOBALE Variablen in PHP

    GET_GET _POST
    $_REQUEST

    In GET steht drin was von Formular als GET übertragen wird.
    In POST steht drin was von Formular als POST übertragen wird.
    In REQUEST steht alle POST und GET drin.

    Dies sind Arrays.
    Also
    $_GET['nameausformular']

    Schaut euch diese Grundlagen nächstesmal selbst an. Ich habe ja schon oben darauf hingewiesen.

    $value[""] ist eine unnötige Variable und verbraucht nur unötig Speicher da man gleich GET/POST verwenden kann.


Anmelden zum Antworten