HS80: PHP-Gästebuch Fehler

Ich hab mit PHP ein MySQL-Gästebuch entworfen. Es besteht nur aus einer Seite, das heißt oben auf der Seite ist das Eingabeformular für neue Einträge, darunter stehen die bereits vorhandenen Einträge.

Das Problem ist, dass (in meinem derzeitigen Code) bei jedem Aufruf des Gästebuch bereits ein Eintrag hinzugefügt wird. Eigentlich sollte der Beitrag erst dann in die Datenbank übernommen wenn der Submit-Button gedrückt wird. Wie könnte ich das realisieren?

Hier der derzeitige Code:

<form action="<?php PHP_SELF ?>" method="POST">
 ...Hier wird das Formular definiert...
<?php
$strQuery = "INSERT into guestbook (name, email, url, beitrag)";
$strQuery .= "VALUES ('$name', '$email', '$url', '$beitrag')";
$result = @mysql_query($strQuery);
?>
</form>
<h2>Bisherige Einträge</h2>
 ...Hier folgen dann die bisherigen Einträge...

  1. hallo,

    Das Problem ist, dass (in meinem derzeitigen Code) bei jedem Aufruf des Gästebuch bereits ein Eintrag hinzugefügt wird. das Problem kannst du vermeiden, wenn du deinen php-Code in eine Datei "gaestbuch.php" auslagerst. Also statt
    <form action="<?php PHP_SELF ?>" method="POST">

    steht dann neu:
    <form actiongaestebuch.php" method="POST">

    das funktioniert jedenfalls bei mir reibungslos

    Grüße

    Christoph S.

    1. Danke! Funktioniert bei mir jetzt auch. Ist ja eigentlich auch logisch. Also vielen Dank nochmal!

  2. Gib dem Submit-Button einen Variablen-Namen:
    <input type='submit' value='neuer Eintrag' name='neu'>
    anschließen machst du die Datenbandaktualisierung davon abhängig:

    if (neu){
     $strQuery = "INSERT into guestbook (name, email, url, beitrag)";
     $strQuery .= "VALUES ('$name', '$email', '$url', '$beitrag')";
     $result = @mysql_query($strQuery);
    }

    thats it.
    Gruß Arnt

    1. Da wird bei mir trotzdem schon beim Laden der Seite ein Eintrag gemacht.

      if (neu) {...}

      Diese if-Abfrage scheint bereits beim Laden der Seite true zu sein.

      1. Da wird bei mir trotzdem schon beim Laden der Seite ein Eintrag gemacht.

        if (neu) {...}

        Diese if-Abfrage scheint bereits beim Laden der Seite true zu sein.

        hast recht, muss auch
        if ($neu) {...}
        heißen.

        sorry, Flüchtigkeitsfehler
        Arnt

        1. Jo jetzt gehts. Danke!

  3. Ich hab mit PHP ein MySQL-Gästebuch entworfen. Es besteht nur aus einer Seite, das heißt oben auf der Seite ist das Eingabeformular für neue Einträge, darunter stehen die bereits vorhandenen Einträge.

    Das Problem ist, dass (in meinem derzeitigen Code) bei jedem Aufruf des Gästebuch bereits ein Eintrag hinzugefügt wird. Eigentlich sollte der Beitrag erst dann in die Datenbank übernommen wenn der Submit-Button gedrückt wird. Wie könnte ich das realisieren?

    Hier der derzeitige Code:

    <form action="<?php PHP_SELF ?>" method="POST">

    <input name="eintragen" ID="eintragen" value"Senf dazugeben">

    ...Hier wird das Formular definiert...
    <?php

    if ($eintragen)
    {

    $strQuery = "INSERT into guestbook (name, email, url, beitrag)";

    }

    $strQuery .= "VALUES ('$name', '$email', '$url', '$beitrag')";
    $result = @mysql_query($strQuery);
    ?>
    </form>
    <h2>Bisherige Einträge</h2>
    ...Hier folgen dann die bisherigen Einträge...

    Hallo Christoph

    ich habe dir die fehlenden Zeilen dazugeschrieben
    Achte auf jeden Fall auf Gross/Kleinschreibung der Variablennamen

    Gruß

    Thomas

    1. tom ...

      Hallo Christoph
      ich habe dir die fehlenden Zeilen dazugeschrieben
      Achte auf jeden Fall auf Gross/Kleinschreibung der Variablennamen

      ich kann nicht sehen, daß ich irgendwas in _diesem_ Thread zu "case sensitive" ausgesagt hätte (allerdings gabs nen klitzekleinen Tippfehler). Was "fehlende Zeilen" angeht habe ich mich darauf beschränkt, das Prinzip zu benennen, wie es funktioniert. Den Rest mußte "HS80" selber rausfinden, und es hat ja laut "danke"-posting dann auch funktioniert.

      Christoph S.

      1. Hallo Christop,

        selber ups.

        Da bin ich jetzt ganz erstaunt. Ich habe da wohl einen Knoten in meiner Anzeige gehabt. Ich war der festen Überzeugung, das Ur-Posting wäre von Dir. Tut mir leid.

        Jezt muss ich glatt nochmal schaun, welchen Teil des Thread ich für die Antwort eigentlich bemnutzt habe. Ich hoffe diese Antwort kommt richtig an und Du bist mir nicht böse.

        Grüße aus Brauaschweig

        Tom

        tom ...

        Hallo Christoph
        ich habe dir die fehlenden Zeilen dazugeschrieben
        Achte auf jeden Fall auf Gross/Kleinschreibung der Variablennamen
        ich kann nicht sehen, daß ich irgendwas in _diesem_ Thread zu "case sensitive" ausgesagt hätte (allerdings gabs nen klitzekleinen Tippfehler). Was "fehlende Zeilen" angeht habe ich mich darauf beschränkt, das Prinzip zu benennen, wie es funktioniert. Den Rest mußte "HS80" selber rausfinden, und es hat ja laut "danke"-posting dann auch funktioniert.

        Christoph S.