Avatar billede Slettet bruger
16. august 2008 - 14:05 Der er 71 kommentarer og
2 løsninger

RSS Feed, fejl

Hej Eksperter,

Jeg har prøvet at lave et RSS Feed til min hjemmeside, cykelsporten.dk.

FEJL:

Parse error: syntax error, unexpected T_STRING in /customers/cykelsporten.dk/cykelsporten.dk/httpd.www/rss/news.php on line 5

Kode:
<?php

header("Content-Type: text/xml");
require_once "../mysql.php";
$result3 = mysql_query("SELECT * FROM "artikler ORDER BY time DESC LIMIT 0,10");

echo "<?xml version=\"1.0\" encoding=\"danish\"?>\n\n
  <rss version=\"0.91\">\n\n
  <channel>\n
  <title>CykelSporten.dk</title>\n
  <link>http://cykelsporten.dk</link>\n
  <description>beskrivelse</description>\n";

while ($row=dbarray($result3)) {
  $rsid = intval($row['ID']);
  $rtitle = $row['overskrift'];
  $date = date("H:i:s Y-m-d",$row['time']);
  $description = stripslashes(nl2br($row['tekst']));
  $description = strip_tags($description, "<A><P><BR><BR /><HR>");
  $description = substr($description, 0, 150);

  echo "<item>\n
  <pubDate>".$date."</pubDate>\n
  <title>".htmlspecialchars($rtitle)."</title>\n
  <link>".$base."news.php?readmore=".$rsid."</link>\n
  <description>".htmlspecialchars($description)."</description>\n
  </item>\n\n";
}
echo "</channel>
  </rss>";

?>
Avatar billede mr_bacardi Nybegynder
16. august 2008 - 14:16 #1
Din linie 5 indeholder en " for meget:
$result3 = mysql_query("SELECT * FROM artikler ORDER BY time DESC LIMIT 0,10");

Prøv med det i stedet
Avatar billede mr_bacardi Nybegynder
16. august 2008 - 14:42 #2
Du har ikke defineret funktionen dbarray, mener du muligvis mysql_fetch_assoc ?
Avatar billede erikjacobsen Ekspert
16. august 2008 - 14:43 #3
Hmm, jamen hvorfor bruger du ikke en browser, der viser dig hvad der er i vejen, i stedet for bare at spytte en "virker ikke", som IE sommetider gør. Firefox 3 er et godt bud. ;)

Og problemet er vel at du skal putte din tekst i description ind som CDATA
Avatar billede erikjacobsen Ekspert
16. august 2008 - 14:43 #4
Og: jeg kiggede på cykelsporten.dk/rss.php
Avatar billede erikjacobsen Ekspert
16. august 2008 - 15:00 #5
Ja, men du har også fejl på den jeg brugte, og får samme fejl her - når du har fixet det med PHP.
Avatar billede erikjacobsen Ekspert
16. august 2008 - 15:16 #6
Et RSS feed kan du finde mange steder. PHP-kode til RSS-feeds jeg har lavet, kan jeg ikke altid bare vise frem.

Men du har bare nogle simple PHP-problemer først om fremmest.
Avatar billede erikjacobsen Ekspert
16. august 2008 - 15:30 #7
Jeg samler slet ikke på point, tak.

Så længe du har banale PHP-fejl, så får du en fejlbesked du kan arbejde videre med. Jeg kan ikke hjælpe dig uden koden, og måske andre oplysinger.
Avatar billede w13 Novice
16. august 2008 - 15:33 #8
Ser du ikke:

Der må kun være ét element på øverste niveau i et XML-dokument. Der opstod en fejl under behandling af ressourcen 'http://c...

<b>Warning</b>:  require_once() [<a href='function.require-once'>function.require-once</a>]: URL fil...

?

Så skal du nok slå "Vis meddelelse om uskadelige HTTP-fejl" fra i Internet Explorers avancerede indstillinger.
Avatar billede w13 Novice
16. august 2008 - 15:40 #9
Hov, dette er den hele:

Warning:  require_once() [function.require-once]: URL file-access is disabled in the server configuration in /customers/cykelsporten.dk/cykelsporten.dk/httpd.www/rss/news.php on line 4

Warning:  require_once(http://www.cykelsporten.dk/mysql.php) [function.require-once]: failed to open stream: no suitable wrapper could be found in /customers/cykelsporten.dk/cykelsporten.dk/httpd.www/rss/news.php on line 4

Fatal error:  require_once() [function.require]: Failed opening required 'http://www.cykelsporten.dk/mysql.php' (include_path='.:') in /customers/cykelsporten.dk/cykelsporten.dk/httpd.www/rss/news.php on line 4
Avatar billede erikjacobsen Ekspert
16. august 2008 - 15:42 #10
Kan "vis kilde" i IE heller ikke vise fejlene?
Avatar billede w13 Novice
16. august 2008 - 16:04 #11
Ja, det samme ser jeg. Men hvis du går ind i "Vis kilde", som Erik foreslår, så viser den mig den tekst, som jeg skrev til sidst. Og det er de præcise fejlmeddelelser, som du skal bruge til at fikse dine fejl.
Avatar billede w13 Novice
16. august 2008 - 16:45 #12
Nej, jeg foretrækker at yde hjælp til selvhjælp.

Første fejl er:

Warning:  require_once() [function.require-once]: URL file-access is disabled in the server configuration in /customers/cykelsporten.dk/cykelsporten.dk/httpd.www/rss/news.php on line 4

Det lyder jo som om, den ikke kan åbne "../mysql.php"?
Avatar billede erikjacobsen Ekspert
16. august 2008 - 16:47 #13
Du vil også hjælpe at vise den kode, der faktisk fejler. Når den siger noget med "URL file-access", så kan det ikke være den kode du viser her.
Avatar billede w13 Novice
16. august 2008 - 16:58 #14
Der står også, at det er et problem i server-konfigurationen så det kan sagtens være for enkelte filer. Og på hovedsiden står det vel også anderledes end "../mysql.php", så du kalder den jo faktisk på en lidt anden måde.
Avatar billede w13 Novice
16. august 2008 - 16:58 #15
(Jeg har dog endnu ikke erfaring nok med PHP til at kunne sige det med sikkerhed.)
Avatar billede w13 Novice
16. august 2008 - 17:06 #16
Hvad?
Avatar billede erikjacobsen Ekspert
16. august 2008 - 17:07 #17
Du er velkommen, cykelsport, til at sidde og snakke med dig selv. Hvis du vil have vi snakker med, så vis os den kode der fejler, med samt hvilken fejl det er.
Avatar billede w13 Novice
16. august 2008 - 17:11 #18
require_once "../connect.php";

??
Avatar billede w13 Novice
16. august 2008 - 17:16 #19
Så prøv at brug:

require_once "../mysql.php";

så vi er 100% sikre på, hvad der bliver kørt, og hvad vi retter i. :)
Avatar billede w13 Novice
16. august 2008 - 17:24 #20
Når du ser siden nu og går ind i "Vis kilde", så ser du:

<?xml version="2.0" encoding="danish"?>
<rss version="0.91">
<channel>
<title>CykelSporten.dk</title>
<link>Http://CykelSporten.dk</link>
<description>CykelSporten.dk er gud</description>

Fatal error:  Call to undefined function dbarray() in /customers/cykelsporten.dk/cykelsporten.dk/httpd.www/rss/news.php on line 14

Og det er jo rigtigt nok. Din linje 14 er:

while ($row=dbarray($result3)) {

Og her kalder du dbarray(), som ikke er defineret noget sted i koden.
Avatar billede w13 Novice
16. august 2008 - 17:33 #21
Det er svært at sige - det har vel haft et eller andet formål på et tidspunkt, men det er ikke en eksisterende funktion, så der er nogen der har lavet deres egen.

Jeg ville nok bare prøve at rette dbarray til mysql_fetch_array
Avatar billede w13 Novice
16. august 2008 - 17:40 #22
Tryk på "Flere oplysninger", så får du:

Ugyldigt versionsnummer.
Linje: 1 Tegn: 16

<?xml version="2.0" encoding="danish"?>

Dvs. ret version="2.0" til version="1.0"
Avatar billede w13 Novice
16. august 2008 - 17:43 #23
Ret "danish" til "iso-8859-1".
Avatar billede w13 Novice
16. august 2008 - 17:52 #24
Du skal erstatte &-tegn med &amp;

Og i øvrigt skal linjen:

<description>".$tekst."</description>\n

vel være:

<description>".$description."</description>\n
Avatar billede w13 Novice
16. august 2008 - 17:54 #25
Du kan rette dette:

  $description = stripslashes(nl2br($row['tekst']));
  $description = strip_tags($description, "<A><P><BR><BR /><HR>");
  $description = substr($description, 0, 150);

til:

  $description = stripslashes(nl2br($row['tekst']));
  $description = strip_tags($description, "<A><P><BR><BR /><HR>");
  $description = htmlentities($description);
  $description = substr($description, 0, 150);

hvis du vil erstatte specialtegn med HTML-entiteter, hvilket jo lige nu forårsager din fejl i FireFox.
Avatar billede w13 Novice
16. august 2008 - 17:54 #26
Ellers skal beskrivelsen puttes ind som CDATA, som Erik foreslog i starten.
Avatar billede w13 Novice
16. august 2008 - 17:55 #27
Det gør du ved også at rette:

<description>".$description."</description>\n

til:

<description><![CDATA[".$description."]]></description>\n

Så burde du være ret godt dækket ind.
Avatar billede w13 Novice
16. august 2008 - 17:57 #28
Og hvad er din linje 15 nu? (Vis gerne hele din nuværende kode.)
Avatar billede w13 Novice
16. august 2008 - 18:01 #29
Du har rettet <description>-linjen det forkerte sted.

Det skal være:

<?php

header("Content-Type: text/xml");
require_once "../mysql.php";
$result3 = mysql_query("SELECT * FROM artikler ORDER BY time DESC LIMIT 0,10");

echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n
  <rss version=\"0.91\">\n\n
  <channel>\n
  <title>CykelSporten.dk</title>\n
  <link>Http://CykelSporten.dk/</link>\n
<description><![CDATA[CykelSporten.dk er gud]]></description>\n;

while ($row=mysql_fetch_array($result3)) {
  $RSSID = intval($row['ID']);
  $overskrift = $row['overskrift'];
  $date = date("H:i:s Y-m-d",$row['time']);
  $tekst = stripslashes(nl2br($row['tekst']));
  $tekst = strip_tags($tekst, "<A><P><BR><BR /><HR>");
  $tekst = htmlentities($tekst);
  $tekst = substr($tekst, 0, 150);

  echo "<item>\n
  <pubDate>".$date."</pubDate>\n
  <title>".$overskrift."</title>\n
  <link>".$base."../article.php?id=".$RSSID."</link>\n
  <description><![CDATA[".$tekst."]]></description>\n;
  </item>\n\n";
}
echo "</channel>
  </rss>";

?>
Avatar billede w13 Novice
16. august 2008 - 18:02 #30
Det skyldtes din linje:

<description><![CDATA[".$tekst."]]></description>\n;

hvor $tekst endnu ikke indeholdt noget.
Avatar billede erikjacobsen Ekspert
16. august 2008 - 18:14 #31
Din echo-sætning der slutter i linie 12 mangler en afslutning.
Avatar billede erikjacobsen Ekspert
16. august 2008 - 18:32 #32
Der mangler stadig noget, men du kan få den af mig. Værsgo.:    "
Avatar billede w13 Novice
16. august 2008 - 18:38 #33
Din echo-sætning, der slutter i linje 12.

Dvs. ret:

  <description>Beskrivelse332</description>\n;
til:
  <description>Beskrivelse332</description>\n";
Avatar billede w13 Novice
16. august 2008 - 18:54 #34
Hvad mener du? Nu ser det da ud til at fungere 100% i både IE og FF?
Avatar billede w13 Novice
16. august 2008 - 19:02 #35
I hvilken browser? Jeg ser det helt fint som sagt i både IE og FF.
Avatar billede w13 Novice
16. august 2008 - 19:02 #36
Nu er der så en fejl på siden, så du har rettet et eller andet siden sidst.
Avatar billede w13 Novice
16. august 2008 - 19:24 #37
Lige før virkede det fint hos mig.

Men du sagde da også før, at den udskrev det som tekst. Så der meldte den jo heller ikke fejl.

Vis lige din nuværende kode.
Avatar billede w13 Novice
16. august 2008 - 19:43 #38
Der er et 5-tal her:

echo "<?xml version=\5"1.0\" encoding=\"iso-889-1\"?>\n\n
Avatar billede w13 Novice
16. august 2008 - 20:05 #39
Nej, jeg kan se, at du bare havde flyttet 5-tallet:

echo "<?xml version=\5"1.0\" encoding=\"iso-8859-1\"?>\n\n

Det burde virker.
Avatar billede w13 Novice
16. august 2008 - 20:19 #40
Gerne for mig, hvis Erik da vil have nogen, hvilket han ikke plejer. =)
Avatar billede w13 Novice
16. august 2008 - 20:23 #41
Fejlen i IE er stadig:

Systemet understøtter ikke den angivne kodning.
Linje: 1 Tegn: 43

<?xml version="1.0" encoding="iso-889-1"?>

Så hvis du ikke har ændret iso-889-i til iso-8859-1, skal du lige gøre det, og ellers er det fordi du skal rydde Cachen i IE for at se ændringen.
Avatar billede w13 Novice
16. august 2008 - 20:24 #42
Nej, jeg kan se, at der stadig mangler 5-tallet.
Avatar billede w13 Novice
16. august 2008 - 20:44 #43
Tak for point! :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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