Avatar billede zimmermann Nybegynder
02. juli 2003 - 00:11 Der 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.

På forhånd tak!

Mvh.
Rune
Avatar billede ahv Nybegynder
02. juli 2003 - 00:12 #1
header skal før output til browseren.
Avatar billede ahv Nybegynder
02. juli 2003 - 00:13 #2
<? if ($notall == 1) { ?>
<P><FONT COLOR="red">Skriv noget i begge felter</FONT></P>
<? }
else header("location:tavle.php"); ?>
Avatar billede ahv Nybegynder
02. juli 2003 - 00:13 #3
<?php
if ($notall == 1) {
echo "<P><FONT COLOR='red'>Skriv noget i begge felter</FONT></P>";
} else {
header("location:tavle.php");
?>
Avatar billede martin1000ben Nybegynder
02. juli 2003 - 00:18 #4
ahv - dette var nu ikke et HELT korrekt svar - altså det med "header skal før output til browseren."

Man kan da sagtens have at header står allernederst i scriptet - såfremt at ovenstående kode er korrekt :-)
Avatar billede ahv Nybegynder
02. juli 2003 - 00:19 #5
martin1000ben -> Prøv du at lave en header hvor der er output til browseren oven over så :o) Du poster bare et link her når du har lagt det op.
Avatar billede ahv Nybegynder
02. juli 2003 - 00:20 #6
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)
Avatar billede zimmermann Nybegynder
02. juli 2003 - 00:25 #7
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?
Avatar billede zimmermann Nybegynder
02. juli 2003 - 00:26 #8
Skal jeg poste noget mere kode?
Avatar billede ahv Nybegynder
02. juli 2003 - 00:26 #9
Ja tak.
Avatar billede zimmermann Nybegynder
02. juli 2003 - 00:30 #10
Dette er kode fra skrivbesked.php:

<? if ($notall == 1) { ?>
<P><FONT COLOR="red">Skriv noget i begge felter</FONT></P>
<? }
else $ACTION="skrivbesked.php"; header("location:tavle.php"); ?>                                                                               
                                                                               
<FORM METHOD="post" ACTION="">
<PRE>
Dit navn:      <INPUT
                  TYPE="text"
                  NAME="name"
                  SIZE="20"
                  MAXLENGTH="50"
              ##  VALUE="<? $name; ?>">
Din besked:
<TEXTAREA NAME="message" COLS="40" ROWS="5" WRAP="Virtual">
<? $message; ?>
</TEXTAREA>
                                                                               
<INPUT TYPE="submit" VALUE="tilføj">
                                                                               
</PRE>
</FORM>
Avatar billede ahv Nybegynder
02. juli 2003 - 00:33 #11
zimmermann -> din kode er ikke alt for køn, jeg kan stadig ikke se hensigten.
Avatar billede zimmermann Nybegynder
02. juli 2003 - 00:37 #12
:-) 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. :-)

Tak for din tålmodighed.
Avatar billede jakoba Nybegynder
02. juli 2003 - 00:46 #13
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

mvh JakobA
Avatar billede martin1000ben Nybegynder
02. juli 2003 - 00:48 #14
ahv > Den kode zimmerman sendte først, der ville header godt kunne lykkes HVIS der havde været en { mellem else og header ;-)
Avatar billede martin1000ben Nybegynder
02. juli 2003 - 00:49 #15
Zimmerman -> Kan du ikke forklare lidt mere præcist hvorfor du vil sende 2x actions ?
Avatar billede martin1000ben Nybegynder
02. juli 2003 - 00:51 #16
Zimmerman > Din første kode kunne laves sådan her

<?
if ($notall == 1) {
  print '<P><FONT COLOR="red">Skriv noget i begge felter</FONT></P>';
} else {
  header("location:tavle.php?ACTION=skrivbesked.php");
}
?>
Avatar billede zimmermann Nybegynder
02. juli 2003 - 00:56 #17
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?
Avatar billede zimmermann Nybegynder
02. juli 2003 - 02:51 #18
Jeg fandt en løsning:

<? 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\">";}  ?>
                                                                                                                 
<FORM METHOD="post" ACTION="">
<PRE>
Dit navn:      <INPUT
                  TYPE="text"
                  NAME="name"
                  SIZE="20"
                  MAXLENGTH="50"
                  VALUE="<? $name; ?>">
Din besked:
<TEXTAREA NAME="message" COLS="40" ROWS="5" WRAP="Virtual">
<? $message; ?>
</TEXTAREA>

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?

Tak for alle input!

Mvh.
Rune Z.
Avatar billede ahv Nybegynder
02. juli 2003 - 02:55 #19
Eller dele dem mellem hos alle ;o)
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