Avatar billede xbobby Nybegynder
15. juli 2003 - 07:21 Der er 12 kommentarer og
1 løsning

Åbne en ny side på den samme side

Hej med jer.

Jeg har brug for at vide følgende:

1. Hvordan åbner jeg en ny side på den samme side via en submit knap. Det vil sige at alt den tekst og kode der er omkring min forms forsvinder og en ny forms bliver synlig i stedet for.

2. Det skal være via en funktion på samme side da jeg har en del variabler som jeg skal bruge i det videre forløb.
Avatar billede raz0 Nybegynder
15. juli 2003 - 07:34 #1
Det kan du lave meget simpelt, noget i stil med det her:

if (isset($_GET['sendt']) && $_GET['sendt'] == "1")
{
    print "Den nye form indsættes her.";
}
else
{
    print "<form method='post' action='side.php?sendt=1'>\n";
    .... forskellige inputs osv. her ....
    print "<input type='submit'>\n";
    print "</form>\n";
}

Scriptet er selvfølgelig ikke testet først ;)
Avatar billede sostack Nybegynder
15. juli 2003 - 10:04 #2
Prøv:

<?php
if(!isset($_POST['anden']))
{
?>
<form action="<?php echo $PHP_SELF; ?>" method="POST">
navn:<input type="text" name="navn"><br />
adresse:<input type="text" name="adresse"><br />
postnr:<input type="text" name="postnr"><br />
by:<input type="text" name="by"><br />
email:<input type="text" name="email"><br />
<input type="submit" name="anden" value="OK">
</form>
<?php
} else {
?>
<form action="<?php echo $PHP_SELF; ?>" method="POST">
alder:<input type="text" name="alder"><br />
køn:<input type="text" name="køn"><br />
skole:<input type="text" name="skole"><br />
skonummer:<input type="text" name="skonummer"><br />
kæreste:<input type="text" name="kæreste"><br />
<input type="submit" name="anden" value="OK">

<?php
foreach($_POST as $key => $value)
{
echo "<input type='hidden' name='" . $key ."' value='" . $value ."'>\n";
}
echo "</form>";
}
?>

//sostack
Avatar billede xbobby Nybegynder
15. juli 2003 - 12:42 #3
Hej Raz0

Jeg har prøvet dit script og det du laver fungerer fint. Men jeg har så prøvet at omdanne det til at tre forskellige forms ligger i 3 funktioner på samme side.

Ud fra hvad jeg har forstået, så skal den første forms der vises først på siden ligge til sidst i IF strukturen, sådan at hvis de andre betingelse ikke bliver opfyldt, så vil den side vises og det er jo logisk nok, da de variabler der spørges til, først får værdi i det øjeblik der trykkes på submit knappen.

Klart nok – MEN

Jeg må have lavet en fejl for jeg får vist den første del i IF strukturen ”spørgsmål”, i stedet for den sidste, kan du se hvad jeg gør galt?

Jeg smider lige koderne på, så du har lidt at kikke på :-)

<html>
<head>
    <title>Untitled</title>
</head>

<body>
<?
function vaelg() {
echo "Tekst i funktionen vaelg() <p>";
print "<form method='post' action='side02.php?spoerg=1'>\n";
print "<input type='submit'>\n";
print "</form>\n";
print "v&aelig;lg";
}

function spoergsmaal() {
echo "Tekst i funktionen spoergsmaal() <p>";
    print "<form method='post' action='side02.php?svar=1'>\n";
    print "<input type='submit'>\n";
    print "</form>\n";
}

function svar() {
echo "Tekst i funktionen svar() <p>";
    print "<form method='post' action='side02.php?spoerg=1'>\n";
    print "<input type='submit'>\n";
    print "</form>\n";
}

if (isset($_GET['spoerg']) && $_GET['spoerg'] == "1")
{
    spoergsmaal();
}
elseif (isset($_GET['svar']) && $_GET['svar'] == "1")
{
    svar();
}
else
{
    vaelg();
}
?>
</body>
</html>
Avatar billede xbobby Nybegynder
15. juli 2003 - 12:46 #4
Til sostack
Jeg har problemer med din kode, siden starter godt nok op, men når jeg trykker på submit så kommer denne ikke til side 2 eller forms 2 eller hvad vi nu skal kalde den, kan du se hvad der er galt?

Lige et tillægsspørgsmål hvad er fordelen ved at bruge <form action="<?php echo $PHP_SELF; ?>"  fremfor blot at kalde den side man er på igen ?
Avatar billede sostack Nybegynder
15. juli 2003 - 12:59 #5
Fordelen ved <form action="<?php echo $PHP_SELF; ?>" er, at det er ligemeget hvad man kalder siden, når man gemmer den. Den henviser altid til sig selv.

Hvis du kopierer "hele" koden ind i en editor, gemmer det som et_eller_andet.php og viewer filen via din webserveradresse/et_eller_andet.php kan jeg ikke se, der skulle være noget galt med den. Det virker her hos mig.

Når du har viewet filen og trykket på OK, højreklik på siden og vælg vis kilde.
Kopier og sæt ind her.

//sostack
Avatar billede xbobby Nybegynder
15. juli 2003 - 13:54 #6
Hej sostack
Det virker stadigvæk ikke for mig. Det der med at kopirer en kode og få det vist i en browser kan jeg godt finde ud af, så der ligger fejlen ikke.

Når du kan se det og jeg ikke kan - tænker jeg på kan det være noget med min opsætning i PHP der er anderledes på min maskine i forhold til din?

Her er selve den kode der ligger i url'en når jeg kommer ind på siden med bemærkningen The page cannot be displayed:

http://localhost/test/<br%20/><b>Notice</b>:%20%20Undefined%20variable:%20%20PHP_SELF%20in%20<b>c:/inetpub/wwwroot/test/side01.php</b>%20on%20line%20<b>17</b><br%20/>

//xbobby
Avatar billede sostack Nybegynder
15. juli 2003 - 14:01 #7
IIS eller PWS, jeg kender ikke deres muligheder med PHP, eller deres indstillinger. Men din adresse ser da helt hen i vejret ud.

//sostack
Avatar billede xbobby Nybegynder
15. juli 2003 - 14:11 #8
Det lader til at det så må være noget med opsætningerne på vores maskiner der giver problemet - synd, for det så rigtigt godt ud det du lavede :-)
Avatar billede raz0 Nybegynder
15. juli 2003 - 15:30 #9
Hvad er det helt specifikt der er problemet? Du siger du får vist den "første del af IF strukturen". Hvornår gør du det? Jeg har afprøvet dit script på min host og det ser helt fint ud (tror jeg da). Check selv:

http://raz0.zalon.dk/side02.php

Den adresse du skrev kommer i hvert fald aldrig til at virke da den refererer til localhost (din egen maskine) og det vil altid blive den der trykker på linket's egen PC. Ud fra hvad jeg kan se på linket, ser det dog ud til at du ikke har slået register_globals til i din php.ini fil. Det er også helt fint, faktisk bedst, men for at få det til at virke, skal du skifte $PHP_SELF ud med $_SERVER['PHP_SELF']. Håber det hjælper :)
Avatar billede xbobby Nybegynder
15. juli 2003 - 15:47 #10
Til raz0
Tak for din feedback. Jeg har fundet fejlen mine functioner lå ikke i head, som de skulle og så gik der ged i den, så det funker nu.

Tak for dit tips omkring $PHP_SELF ud med $_SERVER['PHP_SELF'] det var lige det der skulle til for at få det til at fungere og det er også rart at vide hvor i php.ini jeg kan ændre det når jeg får brug for det.

Kado til dig raz0! Tak for en rigtig god hjælp - Jeg sender de 60 point til dig, da jeg syntes bedst om din løsning :-)
Avatar billede raz0 Nybegynder
15. juli 2003 - 15:54 #11
Hehe. Jeg takker for pointene :)
Avatar billede xbobby Nybegynder
15. juli 2003 - 16:07 #12
Til raz0
Lige et afsluttende spørgsmål - Hvorfor er $_GET['spoerg']) to gange i den samme forespørgsel?

if (isset($_GET['spoerg']) && $_GET['spoerg'] == "1")
Avatar billede raz0 Nybegynder
15. juli 2003 - 21:48 #13
først checker jeg om variablen $_GET['spoerg'] findes, bagefter checker jeg om den er lig med "1". I det her eksempel kunne '$_GET['spoerg'] == "1"' godt undlades. Hvis man ikke checker om variablen findes med isset() først, vil scriptet spytte end advarsel ud hvis den ikke findes, og det er vi selvfølgelig ikke interreseret i :)
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