Daten an Datenbank senden falsche Reihenfolge

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

  • Daten an Datenbank senden falsche Reihenfolge

    Hallo ihr,

    bin ganz neu im Forum und ganz neu im Thema PHP, MySQL etc.
    Ich bin gerade dabei, ein kleines simples "Gästebuch" zu entwickeln. Datenbank ist angelegt, Daten sind drin, Daten werden gelesen und korrekt ausgespuckt (Nur die Umlaute wollen noch nicht so). Beim Schreiben in die DB habe ich jedoch Probleme. Und zwar sobald ich die Seite öffne, wo man die Daten eingeben kann, erzeugt er mir schon einen Eintrag - natürlich leer. Wenn ich dann Daten in der Maske eingebe und auf speichern klicke, sagt er mir alles dass alles ok ist, es wurde jedoch trotzdem nichts in die DB geschrieben. Da ich absolut neu bin habe ich gar keine Ahnung woran das liegen könnte. Ich vermute das es an irgend einer Reihenfolge liegt.

    Hier der Code:
    PHP-Code:
    <?php
        
    // Prüfen ob ein Eintrag gemacht wurde
        
        
    if ( $_POST['beschreibung'] != "" )
        {
            echo 
    "<h2>Eintrag gespeichert</h2>";
            
    // hier kommt nun der entsprechende PHP-Code
            
    exit;
        }
    ?>
    <form name="" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="text/html">
        <p>Ihr Name:<br />
        <input type="text" name="name" value="" size="50" maxlength="150" />
        </p>
        
        <p>Ihr Vorname:<br />
        <input type="text" name="vorname" value="" size="50" maxlength="150" />
        
        <p>Ihre E-Mail-Adresse:<br />
        <input type="text" name="email" value="" size="50" maxlength="150" />
        </p>
        
        <p>Gästebucheintrag:<br />
        <textarea name="beschreibung" rows="10" cols="50"></textarea>
        </p>
        
        <input type="Submit" name="" value="speichern" />
    </form>

    <?php
            
        
    //Verbindung zur Datenbank herstellen
        
        
    define 'MYSQL_HOST''example.com' );
        
    define 'MYSQL_BENUTZER''****' );
        
    define 'MYSQL_KENNWORT''****' );
        
    define 'MYSQL_DATENBANK''****' );
        
        
    $db_link = @mysql_connect (MYSQL_HOSTMYSQL_BENUTZERMYSQL_KENNWORT);
        if ( ! 
    $db_link )
        {
            
    // hier sollte dann später dem Programmierer eine
            // E-Mail mit dem Problem zukommen gelassen werden
            // die Fehlermeldung für den Programmierer sollte
            // das Problem ausgeben mit: mysql_error()
            
    die('keine Verbindung zur Zeit möglich - später probieren ');
        }

        
    $db_sel mysql_select_dbMYSQL_DATENBANK ) or die ("Auswahl der Datenbank fehlgeschlagen");
        
        
        
    // MySQL Befehl zusammenbauen, sodass diese Daten gespeichert werden
        
        
    $sql " INSERT INTO entry ";
        
    $sql .= " SET ";
        
    $sql .= " name   ='"$_POST['name'] ."', ";
        
    $sql .= " vorname  ='"$_POST['vorname'] ."', ";
        
    $sql .= " email    ='"$_POST['email'] ."', ";
        
    $sql .= " date  ='"date("Y-m-d H:i:s") ."', ";
        
    $sql .= " beschreibung='"$_POST['beschreibung'] ."' ";
        
        
    // MySQL Befehl Konstrukt zur Kontrolle ausgeben    
        // echo "<hr />SQL: $sql<hr />";

        // ausführen des mysql-Befehls
        
        
    $db_erg mysql_query$sql );
        if ( ! 
    $db_erg )
        {
          die (
    'Ungültige Abfrage: ' mysql_error());
        }
        
        
    // Link zum Gästebuch
        
    echo '<p><a href="gaestebuch.php">Gästebuch anzeigen</a></p>';
    exit;
    ?>
    Ich hoffe ihr könnt mir helfen!

    Vielen Dank und
    beste Grüße,
    Flo
    Zuletzt geändert von AmicaNoctis; 11.10.2011, 14:05.

  • #2
    Hallo,

    der PHP-Code zum Einfügen in die Datenbank wird immer ausgeführt. Oben hast du zwar eine Abfrage, ob in dem POST-Feld „beschreibung“ etwas drin steht, aber das Insert-Statement unten wird ohne Bedingung ausgeführt.

    [COLOR="Red"]Niemals Anmeldedaten posten!!! Diesen Thread kann jeder im Internet lesen und dazu gehören auch Suchmaschinen! Ich hab die Daten maskiert.[/COLOR]

    Gruß,

    Amica
    Zuletzt geändert von AmicaNoctis; 11.10.2011, 14:13.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Um Gottes willen vielen Dank! Da habe ich vor lauter Code gar nicht dran gedacht! Vielen Dank für's Entfernen!

      Könntest du mir das noch ein klein wenig detaillierter erklären? Wäre super!

      Ich habe mir den bisherigen Stand aus verschiedenen Foren und Hilfestellungen zusammengebaut, versteh es auch teilweise von der Logik. Aber aus deinem Post kann ich mir leider keinen weitere Lösungsweg bilden

      Kommentar


      • #4
        Dort wo der Kommentar steht, dass da der entsprechende PHP-Code rein soll, dort musst du den ganzen Insert-Code von unten einbauen. Denn der soll ja nur ausgeführt werden, wenn [FONT="Courier New"]$_POST['beschreibung'] != ""[/FONT] zutrifft.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Wow super! Genau das ware der Fehler. Nun funktioniert es einwandfrei!
          Ich danke dir vielmals! Jetzt wo du es mir kurz erklärt hast, verstehe ich
          es auch. Macht natürlich Sinn das dann Daten geschrieben werden sollen
          bzw. ERST dann, wenn der Fall eintritt das das Feld ausgefüllt ist. Daher
          auch logisch, dass er mir schon beim Öffnen der Seite einen leeren
          Eintrag erstellt hat.

          Bestens! Danke!

          Viele Grüße,
          Florian

          Kommentar

          Lädt...
          X