Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Daten für Tabelle

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von willytyp, 14 Januar 2016.

  1. willytyp

    willytyp Benutzer

    Hallo,

    brauche mal wieder eure Hilfe.

    Ich habe in MySQL eine Datenbank (gaestebuch) erstellt.

    Darin befindet sich eine Tabelle (gaeste) mit folgenden Spalten:

    Ich hätte die Tabellenstruktur gerne als Bild beigefügt, wenn ich wüsste wie.

    Also, folgende Spalten hat die Tabelle
    id (Auto_increment), name (Varchar), datum (Timestamp), email (Varchar), ip (Varchar) und kommentar (Text).

    Sie ist z.Zt. noch leer.

    Wenn ich richtig gelesen habe, brauche ich bei id sowie datum und ip keine Daten eingeben,

    da die automatisch generiert werden, oder?

    Mit folgendem Programm möchte ich nun Daten eingeben, was mir allerdings nicht gelingt.

    Wie ich es auch versuche, außer Fehlermeldungen bekomme ich keine Daten in die Datei.

    Quelltext db_erzeugen:
    Code:
    <html>
    <head>
    
    <body>
    <p>Geben Sie bitte einen vollständigen Datensatz ein<br />
    und senden Sie das Formular ab:</p>
    
    <form action = "gesendet.php" method = "post">
       <p><input name="name" /> name</p>
       <!--  <p><input name="datum" /> Datum</p>-->
       <p><input name="email" /> email</p>
       <p><input name="kommentar" /> kommentar</p> 
       <p><input type="submit" name="gesendet" />
       <input type="reset" /></p>
    </form>
    
    <p>Alle Datensätze <a href="db_tabelle.php">anzeigen</a></p>
    </body>
    </html>
    
    und hier der Quellcode gesendet.php
    Code:
    <html
    <head>
    
    <body>
    <?php  
      
       if (isset($_POST["gesendet"]))
       {
          $con = mysqli_connect("","root");
          mysqli_select_db($con, "gaestebuch");        /*Datenbank*/
        
          /*ip=$_SERVER["REMOTE_ADDR"]                /*IP ermitteln*/
          
          $sql = "insert gaeste"                     /*Tabelle*/
            . "(name,email,kommentar) values "        /*Spalte&uuml;berschriften*/          
            . "('" . $_POST["name"] . "', "            /*Zeichenkette mit Anfangsklammer*/      
            . "'" . $_POST["email"] . ", "            /*Zeichenkette*/      
            . "'" . $_POST["kommentar"] . "')";        /*Zeichenkette mit Endklammer*/
    
          mysqli_query($con, $sql);
    
          $num = mysqli_affected_rows($con);
          if ($num>0)
          {
             echo "<p><font color='#00aa00'>";
             echo "Es wurde 1 Datensatz hinzugefügt";
             echo "</font></p>";
          }
          else
          {
             echo "<p><font color='#ff0000'>";
             echo "Es ist ein Fehler aufgetreten, ";
             echo "es wurde kein Datensatz hinzugefügt";
             echo "</font></p>";
          }
    
          mysqli_close($con);
       }
    ?>
    
    </head>
    </body>
    </html>
    
    So habe ich es aus schlauen Büchern zusammengelesen und erstellt.
    Allerdings werde ich irgendwo einen Fehler eingebaut haben.
    Ich weiss nur nicht wo. Hat eine(r) von euch die rettende Lösung?

    LG
    willytyp
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Dazu müßte bei der Definition der Tabelle ein Default-Wert angegeben werden. Für IP-Angaben haben bessere Datenbanken übrigens passende Datentypen. Das nur am Rande.
     
  3. willytyp

    willytyp Benutzer

    Hallo,
    hier mal die Tabelle, des besseren Verständnis wegen.

    LG
    willytyp
     

    Anhänge:

  4. ukulele

    ukulele Datenbank-Guru

    Mit der ID und dem Datum wird es in deinem Fall wohl klappen, bei der IP Spalte gibt es keinen Default Wert. Außerdem stehen alle Spalten auf NOT NULL, lassen also keine Leeren Eintrag zu. Das wird deine Fehler verursachen solange du nicht in jede Spalte auch einen Wert schreibst.
     
  5. willytyp

    willytyp Benutzer

    Hallo ukelele,
    zunächst vielen Dank für deinen Tipp. Geklappt hat es jedoch nicht.
    Ich habe mal , zu Testzwecken, alle Felder (bis auf id und datum) auf NULL gesetzt.
    Das brachte auch nicht den gewünschten Erfolg.
    Das Programm ruft zwar die Datei "gesendet.php" auf, macht dort aber gar nichts.
    Soll heissen, ich bekomme keinen Hinweis auf einen Fehler oder auf eine erfogreiche
    Speicherung.
    Ich bin hier langsam am verzweifeln.

    LG
    Willytyp
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Kein Wunder - NULL Fehlerprüfung / Behandlung. Arbeitet also wie programmiert. Erstaunlich, oder?
     
  7. willytyp

    willytyp Benutzer

    Hallo akretschmer,
    danke für den aussagekräftigen Hinweis!!!!!! Ja es ist erstaunlich einen solchen Hinweis zu bekommen.
    Ich habe mal die komplette NULL Fehlerprüfung auskommentiert.
    Dennoch bekomme ich keine Daten in die DB.
    Also, mal ehrlich, viel gebracht hat mir deine Aussage nicht.
    Einen Tipp, wie ich die DB füllen kann, hätte ich von einem Datenbank-Guru erwartet.
    Schade, dass du nur Tipps für einen Neuling in Rätseln gibst.
    Aber vermutlich bist du schon als Datenbank-Guru auf die Welt gekommen.

    LG
    willytyp
     
  8. ukulele

    ukulele Datenbank-Guru

    Dein Problem ist eher PHP, nicht die Datenbank. Deinen INSERT kannst du ja sehr leicht manuell gegen die Datenbank testen. Wenn der läuft, brauchst du einen PHP-Guru.
     
  9. akretschmer

    akretschmer Datenbank-Guru

    Mit NULL Fehlerbehandlung meinte ich, daß Du keine Prüfung machst, ob Deine Anfragen an die DB erfolgreich waren.

    Zwischen den folgenden Zeilen:

    Code:
    mysqli_query($con, $sql);
    
    $num = mysqli_affected_rows($con);
    
    solltest Du prüfen, ob der erste Befehl geklappt hat.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden