Avatar billede Pazia Nybegynder
27. marts 2011 - 21:16 Der er 11 kommentarer

Syntax fejl med nyhedssystem

Godaften folkens,

Har kopieret et nyhedssystem fra Rowl.dk for at afprøve PHP-mulighederne. Men jeg får desværre et par syntax fejl, når jeg forsøger at tilføje en nyhed.

config.php
<?php
mysql_connect("localhost", "root", "") or die(mysql_error()); // Udfylde inputsne med egen data
mysql_select_db("mysql") or die(mysql_error()); // Og det samme gør du her
?>

vis.nyheder.php
<?php

// Vi inkluderer vores config fil, som holder forbindelsen til vores database

include ("config.php");

// Hent al data fra tabellen "news" sortér af ID nyest

      $loadNews = mysql_query("SELECT * FROM news ORDER BY id DESC") or die(mysql_error());


// Men vi skal da lige tjekke, om der overhovedet er oprettet nogle nyheder i vores databse! Det gør vi med mysql_num_rows();

// Vi tæller simpelthen hvor mange data der er indsat, hvis der er 0 data udskriver vi en meddelse

if(mysql_num_rows($loadNews) == 0) {

      echo "Der er ikke blevet tilføjet nogle nyheder.";

// Hvis der er mere end 0 nyheder oprettet et databasen udskriver vi dem alle

} else {

// Ved hjælp af en while() også kaldt "løkke", udskriver vi nyhederne

while($showNews = mysql_fetch_array($loadNews)) {

$nName = stripslashes($showNews["name"]); // Vi opretter en variable for overskriften. stripslashes(); fjerner "/" fra selve overskriften hvis dette skulle være tilfældet

$nAuthor = stripslashes($showNews["author"]); // Vi opretter endnu en variable for forfatteren, og bruger stripslashes();

$nText = nl2br(stripslashes($showNews["text"])); // En til variable! Denne gang for selve nyheden. nl2br(); er en funktion der bruges som linjeskift ved ENTER, istedet for man skal bruge <br /> for hver linjeskift, ret smart ikk"?

$nDate = $showNews["date"]; // Og til sidst en variable for datoen!

echo "<b>".$nName."</b><br />"; // Udskriv overskriften med "fed"

echo "<i>Skrevet af ".$nAuthor.", d. ".$nDate."</i><br />"; // Udskriv forfatter og date med "kursiv"

echo "".$nText.""; // Udskriv selve nyheden

echo "<br /><br />"; // Laver plads til næste nyhed

      } // Lukker vores while()

      } // Lukker vores if();

      // Et link som fører til tilfoj.nyhed.php, hvor der kan oprettes nyheder

      echo "<a href=\"tilfoj.nyhed.php\" title=\"Tilføj nyhed\">Tilføj nyhed</a>";
?>

tilfoj.nyhed.php
<?php
// Vi inkluderer vores config fil, som holder forbindelsen til vores database

include ("config.php"); // Vi laver en variable ud af vores "action". Det gør det hele meget lettere

$action = $_GET["action"]; // Hvis "action" er lig med "submitNews", gør vi klar til at indsætte selve nyheden

if($action == "submitNews") {

$cName = htmlspecialchars(addslashes($_POST["newsName"])); // Vi opretter en variable for overskriften. htmlspecialchars(); gør så der ikke kan bruges HTML i overskrift. addslashes(); sætter / ved " og ", hvis det er tilfældet

$cAuthor = htmlspecialchars(addslashes($_POST["newsAuthor"])); // Vi gør de samme ved forfatter, ligesom vi gjorde ved overskriften

$cText = htmlspecialchars(addslashes($_POST["newsText"])); // Og endnu en gang ved selve nyheden

$cDate = date("d-m/Y"); // Skaffer den nuværende dato og laver en variable af den

// Her bruger vi empty() til at tjekke om et felt er tomt. Læg mærke til at jeg har sat "!" foran. Så nu er det omvendt! Den spørger: "Hvis overskrift, forfatter og text er udfyldt, så indsætter vi i databasen"

if(!empty($cName) && !empty($cAuthor) && !empty($cText)) { // Simpel mysql_query(); hvor vi indsætter nyheden i databasen

mysql_query("INSERT INTO news (name, author, date, text)VALUES("".$cName."", "".$cAuthor."", "".$cDate."", "".$cText."")") or die(mysql_error()); // Jubii! Det lykkedes os at oprette en nyhed. Vi udskriver en besked

echo "<span style="color: green; font-weight: bold;">Nyheden "".$cName."" er blevet tilføjet!</span>";

// Hvis overskrift, forfatter og selve nyheden var tomme udskriver vi en meddelse

} else {

echo "Du skal udfylde alle felter!";

} // Lukker vores if();

// Hvis "action" ikke var lig med "submitNews" udskriver vi html-formularen til at oprettelsen af en nyhed

} else {

// Simpel html-formular som jeg ikke vil bruge tid på at forklare

echo "<form action="?action=submitNews" method="POST">";
echo "<b>Overskrift:</b><br />";
echo "<input type="text" name="newsName"><br />";
echo "<b>Forfatter:</b><br />";
echo "<input type="text" name="newsAuthor"><br />";
echo "<b>Overskrift:</b><br />";
echo "<textarea name="newsText" style="width: 400px; height: 120px;">
Avatar billede Pazia Nybegynder
27. marts 2011 - 21:30 #1
Hele artiklen kan læses/ses på http://www.rowl.dk/Articles/156
Avatar billede erikjacobsen Ekspert
27. marts 2011 - 21:43 #2
Hvilken fejl får du?
Avatar billede erikjacobsen Ekspert
27. marts 2011 - 21:46 #3
Der er i hvert fald et strof-problem i linien:

mysql_query("INSERT INTO news (name, author, date, text)VALUES("".$cName."", "".$cAuthor."", "".$cDate."", "".$cText."")") or die(mysql_error()); // Jubii! Det lykkedes os at oprette en nyhed. Vi udskriver en besked

som nok skal være

mysql_query("INSERT INTO news (name, author, date, text)VALUES('".$cName."', '".$cAuthor."', '".$cDate."', '".$cText."')") or die(mysql_error()); // Jubii! Det lykkedes os at oprette en nyhed. Vi udskriver en besked
Avatar billede Pazia Nybegynder
27. marts 2011 - 21:49 #4
Så snart jeg trykker på linket, Tilføj Nyhed kommer følgende frem på skærmen:

( ! ) Parse error: syntax error, unexpected '"' in tilfoj.nyhed.php on line 30 (Det er en direkte henvisning til nedenstående input i filen:

mysql_query("INSERT INTO news (name, author, date, text)VALUES("".$cName."", "".$cAuthor."", "".$cDate."", "".$cText."")") or die(mysql_error());
Avatar billede Pazia Nybegynder
27. marts 2011 - 21:51 #5
Det virkede med førnævnte, du skrev Erik. Tak for det!

Men nu brokker den sig over følgende linje:

echo "<span style="color: green; font-weight: bold;">Nyheden "".$cName."" er blevet tilføjet!</span>";

( ! ) Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\wamp\www\tilfoj.nyhed.php on line 32
Avatar billede erikjacobsen Ekspert
27. marts 2011 - 21:58 #6
echo "<span style=\"color: green; font-weight: bold;\">Nyheden \"".$cName."\" er blevet tilføjet!</span>";

Det kan jo være et rent teknisk problem med de stroffer, men ellers ville jeg nok anbefale at bruge din tid på andre vejledninger.
Avatar billede Pazia Nybegynder
27. marts 2011 - 22:02 #7
Hej Erik,

Det er måske en god idé. :)

- Kan du eventuelt hjælpe med det "forhåbentlig" sidste problem, som fremkommer med filen?

( ! ) Parse error: syntax error, unexpected '=' in C:\wamp\www\tilfoj.nyhed.php on line 48

echo "<form action="?action=submitNews" method="POST">";
echo "<b>Overskrift:</b><br />";
echo "<input type="text" name="newsName"><br />";
echo "<b>Forfatter:</b><br />";
echo "<input type="text" name="newsAuthor"><br />";
echo "<b>Overskrift:</b><br />";
echo "<textarea name="newsText" style="width: 400px; height: 120px;"></textarea><br />";
echo "<input type="submit" value="OK">";
echo "</form>";


Jeg skal måske bare indsætte stroffer før den "egentlige" HTML-kode starter før den er "ok"?
Avatar billede erikjacobsen Ekspert
27. marts 2011 - 22:07 #8
Tilrettet (formentlig, helt utestet):

echo "<form action=\"?action=submitNews\" method="POST">";
echo "<b>Overskrift:</b><br />";
echo "<input type=\"text\" name=\"newsName\"><br />";
echo "<b>Forfatter:</b><br />";
echo "<input type=\"text\" name=\"newsAuthor\"><br />";
echo "<b>Overskrift:</b><br />";
echo "<textarea name=\"newsText\" style=\"width: 400px; height: 120px;\"></textarea><br />";
echo "<input type=\"submit\" value=\"OK\">";
echo "</form>";

PS: Du kunne vel skrive til dem, og påpege problemet.
Avatar billede erikjacobsen Ekspert
27. marts 2011 - 22:07 #9
Ok, første linie skal være:

echo "<form action=\"?action=submitNews\" method=\"POST\">";
Avatar billede Pazia Nybegynder
27. marts 2011 - 22:15 #10
Har allerede forsøgt at komme i kontakt med udvikleren via mail-kontakt, men har ikke hørt fra ham endnu desværre :(

Så blev det hele rettet til. Ingen syntax fejl, og dog.. :(

( ! ) Parse error: syntax error, unexpected T_ECHO, expecting T_STRING in C:\wamp\www\tilfoj.nyhed.php on line 56

Det er blot en henvisning til echo "</form>"; - Nu forstår jeg simpelthen ingenting.
Avatar billede Pazia Nybegynder
27. marts 2011 - 22:23 #11
Jeg fik selv klaret den. Der er kommet et "\" for meget med. Endnu engang, tusind tak for hjælpen Erik.
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