Avatar billede jkn83 Praktikant
07. august 2005 - 19:09 Der er 21 kommentarer og
1 løsning

parse error, unexpected $

Ok... det er ved at irritere mig pænt meget at jeg ikke kan se den fejl den kommer med. Jeg har et nyheds system som ikke kan add edit eller delete nyheder fordi den kommer med en fejl i en fil. Den har været i flere filer hvor jeg har fjernet linier for at løse gåden, men vil høre om der ikke er en anden måde at ændre det på...

fejlen den kommer med lyder sådan her:
Parse error: parse error, unexpected $ in /home/cvroms/public_html/beta/news/newsprocess.php on line 61

Det jeg ikke kan forstå er at line 61 i den angivne fil ser sådan ud:
?>

Den er også kommet med en fejl omkring header allready sent by... osv. Det er først efter jeg har addet nye scripts til siden. Såå, kunne godt tænke mig at vide hvorfor ?

Er der en enkel løsning på det eller er det en generel fejl den lukker ud ?
Avatar billede nielle Nybegynder
07. august 2005 - 19:12 #1
Så er det fordi at $-teget mangler længere oppe i koden.
Avatar billede nielle Nybegynder
07. august 2005 - 19:13 #2
Prøv at poste din kode så vi har noget mere at arbejde med.
Avatar billede Slettet bruger
07. august 2005 - 19:13 #3
1. Det kan ikke passe, at linie 61 kun indeholder "?>" i newsprocess.php.

2. De nye scripts du har tilføjet, kræver åbenbart, at de skal kunne sætte headers (cookies/redirecte/..), hvorfor det ikke virker, når du sandsynligvis allerede har udsendt nogle informationer til brugerens browser.
Avatar billede jaw Nybegynder
07. august 2005 - 19:13 #4
Din første fejl kan skyldes flere ting. Måske kan fejlen ligge på linie 60, eller også kan den f.eks. skyldes at du mangler en } et sted eller lign. Gennemgå din kode for om antallet passer overens.

Dit andet problem skyldes, at du har et html-output inden du laver dine headers. Når du arbejder med headers, må der intet html-output være inden det bliver sendt. Det gælder også blanke linier, mellemrum etc.
Avatar billede Slettet bruger
07. august 2005 - 19:13 #5
nielle det er vel ikke fordi $ mangler, det er da fordi der er et $ for meget på linie 61 (eller deromkring).
Avatar billede nielle Nybegynder
07. august 2005 - 19:16 #6
wicez> Du har ret - den gik lidt for hurtig der. Men sagen er at der er en fejl et eller andet sted tidligere i koden. Parseren forsøger at finde ud af hvad der er galt, og først når den når slutningen må den give op - og så kommer fejlbeskeden.
Avatar billede jkn83 Praktikant
07. august 2005 - 19:28 #7
ok... koden kommer her, sidste linie er linie 61...

<div class="title">Tilføjelse af nyhed</div>
<?php
session_start();

include("../config.php");

$db = mysql_connect($dhost,$dusername,$dpwd);
mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");

$sql = mysql_query("SELECT * FROM users WHERE username = '$_COOKIE[username]'") OR DIE("Der er en MySQL fejl.");
$row = mysql_fetch_array($sql);

if($_COOKIE[username] AND $_COOKIE[password])
{

  include("../config.php");
  $action = $_REQUEST['action'];
  $id = $_REQUEST['id'];

  $title = $_POST['title'];
  $author = $_POST['author'];
  $news = $_POST['news'];
  $news = nl2br($news);
  $ip = $_POST['ip'];
  $date = date($news_date);

  if ($action == "post") {
    if ($_POST['submit_news']) {
      if ($title == "")  { echo "<strong>FEJL:</strong> Du mangler overskriften. <a href=\"index.php?page=postnews\">Fortsæt</a>."; }
      else if ($author == "") { echo "<strong>FEJL:</strong> Hvem er den skrevet af? <a href=\"index.php?page=postnews\">Fortsæt</a>."; }
      else if ($news == "")  { echo "<strong>FEJL:</strong> Du mangler selve nyheden. <a href=\"index.php?page=postnews\">Fortsæt</a>."; }
      else {
        $db = mysql_connect($dhost,$dusername,$dpwd);
        mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
        mysql_query("INSERT INTO news(author,title,news,date,ip) VALUES('$author','$title','$news','$date','$ip')");
        echo "<strong>Nyheden er tilføjet!</strong> <a href=\"index.php\">Fortsæt</a>.";
        mysql_close($db);
      }
    }
  }
  else if ($action == "modify") {
    if ($_POST['submit_news']) {
      $db = mysql_connect($dhost,$dusername,$dpwd);
      mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
      mysql_query("UPDATE news SET title='$title' WHERE id='$id'");
      mysql_query("UPDATE news SET author='$author' WHERE id='$id'");
      mysql_query("UPDATE news SET news='$news' WHERE id='$id'");
      echo "<strong>Nyheden er opdateret!</strong> <a href=\"index.php\">Fortsæt</a>.";
      mysql_close($db);
    }
  }
  else if ($action == "del") {
    $db = mysql_connect($dhost,$dusername,$dpwd);
    mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
    mysql_query("DELETE FROM news WHERE id='$id'");
    echo "<strong>Nyheden er slettet!</strong> <a href=\"index.php\">Fortsæt</a>.";
    mysql_close($db);
  }
  else{ echo "<a href=\"index.php\">Fortsæt</a>. $action"; }

?>
Avatar billede Slettet bruger
07. august 2005 - 19:31 #8
Din session_start skal flyttes til toppen af dit dokument.
Avatar billede Slettet bruger
07. august 2005 - 19:31 #9
før _alt_ andet.!
Avatar billede jkn83 Praktikant
07. august 2005 - 19:32 #10
ændrede intet...
Avatar billede nielle Nybegynder
07. august 2005 - 19:34 #11
Du manglede et par tuborg-parenteser - 3 stk. helt eksakt. Værsgod:

ok... koden kommer her, sidste linie er linie 61...

<div class="title">Tilføjelse af nyhed</div>
<?php
session_start();

include("../config.php");

$db = mysql_connect($dhost, $dusername, $dpwd);
mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");

$sql = mysql_query("SELECT * FROM users WHERE username = '$_COOKIE[username]'") OR DIE("Der er en MySQL fejl.");
$row = mysql_fetch_array($sql);

if ($_COOKIE[username] AND $_COOKIE[password])
{
    include("../config.php");
    $action = $_REQUEST['action'];
    $id = $_REQUEST['id'];

    $title = $_POST['title'];
    $author = $_POST['author'];
    $news = $_POST['news'];
    $news = nl2br($news);
    $ip = $_POST['ip'];
    $date = date($news_date);

    if ($action == "post")
    {
        if ($_POST['submit_news'])
        {
            if ($title == "")
                echo "<strong>FEJL:</strong> Du mangler overskriften. <a href=\"index.php?page=postnews\">Fortsæt</a>.";
            else if ($author == "")
                echo "<strong>FEJL:</strong> Hvem er den skrevet af? <a href=\"index.php?page=postnews\">Fortsæt</a>.";
            else if ($news == "")
                echo "<strong>FEJL:</strong> Du mangler selve nyheden. <a href=\"index.php?page=postnews\">Fortsæt</a>.";
            else
            {
                $db = mysql_connect($dhost, $dusername, $dpwd);
                mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
                mysql_query("INSERT INTO news(author,title,news,date,ip) VALUES('$author','$title','$news','$date','$ip')");
                echo "<strong>Nyheden er tilføjet!</strong> <a href=\"index.php\">Fortsæt</a>.";
                mysql_close($db);
            }
        }
    }
    else if ($action == "modify")
    {
        if ($_POST['submit_news'])
        {
            $db = mysql_connect($dhost,$dusername,$dpwd);
            mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
            mysql_query("UPDATE news SET title='$title' WHERE id='$id'");
            mysql_query("UPDATE news SET author='$author' WHERE id='$id'");
            mysql_query("UPDATE news SET news='$news' WHERE id='$id'");
            echo "<strong>Nyheden er opdateret!</strong> <a href=\"index.php\">Fortsæt</a>.";
            mysql_close($db);
        }
    }
    else if ($action == "del")
    {
        $db = mysql_connect($dhost,$dusername,$dpwd);
        mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
        mysql_query("DELETE FROM news WHERE id='$id'");
        echo "<strong>Nyheden er slettet!</strong> <a href=\"index.php\">Fortsæt</a>.";
        mysql_close($db);
    }
    else
    {
        echo "<a href=\"index.php\">Fortsæt</a>. $action";
    }
}
?>
Avatar billede nielle Nybegynder
07. august 2005 - 19:38 #12
... og så var der jo lige det med den session_start:

<?php
session_start();
?>
<div class="title">Tilføjelse af nyhed</div>
<?php
include("../config.php");

$db = mysql_connect($dhost, $dusername, $dpwd);
mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");

$sql = mysql_query("SELECT * FROM users WHERE username = '$_COOKIE[username]'") OR DIE("Der er en MySQL fejl.");
$row = mysql_fetch_array($sql);

if ($_COOKIE[username] AND $_COOKIE[password])
{
    include("../config.php");
    $action = $_REQUEST['action'];
    $id = $_REQUEST['id'];

    $title = $_POST['title'];
    $author = $_POST['author'];
    $news = $_POST['news'];
    $news = nl2br($news);
    $ip = $_POST['ip'];
    $date = date($news_date);

    if ($action == "post")
    {
        if ($_POST['submit_news'])
        {
            if ($title == "")
                echo "<strong>FEJL:</strong> Du mangler overskriften. <a href=\"index.php?page=postnews\">Fortsæt</a>.";
            else if ($author == "")
                echo "<strong>FEJL:</strong> Hvem er den skrevet af? <a href=\"index.php?page=postnews\">Fortsæt</a>.";
            else if ($news == "")
                echo "<strong>FEJL:</strong> Du mangler selve nyheden. <a href=\"index.php?page=postnews\">Fortsæt</a>.";
            else
            {
                $db = mysql_connect($dhost, $dusername, $dpwd);
                mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
                mysql_query("INSERT INTO news(author,title,news,date,ip) VALUES('$author','$title','$news','$date','$ip')");
                echo "<strong>Nyheden er tilføjet!</strong> <a href=\"index.php\">Fortsæt</a>.";
                mysql_close($db);
            }
        }
    }
    else if ($action == "modify")
    {
        if ($_POST['submit_news'])
        {
            $db = mysql_connect($dhost,$dusername,$dpwd);
            mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
            mysql_query("UPDATE news SET title='$title' WHERE id='$id'");
            mysql_query("UPDATE news SET author='$author' WHERE id='$id'");
            mysql_query("UPDATE news SET news='$news' WHERE id='$id'");
            echo "<strong>Nyheden er opdateret!</strong> <a href=\"index.php\">Fortsæt</a>.";
            mysql_close($db);
        }
    }
    else if ($action == "del")
    {
        $db = mysql_connect($dhost,$dusername,$dpwd);
        mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
        mysql_query("DELETE FROM news WHERE id='$id'");
        echo "<strong>Nyheden er slettet!</strong> <a href=\"index.php\">Fortsæt</a>.";
        mysql_close($db);
    }
    else
    {
        echo "<a href=\"index.php\">Fortsæt</a>. $action";
    }
}
?>
Avatar billede jkn83 Praktikant
07. august 2005 - 19:41 #13
VILDT nice... nu virker det :) hvaa, hvordan fandt du lige ud af det så hurtigt ? :D
Avatar billede jkn83 Praktikant
07. august 2005 - 19:41 #14
forresten nielle kan ikke helt få de der smilies til at fungere... men skriver lige senere i den anden post der omkring det... skal lige forsøge lidt mere med det. Smider du et svar ?
Avatar billede nielle Nybegynder
07. august 2005 - 19:43 #15
... iøvrigt kan dine 3 UPDATE sætninger slås sammen til 1:

mysql_query("UPDATE news SET title='$title', author='$author', news='$news' WHERE id='$id'");
Avatar billede jkn83 Praktikant
07. august 2005 - 19:46 #16
det tror jeg gerne :D men det har taget mig et godt stykke tid at få det til at fungere nogen lunde sammen, så nu vil jeg ikke rode mere ved denne fil :D Smider du svar ?
Avatar billede Slettet bruger
07. august 2005 - 19:46 #17
Prøv dette:

<?php
session_start();

echo "<div class=\"title\">Tilføjelse af nyhed</div>";

require_once("../config.php");

$db = mysql_connect($dhost, $dusername, $dpwd);
mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");

$sql = mysql_query("SELECT * FROM users WHERE username = '". $_COOKIE['username'] ."'") or die("Der er en MySQL fejl.");
$row = mysql_fetch_array($sql);

if(!empty($_COOKIE['username']) AND !empty($_COOKIE['password']))
    {
    include("../config.php");
    $action = $_REQUEST['action'];
    $id = $_REQUEST['id'];

    $title = $_POST['title'];
    $author = $_POST['author'];
    $news = $_POST['news'];
    $news = nl2br($news);
    $ip = $_POST['ip'];
    $date = date($news_date);

    if($action == "post")
        {
        if ($_POST['submit_news'])
            {
            if($title == "")         echo "<strong>FEJL:</strong> Du mangler overskriften. <a href=\"index.php?page=postnews\">Fortsæt</a>.";
            elseif($author == "")  echo "<strong>FEJL:</strong> Hvem er den skrevet af? <a href=\"index.php?page=postnews\">Fortsæt</a>.";
            elseif ($news == "")  echo "<strong>FEJL:</strong> Du mangler selve nyheden. <a href=\"index.php?page=postnews\">Fortsæt</a>.";
            else
                {
                mysql_query("INSERT INTO news(author,title,news,date,ip) VALUES('". $author ."','". $title ."','". $news ."','". $date ."','". $ip ."')");
                echo "<strong>Nyheden er tilføjet!</strong> <a href=\"index.php\">Fortsæt</a>.";
                }
              }
        }
    elseif ($action == "modify")
        {
        if(isset($_POST['submit_news']))
            {
            mysql_query("UPDATE news SET title='". $title ."', author='". $author ."', news='". $news ."' WHERE id='". $id ."'");
            echo "<strong>Nyheden er opdateret!</strong> <a href=\"index.php\">Fortsæt</a>.";
            }
        }
    elseif ($action == "del")
        {
        mysql_query("DELETE FROM news WHERE id='". $id ."'");
        echo "<strong>Nyheden er slettet!</strong> <a href=\"index.php\">Fortsæt</a>.";
        }
    else
        {
        echo "<a href=\"index.php\">Fortsæt</a>. $action";
        }
    }           
mysql_close($db);
?>
Avatar billede nielle Nybegynder
07. august 2005 - 19:46 #18
Hvordan jeg fandt fejlen?

Ved at løbe dit script igennem og systematrisk konvertere alle konstruktioner af denne form:

if (blah blah) {
    ...
}

- til:

if (blah blah)
{
    ...
}

På den måde er det 1000 x nemmere at se hvordan {}-parenteserne er parret. Og så springer det meget nemmere i øjnene hvis der mangler noget et eller andet sted.
Avatar billede nielle Nybegynder
07. august 2005 - 19:47 #19
... og et svar. :^)
Avatar billede jkn83 Praktikant
07. august 2005 - 19:51 #20
testede lige hurtigt din også wicez... Tror ikke det er videre godt at den lukker databasen når du kører hele control panelet på det :D det resulterede hvert fald i at jeg ikke kunne edit en nyhed, da den ikke kunne etablere forbindelse med databasen...
Avatar billede jkn83 Praktikant
07. august 2005 - 19:52 #21
smider nok nogle flere "gåder" fra min side af... som i kan race jeres svar på :) vil have den side op at køre i aften...
Avatar billede Slettet bruger
07. august 2005 - 21:09 #22
Jeg forstår ikke hvad du mener, men det er bestemt en bedre idé at oprette forbindelse til databasen i toppen af sit script, og lukke den i bunden (selvom det ikke er nødvendigt at lukke den, da den alligevel lukkes efter scriptet er udført), end at oprette en forbindelse for hver enkelt forespørgsel, for derefter at lukke den igen efter hver af disse.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester