Avatar billede super-mann Juniormester
29. december 2006 - 19:12 Der er 12 kommentarer og
1 løsning

fejl ved formular til MySQL

hej eksperter...

Jeg har lavet en side/formular som skal kunne gemme noget i min MySQL database. Desværre kommer jeg ikke så langt. Bare ved indlæsningen af news.add.php får jeg følgende fejl:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/local/psa/home/vhosts/domæne.dk/subdomains/server1/httpdocs/modul/news.add.php on line 5

Mit script ser således ud:
<?php
include('securitycenter/inc.config.php');

if ($_POST['referer'] == 'news.add') {
        mysql_query("insert into news values ('','".$_POST['ip']."',now(),'".$_POST['author']."'.$_POST['title']."'.$_POST['synopsis']."'.$_POST['text']."'.$_POST['image']."'.$_POST['category']."'.$_POST['private']."')") or die(mysql_error());
        header("Location: ../news.php');
    }
}
?>

<html>

<head>
    <title>Ny nyhed</title>
</head>


<body>

<h1>Opret nyhed</h1>

<form method="post" action="news.add.php">
<input type="hidden" name="referer" value="news.add">
<input type="hidden" name="ip" value="<?php print $_SERVER['REMOTE_ADDR']; ?>">

<table border="0" width="100%">
  <tr>
    <td width="8%">author</td>
    <td width="1%">:</td>
    <td width="91%"><input type="text" name="author" style="width: 211; height: 23" size="20">
    </td>
  </tr>
  <tr>
    <td width="8%">title</td>
    <td width="1%">:</td>
    <td width="91%"><input type="text" name="title" style="width: 211; height: 23" size="20"></td>
  </tr>
  <tr>
    <td width="8%" vAlign="top">synopsis</td>
    <td width="1%" vAlign="top">:</td>
    <td width="91%"><textarea rows="3" name="synopsis" cols="43"></textarea></td>
  </tr>
  <tr>
    <td width="8%" vAlign="top">text</td>
    <td width="1%" vAlign="top">:</td>
    <td width="91%"><textarea rows="5" name="text" cols="43"></textarea>
    </td>
  </tr>
  <tr>
    <td width="8%" vAlign="top">category</td>
    <td width="1%" vAlign="top">:</td>
    <td width="91%"><input type="text" name="category" style="width: 211; height: 23" size="20"></td>
  </tr>
  <tr>
    <td width="8%" vAlign="top">private</td>
    <td width="1%" vAlign="top">:</td>
    <td width="91%"><input type="checkbox" name="C1" value="ON"> (bemærk: ved tilvalg kan nyheden kun vises, for brugere som er logget ind)</td>
  </tr>
  <tr>
    <td width="8%" vAlign="top">&nbsp;</td>
    <td width="1%" vAlign="top"></td>
    <td width="91%">

    </td>
  </tr>
  <tr>
    <td width="8%" vAlign="top"></td>
    <td width="1%" vAlign="top"></td>
    <td width="91%">

<input type="submit" value="Send">
<input type="reset" value="Slet alt" name="B1"></td>
  </tr>
</table>

</form>


</body>
</html>
Avatar billede super-mann Juniormester
29. december 2006 - 19:22 #1
Jeg har ligeledes prøvet nedenstående news.add.php. Her får jeg en fejl i min sidste linie når jeg prøver at afvikle den kode (bruger bogen "Start på PHP, fra IDG").

<?php
include('securitycenter/inc.config.php');

if ($_POST['referer'] == 'news.add') {
mysql_query("INSERT INTO news (ip, date, author, title, synopsis, image, category, private) VALUES ('$ip', '$date', '$author', '$title', '$synopsis', '$image', '$category', '$private')");
?>

<html>

<head>
    <title>Ny nyhed</title>
</head>


<body>

<h1>Opret nyhed</h1>

<form method="post" action="news.add.php">
<input type="hidden" name="referer" value="news.add">
<input type="hidden" name="ip" value="<?php print $_SERVER['REMOTE_ADDR']; ?>">

<table border="0" width="100%">
  <tr>
    <td width="8%">author</td>
    <td width="1%">:</td>
    <td width="91%"><input type="text" name="author" style="width: 211; height: 23" size="20">
    </td>
  </tr>
  <tr>
    <td width="8%">title</td>
    <td width="1%">:</td>
    <td width="91%"><input type="text" name="title" style="width: 211; height: 23" size="20"></td>
  </tr>
  <tr>
    <td width="8%" vAlign="top">synopsis</td>
    <td width="1%" vAlign="top">:</td>
    <td width="91%"><textarea rows="3" name="synopsis" cols="43"></textarea></td>
  </tr>
  <tr>
    <td width="8%" vAlign="top">text</td>
    <td width="1%" vAlign="top">:</td>
    <td width="91%"><textarea rows="5" name="text" cols="43"></textarea>
    </td>
  </tr>
  <tr>
    <td width="8%" vAlign="top">category</td>
    <td width="1%" vAlign="top">:</td>
    <td width="91%"><input type="text" name="category" style="width: 211; height: 23" size="20"></td>
  </tr>
  <tr>
    <td width="8%" vAlign="top">private</td>
    <td width="1%" vAlign="top">:</td>
    <td width="91%"><input type="checkbox" name="C1" value="ON"> (bemærk: ved tilvalg kan nyheden kun vises, for brugere som er logget ind)</td>
  </tr>
  <tr>
    <td width="8%" vAlign="top">&nbsp;</td>
    <td width="1%" vAlign="top"></td>
    <td width="91%">

    </td>
  </tr>
  <tr>
    <td width="8%" vAlign="top"></td>
    <td width="1%" vAlign="top"></td>
    <td width="91%">

<input type="submit" value="Send">
<input type="reset" value="Slet alt" name="B1"></td>
  </tr>
</table>

</form>


</body>
</html>
Avatar billede erikjacobsen Ekspert
29. december 2006 - 20:08 #2
I nummer to mangler du en: }
Avatar billede super-mann Juniormester
31. december 2006 - 00:51 #3
erikjacobsen --> Det hjalp da på problemet, nu kommer der ting ind i databasen men nogle ting er stadig forkerte.

F.eks. er datofeltet kun med nuller: 0000-00-00 00:00:00 (her skulle både tid og dato gerne vises.
Avatar billede erikjacobsen Ekspert
31. december 2006 - 00:55 #4
Der kan være flere ting galt.
1) Hvis hæftet du bruger anbefaler dig at skrive $date i stedet for $_POST['date'], så har det kun sin berettigelse som optændingspapir til brændeovnen.
2) Hvis du skriver datoen i feltet på den måde som det skal stå i DATETIME-feltet i tabellen, så bør det komme ind som sådan. Hvad skriver du?
Avatar billede super-mann Juniormester
31. december 2006 - 00:57 #5
Bogen anbefaler bare at skrive $date i stedet for det andet. Men jeg skal måske bruge POST helst?
Avatar billede super-mann Juniormester
31. december 2006 - 01:00 #6
if ($_POST['referer'] == 'news.add') {
        mysql_query("insert into news values ('','".$_POST['ip']."',now(),'".$_POST['author']."'.$_POST['title']."'.$_POST['synopsis']."'.$_POST['text']."'.$_POST['image']."'.$_POST['category']."'.$_POST['private']."')") or die(mysql_error());
        header("Location: ../news.php');
    }
}
?>

Prøver lige med denne her såh.
Avatar billede super-mann Juniormester
31. december 2006 - 01:02 #7
Så får jeg denne fejl:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/local/psa/home/vhosts/syngre.dk/subdomains/server1/httpdocs/modul/news.add.php on line 5
Avatar billede erikjacobsen Ekspert
31. december 2006 - 01:24 #8
Ja, der er kludder med strofferne. Du kan jo fx

$ip = $_POST['ip'];
$author = $_POST['author'];
$title = $_POST['title'];
...

mysql_query("insert into news values ('','$ip',now(),'$author','$title'....)") or ...

Hvis hæftet siger du skal bruge $date, så er det alt for gammelt, og skal smides ud. Ik'?
Avatar billede windcape Praktikant
31. december 2006 - 01:26 #9
Synes der mangler noget info omkring at koden er ekstrem fuld af sikkerhedsfejl, mangler escaping af data , så specialtegn ville stadig ikke virke, og laver en helt masse E_NOTICE errors på en ordenlig opsat php :-)
Avatar billede super-mann Juniormester
31. december 2006 - 01:27 #10
Hæftet kan jeg bruge som optæning i morgen, når der skal fyrres op :-)

Jeg vil prøve at bruge mysql_query("insert into news values ('','$ip',now(),'$author','$title'....)") or ... som du skriver, og så se om jeg ikke kan få det til at fungere.
Avatar billede super-mann Juniormester
07. januar 2007 - 18:34 #11
erikjacobsen --> Funger nu, hvis du smider et svar kan du få nogle point..
Avatar billede erikjacobsen Ekspert
07. januar 2007 - 19:55 #12
Jeg samler slet ikke på point, tak.
Avatar billede super-mann Juniormester
26. januar 2007 - 21:24 #13
Spørgsmål lukkes iht. 07/01-2007 19:55:27
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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging