Fehler bei Variable, die nicht vorhanden ist

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

  • Fehler bei Variable, die nicht vorhanden ist

    Hallo,
    ich habe hier ein Gästebuch programmiert und bekomme einen Fehler zu einer Variablen, die es gar nicht gibt:

    PHP-Code:
    <?php
    // Datenbank verbinden
    include ("conne.php");

    //Hinzufügen von Einträgen - Formular
    switch ($cmd)
    {
        case 
    'add':
        echo <<<GUESTFORM
        <p>Bitte teilen Sie uns hier Ihre Meinung mit.</p>
        <p>
        <form name="guestbook" action="
    $PHP_SELF" method="post">
        <input type="Hidden" name="cmd" value="send"/>
        <table border="0">
        <tr>
        <td>Ihr Name</td>
        <td><input tyte="text" name="name"/></td>
        </tr>
        <tr>
        <td>Ihre E-Mail Adresse</td>
        <td><input type="text" name="email"/></td>
        </tr>
        <tr>
        <td>Ihre Homepage</td>
        <td><input type="text" name="url"/></td>
        </tr>
        <tr>
        <td>Ihr Job</td>
        <td><input type="text" name="job"/></td>
        </tr>
        <tr>
        <td>Ihr Wohnhort</td>
        <td><input type="text" name="location"/></td>
        </tr>
        <tr>
        <td>Kommentare</td>
        <td><textarea name="comments" cols="60" rows="6"></textarea></td>
        </tr>
        <tr>
        <td></td>
        <td><input type="submit" value="Absenden"/><input type="reset" value="Löschen"/></td>
        </tr>
        </table>
        </form>
        GUESTFORM;
        
    // Anzeige nach dem eigenen Eintrag
        
    break;
        case 
    'view':
        echo 
    '<h2>Anzeige der Eintr&auml;ge</h2>';
        
    // Datenbank abfragen
        
    $result mysql_query("SELECT * FROM guestbook");
        
    // Datensätze holen
        
    while ($row mysql_fetch_row($result))
        {
            echo <<<ENTRY
            <HR>
            <b>Name:</b>  
    $row[0]
            <br /><b>E-mail:</b><a href="mailto:
    $row[1]">$row[1]</a>
            <br /><b>Homepage:</b><a href="
    $row[2]">$row[2]</a>
            <br /><b>Job:</b>  
    $row[3]
            <br /><b>Aus:</b>  
    $row[4]
            <br /><b>Kommentar:</b>
            <br />
    $row[5]
            ENTRY;
        }
        break;
        case 
    'send':
        
    $comments addslashes("$comments");
        
    $strQuery "INSERT into guestbook (name, email, url, job, location, comments) ";
        
    $strQuery .= "VALUES ('$name', '$email', '$url', '$job', '$location', '$comments')";
        
    $result = @mysql_query($strQuery);
        if (
    $result) echo "<p>Danke! Wir werden Ihren Beitrag ber&uuml;cksichtigen</p>";
        break;
        default:
        
    // Zuletzt wird die Anzahl der Datensätze ermittelt
        // und zur Hauptseite zurückverwiessen
        
    $result mysql_query("SELECT COUNT(*) FROM guestbook");
        
    $row mysql_fetch_row($result);
        
    $num $row[0];
        if (
    $num =="")
        {
            
    $entry "Es sind zur Zeite keine Beitr&auml;ge";
        }
        elseif (
    $num == "1")
        {
            
    $entry "Es ist zur Zeit ein Beitrag";
        }
        else
        {
            
    $entry "Es sind zur Zeit $num Beitr&auml;ge";
        }
        echo <<<LINKS
        <p>Willkommen in unserem G&auml;stebuch.<br />
        
    $entry im G&auml;stebuch.<p/>
        <a href="
    $PHP_SELF?cmd=add">Einen Beitrag hinzuf&uuml;gen</a><br />
        <a href="
    $PHP_SELF?cmd=view">Beitr&auml;ge ansehen</a><br />
        LINKS;
    }
    echo <<<ACCEPTED
    <p>
    <a href="
    $PHP_SELF">Zur&uuml;ck zur Startseite des G&auml;stebuches</a>
    </p>
    ACCEPTED;
    ?>

    Bekomme folgenden Fehler:
    Parse error: parse error, unexpected $end in H:\xampp\xampp\htdocs\moep.php on line 104

    Danke für jede Hilfe =)

  • #2
    da fehlen Hochkommta
    echo <<<GUESTFORM

    und wenn echo zu ende ist
    "I don't want to belong to any club that would accept me as a member."

    Groucho Marx

    Kommentar


    • #3
      Original geschrieben von mcmurphy
      da fehlen Hochkommta
      echo <<<GUESTFORM
      Nein, tun sie nicht - das nennt sich Heredoc-Syntax.

      @Flo2003: Den Link solltest auch du dir noch mal ankucken - da steht nämlich auch, wo der abschließende Bezeichner stehen muss.

      Und unexpected $end bezieht sich nicht auf eine Variable namens $end, sondern auf das Ende deines Scriptes. Und eben weil du die Syntax falsch angewandt hast, ist dein Script plötzlich und unerwartet zuende.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Ich habe es jetzt gefixt, sodass es funktioniert! Man musste die Tags bündig an den Anfang schreiben und durfte nicht einrücken!

        Jedoch besteht nun ein weiteres Problem:
        Die Hinzufügen Funktion funtkioniert nicht!

        Neuer Code:

        PHP-Code:
        <?php
        // Datenbank verbinden
        include ("config/settings2.php");

        //Hinzufügen von Einträgen - Formular
        switch ($cmd)
        {
            case 
        'add':
        echo <<<GUESTFORM
            <p>Bitte teilen Sie uns hier Ihre Meinung mit.</p>
            <p>
            <form name="guestbook" action="
        $PHP_SELF" method="post">
            <input type="Hidden" name="cmd" value="send"/>
            <table border="0">
            <tr>
            <td>Ihr Name</td>
            <td><input tyte="text" name="name"/></td>
            </tr>
            <tr>
            <td>Ihre E-Mail Adresse</td>
            <td><input type="text" name="email"/></td>
            </tr>
            <tr>
            <td>Ihre Homepage</td>
            <td><input type="text" name="url"/></td>
            </tr>
            <tr>
            <td>Ihr Job</td>
            <td><input type="text" name="job"/></td>
            </tr>
            <tr>
            <td>Ihr Wohnhort</td>
            <td><input type="text" name="location"/></td>
            </tr>
            <tr>
            <td>Kommentare</td>
            <td><textarea name="comments" cols="60" rows="6"></textarea></td>
            </tr>
            <tr>
            <td></td>
            <td><input type="submit" value="Absenden"/><input type="reset" value="Löschen"/></td>
            </tr>
            </table>
            </form>
        GUESTFORM;
            
        // Anzeige nach dem eigenen Eintrag
            
        break;
            case 
        'view':
            echo 
        '<h2>Anzeige der Eintr&auml;ge</h2>';
            
        // Datenbank abfragen
            
        $result mysql_query("SELECT * FROM guestbook");
            
        // Datensätze holen
            
        while ($row mysql_fetch_row($result))
            {
        echo <<<ENTRY
                <HR>
                <b>Name:</b>  
        $row[0]
                <br /><b>E-mail:</b><a href="mailto:
        $row[1]">$row[1]</a>
                <br /><b>Homepage:</b><a href="
        $row[2]">$row[2]</a>
                <br /><b>Job:</b>  
        $row[3]
                <br /><b>Aus:</b>  
        $row[4]
                <br /><b>Kommentar:</b>
                <br />
        $row[5]
        ENTRY;
            }
            break;
            case 
        'send':
            
        $comments addslashes("$comments");
            
        $strQuery "INSERT into guestbook (name, email, url, job, location, comments) ";
            
        $strQuery .= "VALUES ('$name', '$email', '$url', '$job', '$location', '$comments')";
            
        $result = @mysql_query($strQuery);
            if (
        $result) echo "<p>Danke! Wir werden Ihren Beitrag ber&uuml;cksichtigen</p>";
            break;
            default:
            
        // Zuletzt wird die Anzahl der Datensätze ermittelt
            // und zur Hauptseite zurückverwiessen
            
        $result mysql_query("SELECT COUNT(*) FROM $table");
            
        $row mysql_fetch_row($result);
            
        $num $row[0];
            if (
        $num =="")
            {
                
        $entry "Es sind zur Zeite keine Beitr&auml;ge";
            }
            elseif (
        $num == "1")
            {
                
        $entry "Es ist zur Zeit ein Beitrag";
            }
            else
            {
                
        $entry "Es sind zur Zeit $num Beitr&auml;ge";
            }
        echo <<<LINKS
            <p>Willkommen in unserem G&auml;stebuch.<br />
            
        $entry im G&auml;stebuch.<p/>
            <a href="
        $PHP_SELF?cmd=add">Einen Beitrag hinzuf&uuml;gen</a><br />
            <a href="
        $PHP_SELF?cmd=view">Beitr&auml;ge ansehen</a><br />
        LINKS;
        }
        echo <<<ACCEPTED
        <p>
        <a href="
        $PHP_SELF">Zur&uuml;ck zur Startseite des G&auml;stebuches</a>
        </p>
        ACCEPTED;
        ?>

        Kommentar


        • #5
          Original geschrieben von Flo2003
          Die Hinzufügen Funktion funtkioniert nicht!
          *seufz*

          "Funktioniert nicht" ist keine brauchbare Problembeschreibung.


          Bitte lies in den Regeln nach, was du tun sollst, wenn etwas mit MySQL "nicht funktioniert".
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Ok, nun etwas genauer *g

            Die Links stehen ja unten auf der Page:
            PHP-Code:
            echo <<<LINKS
                <p>Willkommen in unserem G&auml;stebuch.<br />
                
            $entry im G&auml;stebuch.<p/>
                <a href="
            $PHP_SELF?cmd=add">Einen Beitrag hinzuf&uuml;gen</a><br />
                <a href="
            $PHP_SELF?cmd=view">Beitr&auml;ge ansehen</a><br />
            LINKS; 

            Hierbei gelange ich wohl zu dem gewünschten Link (Adresseleiste stimmt!), der im Switch als 'add' bezeichnet ist. Leider bleibt das Layout jedoch gleich, als wenn ich nichts getan hätte! Das Formular, das unter add definiert ist wird somit nicht angezeigt

            Kommentar


            • #7
              Dann informiere dich über register_globals - auch dazu steht was in den Regeln, weiter unten.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Habe mir die Seite peterkropff.de durchgelesen.

                Demnach müsste ich ja

                PHP-Code:
                echo $_POST['id']; 
                verwenden! Doch wie baue ich das in meinen Code ein? Ich greife ja auf gar keine übergebene Variable zu, sondern sage nur, dass bei Linkklick auf Hinzufügen das Script aufgerufen werden soll (PHP_SELF) und der punkt add ausgeführt werden soll!

                Oder seh ich das falsch?!

                Kommentar


                • #9
                  Original geschrieben von Flo2003
                  Demnach müsste ich ja echo $_POST['id']; erwenden!
                  Nein, du übergibst einen Wert per Link, und das ist GET, nicht POST.

                  Und echo würdest du verwenden, wenn du den Wert ausgeben wolltest - willst du aber nicht, sondern? Genau, ihn im switch() verwenden, um davon abhängig verschiedene Aktionen auszuführen.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    d.h. die case form muss geändert werden
                    PHP-Code:
                        case '$_GET[add]'

                    und der dazugehörige Link von
                    PHP-Code:
                        <a href="$PHP_SELF?cmd=add">Einen Beitrag hinzuf&uuml;gen</a><br /> 
                    auf add als Variable?

                    Kommentar


                    • #11
                      nö, so hier:
                      PHP-Code:
                      switch ($_GET['cmd']) {
                      case 
                      'add':
                      // usw. 
                      und besser: $_SERVER['PHP_SELF'] benutzen

                      Kommentar


                      • #12
                        Danke! Das ist gelöst, aber jetzt tut sich was neues auf

                        der default Punkt aus dem switch wird nicht ausgeführt. Es werden weder Einträge aufgelistet, noch werden die Links angezeigt!
                        Dazu zeigt der Link, der auf die Startseite verweisen sollte (default), auf add gesetzt.

                        Kommentar


                        • #13
                          Original geschrieben von Flo2003
                          Dazu zeigt der Link, der auf die Startseite verweisen sollte (default), auf add gesetzt.
                          keine ahnung, was du da treibst

                          das läuft so: switch ist das vergleichskriterium
                          danach werden alle cases durchlaufen, trifft dann nicht zu und es existiert default, wird diese anweisung dann ausgeführt.
                          also default: steht als letztes.

                          Kommentar


                          • #14
                            Folgendes, um das Problem nochmal genauer zu beschreiben:

                            Wenn ich auf der index.php auf Hinzufügen klicke, gelange ich auf index.php?cmd=add

                            Das Eintragformular wird angezeigt.

                            IMMER gibt es auf JEDER Seite unten einen Link "Zurück zur Startseite".

                            Doch wenn ich mich im 'add' Part befinde, zeigt dieser Link, statt auf die index.php auf index.php?cmd=add

                            --

                            Edit:

                            Dies ist auch der Fall im 'view' Part! Auch hier zeigt der Link auf index.php?cmd=view statt auf index.php
                            Zuletzt geändert von Flo2003; 26.10.2006, 11:56.

                            Kommentar


                            • #15
                              Doch wenn ich mich im 'add' Part befinde, zeigt dieser Link, statt auf die index.php auf index.php?cmd=add
                              wahrscheinlich, weil du das so angegeben hast. code?

                              gruß
                              peter
                              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                              Meine Seite

                              Kommentar

                              Lädt...
                              X