Stian_ Skrevet 20. desember 2004 Del Skrevet 20. desember 2004 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
Lemkin Skrevet 20. desember 2004 Del Skrevet 20. desember 2004 Om ikke $_POST["news"] er satt til noen av alternativene i switch setninga di, så vil vel default komme fra? Lenke til kommentar
Stian_ Skrevet 20. desember 2004 Forfatter Del Skrevet 20. desember 2004 (endret) 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 20. desember 2004 av Thurloc Lenke til kommentar
Stian_ Skrevet 20. desember 2004 Forfatter Del Skrevet 20. desember 2004 (endret) 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 20. desember 2004 av Thurloc Lenke til kommentar
erkos Skrevet 21. desember 2004 Del Skrevet 21. desember 2004 (endret) 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 21. desember 2004 av erkos Lenke til kommentar
kakkle Skrevet 21. desember 2004 Del Skrevet 21. desember 2004 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
robgar Skrevet 21. desember 2004 Del Skrevet 21. desember 2004 (endret) $_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 22. desember 2004 av robgar Lenke til kommentar
???????? Skrevet 21. desember 2004 Del Skrevet 21. desember 2004 Nå har ikke jeg leste alle innleggene over, så håper denne kommentaren passer. De siste årene har output controlen til PHP blitt meget stabil og bra. Til og med Tidy "bruker" den. Slå opp ob_start(). Ved å bruke denne så slipper du å ta hensyn til header. Lenke til kommentar
Stian_ Skrevet 21. desember 2004 Forfatter Del Skrevet 21. desember 2004 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
robgar Skrevet 22. desember 2004 Del Skrevet 22. desember 2004 En ting glemte jeg å si, for å skrive til sessions, må du bruke: session_start(); // før "body delen" Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå