Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Formular in eine Datenbank eintragen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Inchie
    hat ein Thema erstellt [Erledigt] Formular in eine Datenbank eintragen.

    [Erledigt] Formular in eine Datenbank eintragen

    Hallo,

    ich möchte mit Hilfe eines Formulares Daten in eine Datenbank eintragen. Dafür habe ich zwei Tabellen angelegt. In eine Tabelle sollen personenbezogene Daten gespeichert werden. In der zweiten mehrere Ausprägungen einer Person (z.B. Person 1 hört Metallica und Manowar).
    Das funktioniert soweit auch. Damit ich aber platz spare, würde ich den Code gerne in einer foreach-Schleife anwenden. Das klappt leider nicht
    Erst einmal der funktionierende Code:

    $db_verbindung = mysql_connect( 'localhost', 'root', '' );
    if ( ! $db_verbindung ) {
    die( 'Konnte keine Verbindung herstellen: ' . mysql_error() );
    }
    $ID = mysql_insert_id();
    $query = "INSERT INTO $tabelle2 VALUES ('$Nummer1','$ID')";
    $result = mysql_query($query);

    $query = "INSERT INTO $tabelle2 VALUES ('$Nummer2','$ID')";
    $result = mysql_query($query);

    $query = "INSERT INTO $tabelle2 VALUES ('$Nummer3','$ID')";
    $result = mysql_query($query);

    Folgender Code gibt keine Fehlermeldung aus (aber generiert auch keinen
    Datenbankeintrag):

    function text($i){
    $db_verbindung = mysql_connect( 'localhost', 'root', '' );
    if ( ! $db_verbindung ) {
    die( 'Konnte keine Verbindung herstellen: ' . mysql_error() );
    }
    $ID = mysql_insert_id();
    $query = "INSERT INTO $tabelle2 VALUES ('".$_POST[$i]."','$ID')";
    $result = mysql_query($query);
    }

    $arr = array('Nummer1', 'Nummer2', 'Nummer3');
    foreach($arr as $i){
    text($i);
    }

    Vielleicht kann mir jemand den Fehler mitteilen? Würd mich sehr darüber freuen. Danke schonmal!

  • Inchie
    antwortet
    Danke! So funktionierts

    Einen Kommentar schreiben:


  • s1x
    antwortet
    So habe es mal auf meinem Server probiert und es funktioniert einwandfrei.
    Habe es mit meiner DB Klasse gemacht sollte aber kein Unterschied darstellen. Änder einfach die Namen, so funktioniert das aufj. bei mir.

    PHP-Code:
    function text($i){
      global 
    $db;
      
    $query "INSERT INTO users_meldungen (uid,titel,typ,meldung,datum,sid) VALUES ('$i','$i','$i','$i','$i','$i')";
      
    $result $db->query($query);
    }  

    $arr = array('Nummer1''Nummer2''Nummer3');
    foreach(
    $arr as $i){
      
    text($i);

    Achja,... anbei würde ich dazu sagen das du die MySQL Verbindung einfach nur einmal aufbaust. Sprich...

    PHP-Code:
      $db_verbindung mysql_connect'localhost''root''' );
      if ( ! 
    $db_verbindung ) {
        die( 
    'Konnte keine Verbindung herstellen: ' mysql_error() );
      }

    function 
    text($i){
      
    $ID mysql_insert_id();
      
    $query "INSERT INTO $tabelle2 VALUES ('$i','$ID')";
      
    $result mysql_query($query);

    Einen Kommentar schreiben:


  • Inchie
    antwortet
    Hallo s1x,

    leider funktioniert es bei mir nicht. Anbei noch mein Formular vielleicht liegt es ja daran.

    <h>Nummer:</h>
    <table border="0">
    <tr>
    <td><input name="Nummer1" type="text" size="8" maxlength="8"></td>
    <td><input name="Nummer2" type="text" size="8" maxlength="8"></td>
    <td><input name="Nummer3" type="text" size="8" maxlength="8"></td>
    <td><input name="Nummer4" type="text" size="8" maxlength="8"></td>
    <td><input name="Nummer5" type="text" size="8" maxlength="8"></td>
    <td><input name="Nummer6" type="text" size="8" maxlength="8"></td>
    </tr>
    <tr>

    Danke für deine Hilfe! Anbei auch noch ein weiterer Code der funktioniert.
    Allerdings nicht in einer Schleife

    if (strlen(trim($Nummer1)) == 0){
    echo ("<br>Textfeld ist leer");
    }else{
    $dbanfrage = "INSERT into $tabelle2 Values ('$Nummer1','$ID')";
    if (mysql_db_query ($dbname, $dbanfrage, $dbverbindung)) {
    print ("Datenbankeintrag erfolgreich.");
    } else {
    print ("Es traten Probleme im Datenbankeintrag auf.");
    echo mysql_error();
    }
    }

    Einen Kommentar schreiben:


  • s1x
    antwortet
    Du hast doch die Variable $i doch in der Funktion. Da brauchst du doch nichts mit $_POST[''] machen. Das must du eher in den Aufruf der Funktion packen.

    So sollte es eigentlich gehen,...

    PHP-Code:
    function text($i){
      
    $db_verbindung mysql_connect'localhost''root''' );
      if ( ! 
    $db_verbindung ) {
        die( 
    'Konnte keine Verbindung herstellen: ' mysql_error() );
      }
      
    $ID mysql_insert_id();
      
    $query "INSERT INTO $tabelle2 VALUES ('$i','$ID')";
      
    $result mysql_query($query);

    PHP-Code:
    $arr = array('Nummer1''Nummer2''Nummer3');
    foreach(
    $arr as $i){
      
    text($i);

    Einen Kommentar schreiben:


  • Inchie
    antwortet
    Hallo s1x,
    vielen Dank für deine Antwort. Ich verwende mysql_insert_id() da ich später eine Join Abfrage über beide Tabellen mache. Daher die id.

    $_POST[$i] habe ich verwendet, da die Daten von einem Formular kommen. Eigentlich geht es auch mit $Nummer1... Die Values in $tabelle2 stimmen auch.

    Einen Kommentar schreiben:


  • s1x
    antwortet
    Mal zu beginn. Eigentlich kannst du das "mysql_insert_id()" Zeug weglassen, wenn du deine Tabelle auf "auto_increment" gestellt hast.
    Da kannst du dann einfach bei den Values das Feld für die ID leer lassen.

    Ähh...wieso benutzt du $_POST[$i] ?

    Dann würde die nächste Frage lauten, hast du auch ein der $tabelle2 auch gleiche Anzahl wie bei den Values?

    Einen Kommentar schreiben:

Lädt...
X