Ankündigung

Einklappen
Keine Ankündigung bisher.

Finde den fehler nicht

Einklappen

Neue Werbung 2019

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

  • Finde den fehler nicht

    Ich bekomme immer diesen fehler code:
    Parse error: syntax error, unexpected 'while' (T_WHILE) in E:\xampp\htdocs\Gaestebuch\senden.php on line 26

    PHP-Code:
    <html>
    <head>
        <title>G&auml;stebuch mit PHP - Senden</title>
        <link rel="stylesheet" type="text/css" href="css/design.css" />
    </head>
    <body>
        <h1>Mein G&auml;stebuch - Senden</h1>
        <?php
            $name 
    $_POST["name"];
            
    $mail $_POST["mail"];
            
    $nachricht $_POST["nachricht"];
        
            If(
    $name == "" or $mail == "" or $nachricht == "") {
                echo 
    "Eines oder mehrere Felder sind leer";
            } else {
                    
    $verbindung mysql_connect("localhost""root""")
                    or die (
    "Fehler im System");

                    
    mysql_select_db("guest")
                    or die (
    "Verbindung zur Datenbank wasr nicht möglich..."); 
                    
                            
    $id 0;
                            
    $abfrage "SELECT id FROM gbook ORDER BY id DESC LIMIT 1";
                            
    $ergebnis mysql_query($abfrage)
                               
                            while(
    $row mysql_fetch_object($ergebnis))
                            {
                                
    $id $row->id;
                            }
                           
                            
    $id ++;
                           
                            
    $timestamp time();
                            
    $datum date("d.m.Y"$timestamp);
                           
                            
    $nachricht str_replace("ä""&auml;"$nachricht);
                            
    $nachricht str_replace("Ä""&Auml;"$nachricht);
                            
    $nachricht str_replace("ö""&ouml;"$nachricht);
                            
    $nachricht str_replace("Ö""&Ouml;"$nachricht);
                            
    $nachricht str_replace("ü""&uuml;"$nachricht);
                            
    $nachricht str_replace("Ü""&Uuml;"$nachricht);
                            
    $nachricht str_replace("ß""&szlig;"$nachricht);
                            
    $nachricht str_replace("<""&nsp;"$nachricht);
                            
    $nachricht str_replace(">""&nbsp;"$nachricht);
                            
    $nachricht str_replace("\r\n""<br />;"$nachricht);
                           
                            
    $name str_replace("ä""&auml;"$name);
                            
    $name str_replace("Ä""&Auml;"$name);
                            
    $name str_replace("ö""&ouml;"$name);
                            
    $name str_replace("Ö""&Ouml;"$name);
                            
    $name str_replace("ü""&uuml;"$name);
                            
    $name str_replace("Ü""&Uuml;"$name);
                            
    $name str_replace("ß""&szlig;"$name);
                            
    $name str_replace("<""&nsp;"$name);
                            
    $name str_replace(">""&nbsp;"$name);
                           
                            
    $eintrag "INSERT INTO gaestebuch
                            (id, name, mail, nachricht, datum)
                           
                            VALUES
                            ('
    $id', '$name', '$mail', '$nachricht', '$datum')";
                           
                            
    $eintragen mysql_query($eintrag);
                           
                            if(
    $eintragen true) {
                                
    ?>
                                <p> Vielen Dank. Ihr Eintrag wurde gespeichert</p>
                                <p><a href="index.php">Zur&uuml;ck</a></p>
                                <?php
                               
                            
    } else {
                                echo 
    "Fehler im System. Eintrag konnte nicht gespeichert werden. Bitte versuchen Sie es sp&auml;ter erneut.";
                            }
                           
                           
                            
    mysql_close($verbindung);
                       
                       
                        }
                   
               
                
    ?>
    </body>
    </html>

  • #2
    Fehlermeldung gelesen? Das while kommt unerwartet, also schau doch mal was du eine Zeile darüber (am Ende) vergessen haben könntest....

    Kommentar


    • #3
      PHP-Code:
      $ergebnis mysql_query($abfrage
      ...was könnte da fehlen?!
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        Wie wäre es, wenn du erst mal sagst, wo Zeile 26 ist...

        EDIT: mist, ich war mal wieder zu langsam
        https://github.com/Ma27
        Javascript Logic is funny:
        [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

        Kommentar


        • #5
          Ähm, ich habe jetzt leider nicht die Zeit, um das Script zu zerpflücken, aber lass' dir auf die Schnelle gesagt sein, dass das Script absoluter Mist ist. Einiges falsch und einiges überflüssig und einiges fehlt.
          Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

          Kommentar


          • #6
            Nur überflogen und als Ansatz was man tuen könnte, gibt sicher noch mehr zu erwähnen.

            PHP-Code:
            <html>
            <
            head>
                <
            title>G&auml;stebuch mit PHP Senden</title
            Wenn du konsequent mit einem Zeichensatz arbeitest ist das hier unnötig.
            PHP-Code:
                <link rel="stylesheet" type="text/css" href="css/design.css" />
            </
            head>
            <
            body>
                <
            h1>Mein G&auml;stebuch Senden</h1
            Siehe vorherigen Kommentar
            PHP-Code:
                <?php
                    $name 
            $_POST["name"];
                    
            $mail $_POST["mail"];
                    
            $nachricht $_POST["nachricht"];
            Und die nächste Fehlermeldung wartet auf dich. Bevor du auf irgendeine vom Nutzer abhängige Variable zugreifst solltest du überprüfen ob diese überhaupt existiert.
            PHP-Code:
                    If($name == "" or $mail == "" or $nachricht == "") {
                        echo 
            "Eines oder mehrere Felder sind leer"
            Du meintest
            Code:
            empty($_POST['blub'])
            . Tausche die beiden Snippets aus, dann passt das sogar im Ansatz
            PHP-Code:
                    } else {
                            
            $verbindung mysql_connect("localhost""root""")
                            or die (
            "Fehler im System"); 
            Die Mysql-Erweiterung ist veraltet und sollte nicht mehr verwendet werden. Verwende MySQLi oder PDO.

            Außerdem, gibt es bessere und nutzerfreundlichere Möglichkeiten als "or die"
            PHP-Code:

                            mysql_select_db
            ("guest")
                            or die (
            "Verbindung zur Datenbank wasr nicht möglich..."); 
                            
                                    
            $id 0;
                                    
            $abfrage "SELECT id FROM gbook ORDER BY id DESC LIMIT 1";
                                    
            $ergebnis mysql_query($abfrage)
                                       
                                    while(
            $row mysql_fetch_object($ergebnis))
                                    {
                                        
            $id $row->id;
                                    }
                                   
                                    
            $id ++; 
            Mir ist klar was du machen möchtest, aber das hier ist Mumpitz (siehe unten, übernächster Absatz)
            PHP-Code:
                                   
                                    $timestamp 
            time();
                                    
            $datum date("d.m.Y"$timestamp);
                                   
                                    
            $nachricht str_replace("ä""&auml;"$nachricht);
                                    
            $nachricht str_replace("Ä""&Auml;"$nachricht);
                                    
            $nachricht str_replace("ö""&ouml;"$nachricht);
                                    
            $nachricht str_replace("Ö""&Ouml;"$nachricht);
                                    
            $nachricht str_replace("ü""&uuml;"$nachricht);
                                    
            $nachricht str_replace("Ü""&Uuml;"$nachricht);
                                    
            $nachricht str_replace("ß""&szlig;"$nachricht);
                                    
            $nachricht str_replace("<""&nsp;"$nachricht);
                                    
            $nachricht str_replace(">""&nbsp;"$nachricht);
                                    
            $nachricht str_replace("\r\n""<br />;"$nachricht);
                                   
                                    
            $name str_replace("ä""&auml;"$name);
                                    
            $name str_replace("Ä""&Auml;"$name);
                                    
            $name str_replace("ö""&ouml;"$name);
                                    
            $name str_replace("Ö""&Ouml;"$name);
                                    
            $name str_replace("ü""&uuml;"$name);
                                    
            $name str_replace("Ü""&Uuml;"$name);
                                    
            $name str_replace("ß""&szlig;"$name);
                                    
            $name str_replace("<""&nsp;"$name);
                                    
            $name str_replace(">""&nbsp;"$name); 
            1. Schleifen! oder noch besser
            2. str_replace akzeptiert arrays als Parameter, deine 20 Zeilen sind überflüssig.
            3. Am Besten: Konsequent mit einem Zeichensatz arbeiten, dann brauchst du aus deiner Liternei nur 3 Zeichen austauschen, statt 20, und dafür gibt es dann sogar noch eine passende Funktion, die alle Eventualitäten abdeckt.
            PHP-Code:
                                   
                                    $eintrag 
            "INSERT INTO gaestebuch
                                    (id, name, mail, nachricht, datum)
                                   
                                    VALUES
                                    ('
            $id', '$name', '$mail', '$nachricht', '$datum')"
            Setze id auf autoincrement und lass die Datenbank die IDs zuweisen.

            Außerdem, Sicherheitshinweis, dein Code ist anfällig für SQL-Injections
            PHP-Code:
                                    $eintragen mysql_query($eintrag);
                                   
                                    if(
            $eintragen true) { 
            Nein.. Du willst "=== true" oder "!==false". So wie sie da steht wird deine Bedingung immer erfüllt sein, selbst wenn deine Datenbank dir den Skynet-Einsatzbefehl statt des erwarteten Ergebnisses zurückgibt.
            PHP-Code:
                                        ?>
                                        <p> Vielen Dank. Ihr Eintrag wurde gespeichert</p>
                                        <p><a href="index.php">Zur&uuml;ck</a></p>
                                        <?php
                                       
                                    
            } else {
                                        echo 
            "Fehler im System. Eintrag konnte nicht gespeichert werden. Bitte versuchen Sie es sp&auml;ter erneut.";
                                    }
                                   
                                   
                                    
            mysql_close($verbindung);
                               
                               
                                }
                           
                       
                        
            ?>
            </body>
            </html>
            Zitat von nikosch
            Naja, anscheinend spricht die Steckdose kein HTTP. LOL

            Kommentar


            • #7
              Und noch ein Nachtrag:
              mysql_* ist inzwischen veraltet und wird ab der nächsten Version nicht mehr verfügbar sein.
              Ich empfehle den Umstieg auf PDO (http://www.php.net/manual/de/book.pdo.php)

              LG
              https://github.com/Ma27
              Javascript Logic is funny:
              [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

              Kommentar

              Lädt...
              X