[PHP] Formulier en sessie variabelen probleem

Pagina: 1
Acties:

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 25-07 08:41

kazz1980

Goh... Ik hier?

Topicstarter
Zie:
http://hagen.let.rug.nl:2...d/ToepDBSite/boekform.php

Ik wil eigenlijk een waarde uit het formulier op laten slaan als sessie variabele (bij voorkeur al VOORDAT submit gebruikt wordt!)

Ik krijg dit echter niet voor elkaar. Ik weet niet hoe ik een waarde in de sessie kan opslaan

Wat gaat er hier fout??

begin van de code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php

<HTML>
<HEAD>

</HEAD>
<BODY>
<FORM name="test" method="POST" action="testform2.php">
<B><h3>BOEKGEGEVENS</h3></B>

<?php
if($_SESSION[$isbn]){
    ?>
    <input type=text maxlength='13' name="isbn" value="<? echo $_SESSION[$isbn] ?>">
    <?
}else{
    ?>
    <input type=text maxlength='13' name="isbn" value='isbn'>
    <?
    }
    ?>
<?
echo $_SESSION[$isbn];
?>
...


(
PHP:
1
2
3
4
<?php
session_start();
ob_start();
?>

staat in bestand waar dit een include van is)

[ Voor 51% gewijzigd door kazz1980 op 03-03-2003 15:12 ]

hier stond iets interessants, maar het is even weg...


  • Alex
  • Registratie: Juli 2001
  • Laatst online: 28-02 19:26
Voro Sessions geld hetzelfde als voor headers, moeten gestart worden voordat er HTML-code(of XML/CSS/??-code) naar de client gestuurd is...
Ik zou het dus omwisselen:
PHP:
1
2
session_start();
ob_start();

[ Voor 1% gewijzigd door Alex op 03-03-2003 15:02 . Reden: typo, leestekens, vernederlandsing ]

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 25-07 08:41

kazz1980

Goh... Ik hier?

Topicstarter
prog-konijn schreef op 03 March 2003 @ 15:02:
Voro Sessions geld hetzelfde als voor headers, moeten gestart worden voordat er HTML-code(of XML/CSS/??-code) naar de client gestuurd is...
Ik zou het dus omwisselen:
PHP:
1
2
session_start();
ob_start();
De ene pagina zegt dat eerst session_start() moet, de andere pagina zegt weer eerst ob_start()...Is overal anders...
Maar geen van beiden werkt. Levert exact dezelfde foutmelding op.

Ow dom! Ik heb de session_start wel bovenaan staan...maar bovenaan in een include, niet bovenaan in de pagina...
Dus foutmelding is nu weg!

Nu wil ik enkel nog weten hoe ik de gegevens uit de form in de sessie krijg...Word niet echt wijs uit alle manuals....

[ Voor 26% gewijzigd door kazz1980 op 03-03-2003 15:11 ]

hier stond iets interessants, maar het is even weg...


  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Gebruik session_register om een var in een sessie te schrijven en $_SESSION om hieruit weer te kunnen lezen.

Ook Knor is aangestoken met het ligfietsvirus!


  • Alex
  • Registratie: Juli 2001
  • Laatst online: 28-02 19:26
Submit.php(moet ongeveer zo werken :) ):
PHP:
1
2
3
4
session_start();
foreach($_POST AS $name => $value){
      session_register[$name] = $value;
}


Op andere pagina's lees je het dan zo uit:
PHP:
1
2
3
session_start();
print $_SESSION['var1'];
//etc...

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

PHP:
1
if($_SESSION[$isbn]){

Moet worden

PHP:
1
if( $_SESSION['isbn'] ) {


In de huidige situatie gaat ie in de $_SESSION array kijken naar het item met de index $isbn (de waarde die dus in de $isbn variabele staat). Deze is echter in jouw situatie leeg en dus staat er eigenlijk:

PHP:
1
if( $_SESSION[''] )


Verder zou ik er

PHP:
1
if( isset( $_SESSION['isbn'] ) ){


van maken, omdat je anders een warning krijgt als er geen isbn aanwezig is in je sessie.

[ Voor 10% gewijzigd door Skinny op 03-03-2003 15:20 ]

SIZE does matter.
"You're go at throttle up!"


  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 25-07 08:41

kazz1980

Goh... Ik hier?

Topicstarter
prog-konijn schreef op 03 March 2003 @ 15:18:
Submit.php(moet ongeveer zo werken :) ):
PHP:
1
2
3
4
session_start();
foreach($_POST AS $name => $value){
      session_register[$name] = $value;
}
Dit geeft deze melding:
Parse error: parse error, unexpected T_VARIABLE in /homepages/s0948535/td/ToepDBSite/boekform.php on line 4

(regel 4 = "foreach($_POST AS $name => $value){" )

werkt dus niet echt....

hier stond iets interessants, maar het is even weg...


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Weet je zeker dat dat regel 4 is ? en niet die session_register regel ?

SIZE does matter.
"You're go at throttle up!"


  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 25-07 08:41

kazz1980

Goh... Ik hier?

Topicstarter
Skinny schreef op 03 March 2003 @ 15:31:
Weet je zeker dat dat regel 4 is ? en niet die session_register regel ?
PHP:
1
2
3
4
5
6
<?php
session_start();
ob_start();
foreach($_POST AS $name => $value){
      session_register[$name] = $value;
}

ja. dat weet ik zeker...

[ Voor 7% gewijzigd door kazz1980 op 03-03-2003 15:35 ]

hier stond iets interessants, maar het is even weg...


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

PHP:
1
2
3
foreach($_POST AS $name => $value) {
      session_register("$name");
}


Even goed kijken naar de syntax van session_register (keek er zelf ook overheen in eerste instantie.

http://www.php.net/manual/nl/function.session-register.php

Dit verdient naar mijn mening trouwens niet de schoonheidsprijs. Direct werken met $_SESSION vind ik toch iets mooier.

SIZE does matter.
"You're go at throttle up!"


  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 25-07 08:41

kazz1980

Goh... Ik hier?

Topicstarter
Skinny schreef op 03 March 2003 @ 15:38:

http://www.php.net/manual/nl/function.session-register.php

Dit verdient naar mijn mening trouwens niet de schoonheidsprijs. Direct werken met $_SESSION vind ik toch iets mooier.
Mee eens....
maar werd me enige posts hoger aangeraden....
Kortom...ben weer terug waar ik begonnen ben.

hier stond iets interessants, maar het is even weg...


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Lees mijn reply hierboven eens. Die gaat over de "fouten" in het script dat je in je start-post gaf.


[edit]
Probeer eens het volgende :

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php 
session_start();

<HTML> 
<HEAD> 

</HEAD> 
<BODY> 
<FORM name="test" method="POST" action="testform2.php"> 
<B><h3>BOEKGEGEVENS</h3></B> 

<?php 

if( isset( $_SESSION['isbn'] ) ) {
    $isbn = $_SESSION['isbn'];
} else {
    $isbn = "";
}
?>

<input type=text maxlength="13" name="isbn" value="<?php echo $isbn ?>"> 

...


testform2.php: 

<?php

session_start();

echo "Hieronder de ISBN sessie variabele : <br>";
var_dump( $_SESSION['isbn'] );

?>


Kijk even of het duidelijk is wat ik doe en laat ook die outputbuffering even weg.

[ Voor 77% gewijzigd door Skinny op 03-03-2003 15:47 ]

SIZE does matter.
"You're go at throttle up!"


  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 25-07 08:41

kazz1980

Goh... Ik hier?

Topicstarter
Skinny schreef op 03 March 2003 @ 15:38:
PHP:
1
2
3
foreach($_POST AS $name => $value) {
      session_register("$name");
}
Dit staat niet in mijn start-post....
en ik snap ook niet echt wat het zou moeten doen.

hier stond iets interessants, maar het is even weg...


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Even als aanvulling op hierboven.

Mijn eerste reaktie gaat over het gebruik van

PHP:
1
if ( $_SESSION[$isbn] ) {


Dat gaat namelijk nooit werken, omdat $isbn (de variabele) leeg is en dus een ongeldige index voor de $_SESSION array is. Volgens mij zit daar je hele probleem.

Mogelijke oplossing :
[rml]Skinny in "[ PHP] Formulier en sessie variabelen pro"[/rml]

[ Voor 15% gewijzigd door Skinny op 03-03-2003 15:48 ]

SIZE does matter.
"You're go at throttle up!"


  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 25-07 08:41

kazz1980

Goh... Ik hier?

Topicstarter
Skinny schreef op 03 March 2003 @ 15:42:
Lees mijn reply hierboven eens. Die gaat over de "fouten" in het script dat je in je start-post gaf.


[edit]
Probeer eens het volgende :

PHP:
1
...


Kijk even of het duidelijk is wat ik doe en laat ook die outputbuffering even weg.
Dat is duidelijk.
Nog niet getest...maar werkt ongetwijfeld!

Alleen vraag ik mij nu af of het ook mogelijk is om een variabele op te slaan (en op te vragen) VOORDAT de submit-knop is ingedrukt....

Dat zou ik nl. heel graag hebben!

hier stond iets interessants, maar het is even weg...


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Je PHP script wordt pas aangeroepen als er een submit plaatsvindt (draait op de server nietwaar).

Wat wil je met die variable doen ? Een check uitvoeren of het een geldige waarde is ? Dan kan je bijvoorbeeld met JavaScript aan de slag. Daar een funktie voor maken en dan iets als

code:
1
2
3
<form ... onSubmit="return checkForm()">
..
</form>

[ Voor 20% gewijzigd door Skinny op 03-03-2003 16:09 ]

SIZE does matter.
"You're go at throttle up!"


  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
1. Dat gaat niet (imho)
2. Waarom zou je dat willen?

edit:
* Rotjeknor moet niet zo lui zijn en op quote drukken

[ Voor 41% gewijzigd door Rotjeknor op 03-03-2003 16:10 ]

Ook Knor is aangestoken met het ligfietsvirus!


  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 25-07 08:41

kazz1980

Goh... Ik hier?

Topicstarter
Ik wil dit om het volgende:
Bij aanroep van de link "Nieuw Genre" moet een deel van de ingevulde velden meegegeven worden. En, belangrijker, na invullen van een nieuw genre moeten die gegevens mee teruggenomen worden naar het oorspronkelijke formulier (via hidden velden)

hier stond iets interessants, maar het is even weg...


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Wordt toch een JavaScript verhaal. Bij het submitten van het formulier in de Genre Popup, verstuur je ook gelijk het complete formulier.

Je voegt een hidden variabele toe aan je hoofdformulier ( action ) en die zet je een bepaalde waarde met het javascriptje wat je uitvoert bij het sluiten van het popup venster. Het hoofdformulier laat je gewoon naar zichzelf posten, en laat je op basis van die 'action' variabele een beslissing nemen.

Je kan ook met JavaScript de 'action' property van het <form> zelf veranderen bij het sluiten van je popup, maar dan moet je maar even naar wat JavaScript references gaan kijken

[ Voor 33% gewijzigd door Skinny op 03-03-2003 16:19 ]

SIZE does matter.
"You're go at throttle up!"


  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 25-07 08:41

kazz1980

Goh... Ik hier?

Topicstarter
Skinny schreef op 03 March 2003 @ 16:17:
Wordt toch een JavaScript verhaal. Bij het submitten van het formulier in de Genre Popup, verstuur je ook gelijk het complete formulier.

Je voegt een hidden variabele toe aan je hoofdformulier ( action ) en die zet je een bepaalde waarde met het javascriptje wat je uitvoert bij het sluiten van het popup venster. Het hoofdformulier laat je gewoon naar zichzelf posten, en laat je op basis van die 'action' variabele een beslissing nemen.

Je kan ook met JavaScript de 'action' property van het <form> zelf veranderen bij het sluiten van je popup, maar dan moet je maar even naar wat JavaScript references gaan kijken
aah...ingewikkeld :/

hier stond iets interessants, maar het is even weg...


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Het valt an-sich mee hoor, maar je moet er even voor gaan zitten en ik weet niet hoe het met jouw JavaScript kennis is.

Als voorbeeld :

code:
1
window.opener.document.forms[0].submit();


Daarmee kan je dus in je popup zorgen dat het hoofdformulier ge-post wordt zonder dat er geklikt hoeft te worden. 1 regel code :)

SIZE does matter.
"You're go at throttle up!"


  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 25-07 08:41

kazz1980

Goh... Ik hier?

Topicstarter
code:
1
2
3
4
5
6
<input type=text maxlength="120" size="50" name="Author" class="button">&nbsp; 
<a href="auteur_zoeken.php" 
target="packets" onclick="window.open('auteur_zoeken.php', 'packets', 'toolbar=no,location=no,directories=no,status=no,
menubar=no,scrollbars=no,
resizable=no,width=275,height=200'); 
window.opener.document.test.submit();">Opzoeken</a>


Heb ik nu (test is de naam van het formulier).
Dit doet dus helemaal niks....(ook niet met forms[0])...

[ Voor 17% gewijzigd door kazz1980 op 06-03-2003 17:52 ]

hier stond iets interessants, maar het is even weg...


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

En toen was het php en toen was het javascript. moved -> w&g :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 25-07 08:41

kazz1980

Goh... Ik hier?

Topicstarter
window.opener.document.test.submit();"
Doet het geloof ik niet.
De pop-up opent prima. Maar de variabele is niet uit te lezen....Kortom....ben nog nergens :(

hier stond iets interessants, maar het is even weg...


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:17

crisp

Devver

Pixelated

Even een voorbeeldje, hopelijk heb je er wat aan:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Boek bestellen</title>
<script type="text/javascript">

function kiesAuteur() {

  var genre = document.forms['boeken'].elements['genre'].value;
  if (!genre) {
    alert('Kies eerst een genre');
  } else {
    window.open('auteurs.php?genre='+genre, 'auteurs', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=275,height=200');
  }

}

function kiesTitel() {

  var auteur = document.forms['boeken'].elements['auteur'].value;
  if (!auteur) {
    alert('Kies eerst een auteur');
  } else {
    window.open('titels.php?auteur='+auteur, 'titels', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=275,height=200');
  }

}

</script>
</head>
<body>
<form name="boeken" action="bestel.php" method="post">
Genre:
<select name="genre">
  <option value="">Kies een genre</option>
  <option value="thriller">thriller</option>
  <option value="misdaad">misdaad</option>
  <option value="lovestory">lovestory</option>
</select>
<a href="javascript://" onclick="kiesAuteur(); return false">Kies Auteur</a><br />
Auteur:
<input name="auteur" type="text" />
<a href="javascript://" onclick="kiesTitel(); return false">Kies Titel</a><br />
Titel:
<input name="titel" type="text" /><br /><br />
<input type="submit" value="Bestel" />
</body>
</html>


Nu wordt bijvoorbeeld auteurs.php aangeroepen met het genre als GET variabele, aan de hand daarvan kan auteurs.php bijvoorbeeld zo een pagina genereren:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Auteur zoeken</title>
<script type="text/javascript">

function selecteerAuteur(auteur) {

  opener.document.forms['boeken'].elements['auteur'].value = auteur;
  window.close();

}

</script>
</head>
<body>
Kies een auteur:<br /><br />
<a href="javascript://" onclick="selecteerAuteur('Stephen King');return false">Stephen King</a><br />
<a href="javascript://" onclick="selecteerAuteur('Robert Ludlum');return false">Robert Ludlum</a><br />
<a href="javascript://" onclick="selecteerAuteur('John Grisham');return false">John Grisham</a><br />
</body>
</html>

Intentionally left blank

Pagina: 1