Gå til innhold

Velge forskjellige news - problem


Anbefalte innlegg

Ingen svarte når jeg editerte posten, så prøver meg på en ny topic.

 

siden:

http://stian.bang.dot.no/hjemmeside/v1/links/index.shtml

nødvendig kode:

<!--#include virtual="rss.php" -->

 

php filen:

http://stian.bang.dot.no/hjemmeside/v1/links/rss.php

nødvendig kode:

<?php
header("Location: index.shtml");

echo "<form action=\"rss.php\" method=\"post\">
           <select name=\"news\">
             <option value=\"itavisen\">ITavisen</option>
             <option value=\"newYorkTimes\">New York Times</option>
           </select>
           <input type=\"submit\" value=\"Get news\" />
         </form>";

$rss = $_POST["news"];

switch ($rss) {
 case "itavisen":
   $print = shell_exec("perl ../../misc/rss2html.pl http://www.itavisen.no/rss.php");
 break;
 case "newYorkTimes":
   $print = shell_exec("perl ../../misc/rss2html.pl http://www.nytimes.com/services/xml/rss/userland/Technology.xml");
 break;
 default:
   $print = shell_exec("perl ../../misc/rss2html.pl http://www.itavisen.no/rss.php");
}

echo $print;
exit;
?>

 

Poenget er at siden skal få ut 3 rss nyheter under form'n. Den viser kun default. Jeg kan med andre ord ikke velge andre news.

 

Er det mulig og ordne dette eller er det like greit å skrive et nytt script? fordi switch setninger ikke funker i dette tilfellet?

Lenke til kommentar
Videoannonse
Annonse

Fant feilen.

 

Programmet virker, man kan velge news.

problemet er at når headeren kjører, så redirecter den og da blir det valgt default verdi. hvordan kan jeg løse dette?

 

Den headeren irriterer meg grenseløst!

 

EDIT:

@smoothie:

verdien til $_POST["news"] kommer fra <select name=\"news\"> som får verdien fra en av <option>-taggene.

 

EDIT 2:

kutter jeg ut headeren så virker det fint, bare da får jeg ikke siden rundt, kun php fila.

så derfor trenger jeg den headeren. vil helst unnvære å lage en php side. liker å inkludere slik jeg har gjort nå.

Endret av Thurloc
Lenke til kommentar

Ok, har surfet litt rundt og lest.

 

Problemet er at header() ikke inkluderer $_POST og jeg kan derfor ikke bruke echo().

hvis jeg har forstått det riktig.

 

Det jeg tror da er at jeg må bruke $_SESSION[] funksjonen, men kan noen bare poste litt om den. sånn, hvordan bruker man den?

 

Slik jeg tror:

 

<?php
session_start();
header("Location: index.shtml");

echo "<form method=\"post\" action=\"rss.php\">
           <select name=\"news\">
             <option value=\"itavisen\" selected=\"selected\">ITavisen</option>
             <option value=\"newYorkTimes\">New York Times</option>
           </select>
           <input type=\"submit\" value=\"Get news\" />
         </form>";

$rss = $_POST["news"];

if ($rss == itavisen) {
 $print = shell_exec("perl ../../misc/rss2html.pl http://www.itavisen.no/rss.php");
}
else if ($rss == newYorkTimes) {
 $print = shell_exec("perl ../../misc/rss2html.pl http://www.nytimes.com/services/xml/rss/userland/Technology.xml");
}
else {
 $print = "<br />error";
}

$_SESSION["news"] = $print;
echo $_SESSION["news"];
exit;
?>

 

Er dette riktig? det virker i så fall fortsatt ikke...

 

EDIT:

Problemet er:

at når jeg kutter ut headeren så skriver den ut nyhetene.

men når headeren taes i bruk og redirecter til siden, så skriver den ut default verdi, altså error. fordi den ikke får noe input.

 

Hvordan kan jeg da få html siden til å vise echo fra php scriptet og ikke sin egen side?

 

Med andre ord, hvorfor i #?!* skriver den ut default og ingen andre?

Endret av Thurloc
Lenke til kommentar

Slik jeg ser det , går blir brukeren flyttet vekk fra din rss.php med en gang, før scriptet får tid til å kjøre.

flytt header(Location: hitogdit) lenger ned, men husk å legge alt som skal printes til brukeren i en variabel, som du skriver ut etterpå.

Endret av erkos
Lenke til kommentar

Må si meg enig med erkos.

 

Det virker ut ifra siden din at du inkluderer rss.php i hovedsiden. Eller hvordan er det ?

 

Isåfall ,så skjønner jeg ikke hvorfor du skal redirecte brukeren i det hele tatt... ?

 

Evt hvis du skal redirectre, så kan du vel sende variablene i urlen, og hente dem ut med $_GET. Men det skal funke bra med $post også, men da må vel action settes til index siden...

Lenke til kommentar

$_SESSION:

 

// Nødvendig for å bruke sessions:

session_start();

 

//skrive til en session

$_SESSION['et_hvilket_som_helst_navn'] = "En verdi";

 

//Lese fra en session

print $_SESSION['et_hvilket_som_helst_navn'];

 

Men du kan uansett ikke printe ut noe, også bruke header.

 

Beklager om jeg misforstod spørsmålet ditt.

Endret av robgar
Lenke til kommentar

For det første, så har jeg funnet ut hva problemet var, og posta i en annen topic. men men.

 

Til alle de som tviler på min plassering av header: den utføres ikke før exit; uansett, så det er korrekt.

problemet er når jeg redirecter så velger den default verdi, og ikke den som php'n valgte.

 

Jeg klarer å echo'e til siden, men får ikke valgt nyheter.

 

html siden:

http://stian.bang.dot.no/hjemmeside/v1/test/index.shtml

html kode:

<!--#include virtual="rss.php" -->

 

php siden:

http://stian.bang.dot.no/hjemmeside/v1/test/rss.php

php kode:

<?php
//header = redirect, utføres ved exit;
header("Location: index.shtml");

//echo'er ut form'n, funker fint.
echo "<form method=\"pst\" action=\"rss.php\">
           <select name=\"news\">
             <option value=\"itavisen\" selected=\"selected\">ITavisen</option>
             <option value=\"newYorkTimes\">New York Times</option>
           </select>
           <input type=\"submit\" value=\"Get news\" />
         </form>";

//setter $rss lik verdi
$rss = $_POST["news"];

//hvis $rss er lik itavisen, skriv ut.
if ($rss == itavisen) {
 $print = shell_exec("perl ../../misc/rss2html.pl http://www.itavisen.no/rss.php");
}
//hvis $rss er lik newYorkTimes, skriv ut.
else if ($rss == newYorkTimes) {
 $print = shell_exec("perl ../../misc/rss2html.pl http://www.nytimes.com/services/xml/rss/userland/Technology.xml");
}
//hvis ingen av valgene ovenfor blir utført, gjør dette (default):
else {
 $print = shell_exec("perl ../../misc/rss2html.pl http://www.itavisen.no/rss.php");
}

//skriv ut $print (funker også)
echo "
         $print";

//utfør header/redirect
exit;
?>

 

Hva kan jeg gjøre for at ikke default verdi blir valgt når jeg er inne på html siden?

Et av alternativene er å lage den som en php side, men vil helst unnvære dette.

 

det er det samme om jeg bruker $_SESSION[], $_GET[] og $_POST[]. prøvd alle tre.

ob_start() virket heller ikke.

 

Hva skal jeg gjøre?!?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...