02. juli 2003 - 00:11Der er
18 kommentarer og 1 løsning
flere "actions" ved submit?
Jeg har en form som smider noget info i en database. Når det er gjort ville jeg gerne have at brugeren umiddelbart efter bliver taget til en ny side automatisk. Min idé var noget á la:
<? if ($notall == 1) { ?> <P><FONT COLOR="red">Skriv noget i begge felter</FONT></P> <? } else $ACTION="skrivbesked.php"; header("location:tavle.php"); ?>
men jeg får fejlen:
Warning: Cannot add header information - headers already sent by (output started at /var/www/linuxpartytest/linuxparty/inc/header.php:8) in /var/www/linuxpartytest/linuxparty/skrivbesked.php on line 71
Nu jeg tænker over det kan jeg jo godt forstå at headeren ikke kan have 2 url'er samtidig :-) men hvad søren gør jeg så?
Det er sådan at brugeren kommer fra siden tavle.php ind på skrivbesked.php. Når brugeren så har skrevet sin besked skulle han gerne returnere til tavle.php.
martin1000ben -> Output til browseren er f.eks. HTML-kode, en echo eller lignende, hvis du kan få noget HTML kode til at stå før en header uden at få fejl, så er du dygtig ;o)
Mit problem er vel at jeg har brug for at lave en action post af min form til skrivbesked.php for at få overført data, og at jeg, når data er overført, ønsker at bliver taget til en ny side. Er i med? - eller forklarer jeg mig ikke godt nok?
<? if ($notall == 1) { ?> <P><FONT COLOR="red">Skriv noget i begge felter</FONT></P> <? } else $ACTION="skrivbesked.php"; header("location:tavle.php"); ?>
:-) nej min kode er ikke køn. Jeg er ret ny i php, så der bliver eksperimenteret en del, hvilket nok gå ud over overskueligheden. tjek: http://test.linuxparty.dk/ og prøv opslagstavlen til højre. Det kan være det gør det mere overskueligt. :-)
en form kan ikke have 2 actions. Formdata sendens til EEN side og den side sender så EEN svarside tilbage til browseren.
om den side der returnes så genereres af den selv eller er en redirect er underordnet. Det væsentlige er at serveren kun må svare med een side.
så hvis du vil have 2 samtidige actions må du sørger for at browseren beder om to sider, til to forskellige rammer eller vinduer. Du kan ikke på serveren gøre een request til to requests.
Hvordan det relaterer til din headerfejl forstår jeg ikke rigtig. Men kik lige på fejlen du får: det er linie 8 i filen /var/www/linuxpartytest/linuxparty/inc/header.php der har genereret noget output
<? if ($notall == 1) { print '<P><FONT COLOR="red">Skriv noget i begge felter</FONT></P>'; } else { header("location:tavle.php?ACTION=skrivbesked.php"); } ?>
martin4ben.. :-) puha... jeg skal forsøge. Sagen er altså den her opslagstavle. http://test.linuxparty.dk/tavle.php her kan man så vælge at at tilføje en besked: http://test.linuxparty.dk/skrivbesked.php når beskeden er er sendt med submit, ville jeg gerne have at brugeren automatisk returnerede til http://test.linuxparty.dk/tavle.php da jeg går ud fra at brugeren ikke vil skrive flere beskeder i træk, og for at undgå at brugeren bruger browserens "updatér", da det giver flere ens indlæg (data bliver postet igen). Var det bedre?
<? if ($notall == 1) { ?> <P><FONT COLOR="red">Skriv noget i begge felter</FONT></P> <? } else if ($name) { echo "<meta http-equiv=refresh content=\"0; URL=tavle.php\">";} ?>
Det er givet ikke den skønneste løsning, men den virker. Jeg ved ikke rigtig hvem af jer der kom tættest på en løsning så jeg må vel hellere snuppe pointene selv så der ikke bliver ballade?
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.