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

  • [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!

  • #2
    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?

    Kommentar


    • #3
      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.

      Kommentar


      • #4
        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);

        Kommentar


        • #5
          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();
          }
          }

          Kommentar


          • #6
            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);

            Kommentar


            • #7
              Danke! So funktionierts

              Kommentar

              Lädt...
              X