Avatar billede zac Nybegynder
23. december 2003 - 22:32 Der er 7 kommentarer og
1 løsning

Form send t. filen selv - kombineret med session

Jeg vil gerne have form var. sendt til filen selv -
OG have forskellig form efter om det er første eller følgende gennemløb, vha. session.
Men genstart af filen giver ikke ny form, selv om session skulle sikre det.
Hvad mon der er galt?

<?php
session_start(); // start session
header("Cache-control: private"); // IE 6 fix
?>

<?
if (!isset($_POST['action']))
{
    if (!isset($_SESSION['action']))
    {
print '<FORM METHOD="POST" ACTION="page15.php">';
// første form
print '<input type="hidden" name="action" value="go">';
print 'Skriv dit navn: <input type="text" name="name">';
print '<input type="SUBMIT" value="Send">';
print '</FORM>';
    }   
    if (isset($_SESSION['action']))
    {    
$_SESSION['name'] = $_POST['name'];
$name = $_SESSION['name'];
print '<FORM METHOD="POST" ACTION="page15.php">';
// anden form
print '<input type="hidden" name="action" value="go">';
print '$name: Tryk bare <input type="text" name="name">';
print '<input type="SUBMIT" value="Send">';
print '</FORM>';
    }       
}

if (isset($_POST['action']))
{
echo "<br><br>";
$_SESSION['name'] = $_POST['name'];
$name = $_SESSION['name'];
echo "Dette er fra SESSION: $name <br><br>";
echo "Fortsæt til <a href='page15.php'>samme side forfra</a>";
// her kommer første form, IKKE anden, dvs. session virker ikke
}

?>

<br><br>
<? show_source('page15.php'); ?>
Avatar billede myplacedk Nybegynder
23. december 2003 - 22:40 #1
Første visning:
$_POST['action'] er ikke sat
$_SESSION['action'] er ikke sat
- Første form vises. Andet sker der ikke.

Første form submittes:
$_POST['action'] er sat, hverken første eller anden form vises ikke.
Sessionens navn mm. vises.

Og hvor er det så den ryger af sporet? Hvad er det første punkt i min gengivelse, som er forkert, i forhold til hvad du ønsker?
Avatar billede zac Nybegynder
23. december 2003 - 23:00 #2
Den ryger først af, når man læser siden ind 2. gang - det skulle føre til 2. form...
Avatar billede detox Nybegynder
23. december 2003 - 23:10 #3
Ok, hvad det så end er du vil med det. Prøv:

<?php
session_start(); // start session
header("Cache-control: private"); // IE 6 fix
?>

<?
if (!isset($_POST['action']))
{
    if (!isset($_SESSION['action']))
    {
print '<FORM METHOD="POST" ACTION="page15.php">';
// første form
print '<input type="hidden" name="action" value="go">';
print 'Skriv dit navn: <input type="text" name="name">';
print '<input type="SUBMIT" value="Send">';
print '</FORM>';
    }   
    if (isset($_SESSION['action']))
    {   
$name = $_SESSION['name'];
print '<FORM METHOD="POST" ACTION="page15.php">';
// anden form
print '<input type="hidden" name="action" value="go">';
print "$name: Tryk bare <input type='text' name='name' value='".$name."'>";
print '<input type="SUBMIT" value="Send">';
print '</FORM>';
    }       
}

if (isset($_POST['action']))
{
echo "<br><br>";
$_SESSION['name'] = $_POST['name'];
$_SESSION['action'] = "go";
$name = $_SESSION['name'];
echo "Dette er fra SESSION: $name <br><br>";
echo "Fortsæt til <a href='page15.php'>samme side forfra</a>";
// her kommer første form, IKKE anden, dvs. session virker ikke
}

?>

<br><br>
<? show_source('page15.php'); ?>
Avatar billede myplacedk Nybegynder
23. december 2003 - 23:34 #4
2. form er inde i den "if", hvor betingelsen er, at 'action' ikke er sat, i POST-data. Men form 1 gør netop dette. Dvs. i første omgang skal du i hvert fald afslute den yderste "if" før form 2, i stedet for efter.
Avatar billede zac Nybegynder
24. december 2003 - 00:05 #5
Foreløbig tak til jer begge, jeg prøver videre i morgen - eller måske først lidt senere :)
Det fra detox er absolut et stort fremskridt - men er nødt til at gå i seng nu...
Jeg skal bruge det til en tilmeldings formular, hvor man kun behøver udfylde alle data første gang, og derefter bare kan trykke ny tilmelding (måske er 2. form slet ikke nødvendig, i hvert fald skal jeg have fjernet feltet til indskrivning, laves til hidden...).
Glædelig jul!
Avatar billede zac Nybegynder
25. december 2003 - 00:54 #6
nej, myplacedk, det er ikke rigtigt, mit opr. udkast, og detox' forbedringer, er ens mht. if-betingelser...
Og detox' ændringer nede i linierne virker - meget fint!
->detox: giver gerne point...

Omend jeg nu får nyt problem, kan jeg se:

Når 1. form ikke er udfyldt korrekt, reageres der jo først på det, når den er sendt - og så er det for sent at starte helt forfra, så har session overtaget/ så kommer 2. form (som nu kun er send endnu en tilmelding knap).
Før brugte jeg ONCLICK='window.history.go(-1) for at komme tilbage fra fejl-meddelelserne, men det kan man ikke nu.
Og hvad gør jeg så? ---hm...
Avatar billede myplacedk Nybegynder
31. december 2003 - 10:42 #7
Jeg tror ikke vi tænker på det samme, med "læser siden ind".

Anyway, løsningen på dit nye problem (hvis jeg har forstået dig korrekt denne gang): Hvis formen ikke er udfyldt korrekt, så lad være med at sætte de to sessions-variable, og vis en anden besked.
Avatar billede zac Nybegynder
20. oktober 2005 - 23:44 #8
undskyld sene svar accept!
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