Sven V.: parse error, unexpected $

Hallio

ich schreibe grad an einem kleinen Script was 4 Werte in eine Mysql Tabelle speichern soll!

Aber nun bekomme ich einen parse error, unexpected $ in der letzten Zeile des Dokuments also bei </html> ich finde den Fehler leider nicht! ./

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
<head>  
<title>Test</title>  
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
</head>  
  
<body>  
<h3>Daten für die Boxen eintagen</h3>  
  
<?php  
 //Abfrage ob das Formular abgeschickt wurde  
 if($_POST['flag']==1)  
 {  
 //evtl. Leerstellen entfernen  
 $_POST['ueber']=trim($_POST['ueber']);  
 $_POST['disc']=trim($_POST['disc']);  
 $_POST['preis']=trim($_POST['preis']);  
 $_POST['url']=trim($_POST['url']);  
 //evtl. HTML-Code entfernen  
 $_POST['ueber']=strip_tags($_POST['ueber']);  
 $_POST['disc']=strip_tags($_POST['disc']);  
 $_POST['preis']=strip_tags($_POST['preis']);  
 $_POST['url']=strip_tags($_POST['url']);  
 //Testen ob Felder ausgefüllt sind  
 if(!$_POST['ueber']){$fehler="Bitte die Überschrift eingeben: <br />";}  
 if(!$_POST['disc']){$fehler.="Bitte die Beschreibung eingeben: <br />";}  
 if(!$_POST['preis']){$fehler.="Bitte den Preis eingeben: <br />";}  
 if(!$_POST['url']){$fehler.="Bitte die URL eingeben: <br />";}  
  
 //Wenn Fehler gib ihn in der Form aus  
 if($fehler)  
 {  
 $fehlertext="<h4>".$fehler."</h4>";  
 unset($_POST['flag']);  
 }  
 else  
 {  
 //SQL String  
 $tabellenname="lm-link1";  
 $sql="INSERT INTO $tabellenname (ueber, disc, preis, url)  
   values ('".$_POST['ueber']."', '".$_POST['disc']."', '".$_POST['preis']."' '".$_POST['url']."', now())";  
 //Verbindung zur Datenbank  
 $link = mysql_connect("localhost", "rysenmsw", "IlC77uS0");  
 mysql_select_db("rysen", $link);  
 mysql_query($sql, $link);  
  
 //Ausgabe Fertig  
 $fehlertext="<h4>Daten gespeichert. <a href=\"index.php\">weiter...</a></h4>";  
 echo $fehlertext;  
 }  
 if(!$_POST['flag'])  
 {  
 ?>  
  
 <!--Das Formular-->  
 <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" />  
  <input type="hidden" name="flag" value="1" />  
  <p>Die &Uuml;berschrift<br>  
  <input type="text" name="ueber" value="<? echo $_POST['ueber']; ?>"></p>  
  <p>Die Beschreibung<br>  
  <input type="text" name="disc" value="<? echo $_POST['disc']; ?>"></p>  
  <p>Der Preis<br>  
  <input type="text" name="preis" value="<? echo $_POST['preis']; ?>"></p>  
  <p>Die URL<br>  
  <input type="text" name="url" value="<? echo $_POST['url']; ?>"></p>  
  <input type="submit" value="Absende" />  
 </form>  
 <?  
 }  
 ?>  
</body>  
</html>  

Hoffe mir kann jemand einen Tipp geben

Grüße

  1. Hallo,

    Du hast zu wenig Klammern geschlossen. Die Klammern von der ersten if Abfrage bleibt offen.

    Gruß,
      Click

    --
    $browser = new BrowserIdentifier();
    if($browser->shortcut == "ie") {
      do_unordinary_things_with_ie();
    }
    else {
    1. Vielen Dank diese Klammer habe ich wohl übersehen :(

      habe da noch zwei kleine Probleme, undzwar funktioniert irgentwie die Abfrage der Ausgefüllten Felder nicht, es wird kein Fehlertext angezeigt finde den Fehler aber absolut nicht. Und ich möchte das man über eine Auswahliste auswählen kann in welche Tabelle der DB geschrieben wird! Struktur der Tabellen bleibt gleich nur der Name wechselt!

      Habe gedacht das ergebnis von der der Auswhliste in eine Variable zu speichern und die bei $tabellennamen zu setzten was auch so seien wird aber mein Weg geht mal garnicht, die Liste wird nicht mehr angezeigt!

        
      <?php  
       //Abfrage ob das Formular abgeschickt wurde  
       if($_POST['flag']==1)  
       {  
       //evtl. Leerstellen entfernen  
       $_POST['ueber']=trim($_POST['ueber']);  
       $_POST['disc']=trim($_POST['disc']);  
       $_POST['preis']=trim($_POST['preis']);  
       $_POST['url']=trim($_POST['url']);  
       //evtl. HTML-Code entfernen  
       $_POST['ueber']=strip_tags($_POST['ueber']);  
       $_POST['disc']=strip_tags($_POST['disc']);  
       $_POST['preis']=strip_tags($_POST['preis']);  
       $_POST['url']=strip_tags($_POST['url']);  
       //Testen ob Felder ausgefüllt sind  
       if(!$_POST['ueber']){$fehler="Bitte die Überschrift eingeben: <br />";}  
       if(!$_POST['disc']){$fehler.="Bitte die Beschreibung eingeben: <br />";}  
       if(!$_POST['preis']){$fehler.="Bitte den Preis eingeben: <br />";}  
       if(!$_POST['url']){$fehler.="Bitte die URL eingeben: <br />";}  
        
       //Wenn Fehler gib ihn in der Form aus  
       if($fehler)  
       {  
       $meldung="<h4>".$fehler."</h4>";  
       unset($_POST['flag']);  
       }  
       else  
       {  
       //SQL String  
       $tabellenname="$t_name";  
       $sql="INSERT INTO $tabellenname (ueber, disc, preis, url)  
         values ('".$_POST['ueber']."', '".$_POST['disc']."', '".$_POST['preis']."' '".$_POST['url']."', now())";  
       //Verbindung zur Datenbank  
       $link = mysql_connect("localhost", "Loginxxx", "PW...");  
       mysql_select_db("DB", $link);  
       mysql_query($sql, $link);  
        
       //Ausgabe Fertig  
       $meldung="<h4>Daten gespeichert. <a href=\"index.php\">weiter...</a></h4>";  
       echo $meldung;  
       }  
       if(!$_POST['flag'])  
       {}}  
       ?>  
        
       <!--Das Formular-->  
       <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" />  
        <input type="hidden" name="flag" value="1" />  
        <p>Auswahl der Tabelle<br>  
        <? $t_name="<select name='tabelle'>  
        <option value='r_lm_eins'>Last-Minute 1</option>  
        <option value='r_lm_zwei'>Last-Minute 2</option>  
       </select>"; ?></p>  
        <p>Die &Uuml;berschrift<br>  
        <input type="text" name="ueber" value="<? echo $_POST['ueber']; ?>"></p>  
        <p>Die Beschreibung<br>  
        <input type="text" name="disc" value="<? echo $_POST['disc']; ?>"></p>  
        <p>Der Preis<br>  
        <input type="text" name="preis" value="<? echo $_POST['preis']; ?>"></p>  
        <p>Die URL<br>  
        <input type="text" name="url" value="<? echo $_POST['url']; ?>"></p>  
        <input type="submit" value="Absenden" />  
       </form>  
      
      

      Grüße

      1. Hallo,

        habe da noch zwei kleine Probleme, undzwar funktioniert irgentwie die Abfrage der Ausgefüllten Felder nicht, es wird kein Fehlertext angezeigt

        mach mal am Anfang des Scripts error_reporting("E_ALL"); und guck ob dann ein Fehler ausgegeben wird

        Gruß,
          Click

        --
        ~~~php $browser = new BrowserIdentifier();
        if($browser->shortcut == "ie") {
          do_unordinary_things_with_ie();
        }
        else {
        ~~~
        1. Thx für den Tipp

          Es kommt ein Fehler aber nur bei error_reporting(E_ALL); nicht wie du es geschrieben hast error_reporting("E_ALL");

          Notice: Undefined index: flag in eintragen.php on line 14

          kann den Fehler leider nicht deuten :/

          Grüße

          1. hi,

            Notice: Undefined index: flag in eintragen.php on line 14

            kann den Fehler leider nicht deuten :/

            Du versuchst, auf etwas lesend zuzugreifen, was gar nicht da ist:

            //Abfrage ob das Formular abgeschickt wurde
            if($_POST['flag']==1)

            Nutze isset() oder empty() stattdessen.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Dann scheint das Buch das ich zum lernen nutze echt Rotz zu sein schade!

              Gruß

              1. echo $begrüßung;

                Dann scheint das Buch das ich zum lernen nutze echt Rotz zu sein schade!

                Vermutlich. Es bringt dir ja anscheinend noch nicht mal bei, wie man Fehler sucht.
                Wenn etwas anderes rauskommt, als man haben will, sind meist die Inhalte der beteiligten Variablen abweichend von den eigenen Vorstellungen. Kontrollausgaben mit echo, print, print_r() und var_dump() helfen bei der Aufklärung des Fehlerfalls. Und nicht nur Variablen, auch die Ergebnisse von Funktionen und Ausdrücken kann man sich ausgeben lassen.

                echo "$verabschiedung $name";

  2. Hi!

    Aber nun bekomme ich einen parse error, unexpected $ in der letzten Zeile des Dokuments

    Den Fehler hat Click ja bereits erkannt.
    Mit Hilfe eines guten Editors hättest du den Fehler allerdings auch selbst entdecken können.
    Ich weiß ja nicht, womit du arbeitest, aber meine IDE zeigt mir nicht geschlossene Klammern an bzw. könnte diese auch automatisch schließen.
    Auch am Highlighting würde es mir sofort auffallen, wenn eine Klammer fehlt.

    Ich wollte aber noch mal schnell eine Bemerkung zu deinem Code machen:
    Poste nie, nie, nie deine Zugangsdaten in irgendeinem Forum.

    Man kann die Adresse des MySQL-Servers glücklicherweise zwar nicht sehen, aber ich schätze mal, daß ich diesen eventuell rausfinden könnte, wenn ich eine Suchmaschine befragen würde.

    Außerdem solltest du dich mal über SQL-Injections schlau machen.
    Dein Code ist nicht ausreichend gesichert.
    Du solltest alle Daten, die von außen an dein Script übergeben werden, immer als "böse" ansehen und ggf. bereinigen.
    In jedem Fall solltest du eventuell geposteten SQL-Code mittels mysql_real_escape_string() unschädlich machen, bevor du den Krams in deine Abfragen einbaust.

    Schöner Gruß,
    rob

    1. Hallo,

      Den Fehler hat Click ja bereits erkannt.
      Mit Hilfe eines guten Editors hättest du den Fehler allerdings auch selbst entdecken können.

      Oder einfach den Quelltext vernünftig einrücken...

      Gruß,
        Click
      --

        
      $browser = new BrowserIdentifier();  
      if($browser->shortcut == "ie") {  
        do_unordinary_things_with_ie();  
      }  
      else {