Ingevulde waarde onthouden in php en doorgeven naar andere pagina.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Pascal Schuffelers

Pascal Schuffelers

14/08/2018 06:43:25
Quote Anchor link
Hallo allemaal,

Ik heb diverse tekst velden in een form staan, die na invullen onthouden moeten worden om door een andere pagina even worden uitgelezen om het af te drukken.

Nu weet ik niet of ik dat goed heb gedaan, aangezien die 2de pagina raar doet.

Ik had gelezen dat je dit moest doen met $session, dus heb ik dit gedaan.:

if (isset($_POST['submit'])){

$_SESSION['varname'] = $prodnr;

op mijn andere pagina roep ik die dan terug met

$prodnr = $_SESSION['varname'];

Nu is het zo vul ik mijn invul vakjes 1 en klik op submit zodat hij mijn andere pagina afdrukt met de ingevulde gegevens laat hij niets zien.
Sluit ik die pagina en klik ik weer op afdrukken , dan komt pas de waarden van mij erin.
Hij loopt zeg maar, altijd steeds achter, ik hoop dat ik dit een beetje goed uitleg voor jullie.

Gebruik ik nu iets fout waardoor dit gebeurd?
 
PHP hulp

PHP hulp

23/11/2024 10:39:24
 
- Ariën  -
Beheerder

- Ariën -

14/08/2018 08:31:21
Quote Anchor link
Waarom gebruik je geen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$_SESSION['varname'] = $_POST['varname'];

in de verwerking van je formulier?

Vergeet ook niet om dit altijd boven te zetten, anders laden je sessies niet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
session_start();
 
Rob Doemaarwat

Rob Doemaarwat

14/08/2018 09:17:12
Quote Anchor link
Kun je de code van beide pagina's eens posten (in ieder geval de belangrijkste stukken)?
 
Pascal Schuffelers

Pascal Schuffelers

14/08/2018 17:51:27
Quote Anchor link
Het zal wel een zooitje voor jullie zijn wat ik hier type maar ik probeer het uiteraard te snappen en te leren, eerst op mezelf (met hulp van google) en door jullie.

@- Ariën - :
session_start ();
heb ik inderdaad op beide pagina's staan.

en die $_post heb ik boven aan mijn pagina staan.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
  if (empty($_POST["prodnr"])) {
        $nameErr = "";
        }
else {
            $prodnr = test_input($_POST["prodnr"]);
            // check if name only contains letters and whitespace
            // if (!preg_match("/^[a-zA-Z ]*$/",$prodnr)) {
            //   $nameErr = "Only letters and white space allowed";
            // }

        }
?>


Zo ben ik het met zoeken via google tegen gekomen namelijk , maar of dat goed is is natuurlijk de vraag.
Ik zou haast zeggen , als ik iets invul en in geheugen zet, dat hij dat in een andere pagina direct ophaalt en niet pas bij de 2de keer.

@Rob Doemaarwat:

Dit is wat in mijn submit stukje staat.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
 //hier worden de variabelen van het briefje gegenereerd!!!
if (isset($_POST['submit'])){

    $_SESSION['varname'] = $prodnr;
    $_SESSION['varname2'] = $tijd;
    $_SESSION['varname4'] = $datum;
    $_SESSION['varname5'] = $agglosilo;
    $_SESSION['varname6'] = $flakeasilo;
    $_SESSION['varname7'] = $flakebsilo;
    $_SESSION['varname8'] = $peroxide;
    $_SESSION['varname9'] = $rec;
    $_SESSION['varname10'] = $test1;
    $_SESSION['varname11'] = $prod;
    $_SESSION['varname12'] = $batchnr;
    $_SESSION['varname13'] = $operator;
    $_SESSION['varname14'] = $fpsilo;
    $_SESSION['varname15'] = $flakea;
    $_SESSION['varname16'] = $flakeb;
    $_SESSION['varname17'] = $mvr;
    $_SESSION['varname18'] = $agglo;
    $_SESSION['varname19'] = $recycle;
    $_SESSION['varname20'] = $mvrstd;
    $_SESSION['varname21'] = $mfr;
    $_SESSION['varname22'] = $ash;
    $_SESSION['varname23'] = $order;
    $_SESSION['varname24'] = $kleurl;
    $_SESSION['varname25'] = $kleura;
    $_SESSION['varname26'] = $kleurb;
    $_SESSION['varname27'] = $vocht1;
    $_SESSION['varname28'] = $batchnrf1;
    $_SESSION['varname29'] = $plijn1;
    $_SESSION['varname30'] = $flakesoorta;
    $_SESSION['varname31'] = $vochtfa;
    $_SESSION['varname32'] = $kleurlf1;
    $_SESSION['varname33'] = $kleuraf1;
    $_SESSION['varname34'] = $kleurbf1;
    $_SESSION['varname35'] = $opmerkingf1;
    $_SESSION['varname36'] = $batchnrf2;
    $_SESSION['varname37'] = $plijn2;
    $_SESSION['varname38'] = $flakesoortb;
    $_SESSION['varname39'] = $vochtfb;
    $_SESSION['varname40'] = $kleurlf2;
    $_SESSION['varname41'] = $kleuraf2;
    $_SESSION['varname42'] = $kleurbf2;
    $_SESSION['varname43'] = $opmerkingf2;

//einde genereren van briefjes
 ?>


en in mijn testpagina roep ik die weer terug om van daaruit een echo te tonen.:

<?php
//hier worden de variabelen van het briefje gegenereerd!!!
  $prodnr = $_SESSION['varname'];
  $tijd   =$_SESSION['varname2'];
  $datum   = $_SESSION['varname4'];
 $agglosilo  = $_SESSION['varname5'];
 $flakeasilo  =$_SESSION['varname6'];
 $flakebsilo = $_SESSION['varname7'];
 $peroxide = $_SESSION['varname8'];
 $rec  = $_SESSION['varname9'];
 $test1 = $_SESSION['varname10'];
  $prod   =$_SESSION['varname11'];
  $batchnr   = $_SESSION['varname12'];
 $operator  = $_SESSION['varname13'];
 $fpsilo  =$_SESSION['varname14'];
 $flakea = $_SESSION['varname15'];
 $flakeb = $_SESSION['varname16'];
 $mvr  = $_SESSION['varname17'];
 $agglo = $_SESSION['varname18'];
   $recycle   =$_SESSION['varname19'];
  $mvrstd   = $_SESSION['varname20'];
 $mfr  = $_SESSION['varname21'];
 $ash  =$_SESSION['varname22'];
 $order = $_SESSION['varname23'];
 $kleurl = $_SESSION['varname24'];
 $kleura  = $_SESSION['varname25'];
 $kleurb = $_SESSION['varname26'];
    $vocht1   =$_SESSION['varname27'];
  $batchnrf1   = $_SESSION['varname28'];
 $plijn1  = $_SESSION['varname29'];
 $flakesoorta  =$_SESSION['varname30'];
 $vochtfa = $_SESSION['varname31'];
 $kleurlf1 = $_SESSION['varname32'];
 $kleuraf1  = $_SESSION['varname33'];
 $kleurbf1 = $_SESSION['varname34'];
  $opmerkingf1 = $_SESSION['varname35'];
    $batchnrf2   =$_SESSION['varname36'];
  $plijn2   = $_SESSION['varname37'];
 $flakesoortb  = $_SESSION['varname38'];
 $vochtfb  =$_SESSION['varname39'];
 $kleurlf2 = $_SESSION['varname40'];
 $kleuraf2 = $_SESSION['varname41'];
 $kleurbf2  = $_SESSION['varname42'];
 $opmerkingf2 = $_SESSION['varname43'];
?>
Gewijzigd op 14/08/2018 22:42:36 door - Ariën -
 
Rob Doemaarwat

Rob Doemaarwat

14/08/2018 18:02:30
Quote Anchor link
Ik hoop dat dit niet alles is, maar ik heb hier ook niet genoeg aan om er wat zinnigs van te kunnen zeggen ... (waar komt die $prodnr bijvoorbeeld vandaan?)

Wat is er overigens op tegen om
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$_SESSION['prodnr'] = $prodnr;

te doen? door al die varname's zie je de variabelen niet meer, en voor je het weet schiet je de verkeerde waarde in de verkeerde variabale ...
 
Pascal Schuffelers

Pascal Schuffelers

14/08/2018 22:34:53
Quote Anchor link
$prodnr komt hier uit.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td><input type="text" name="prodnr"  STYLE="width: 10em" value="<?php echo $prodnr;?>"><span class="error">* <?php echo $nameErr;?></span></td>  



Hoe zou jij dat dan doen?
Gewijzigd op 14/08/2018 22:41:54 door - Ariën -
 
Rob Doemaarwat

Rob Doemaarwat

14/08/2018 22:39:54
Quote Anchor link
Hier komt ie niet uit. Hier echo je 'm weer terug in de HTML, zodat ie in het input veld komt te staan (de waarde). Ik bedoel meer: waar wordt ie bepaald. Ergens moet iets staan van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$prodnr = ...
(en dan ben ik dus benieuwd wat er op de puntjes staat; en waar dat staat tov bovenstaande lappen code).
 
Pascal Schuffelers

Pascal Schuffelers

15/08/2018 06:10:34
Quote Anchor link
$prodnr = test_input($_POST["prodnr"]);

Boven in het script staat hij.
 
Paul Ulje

Paul Ulje

15/08/2018 16:30:16
Quote Anchor link
Pascal,

Wat je wilt is, denk ik, de invulvakjes van het formulier onthouden.
Die invulvakjes worden de $_POST['name_van_het_vakje'], bijvoorbeeld $_POST['artikelnr'].
Om alle invulvakjes (input text) gemakkelijk in sessievariabelen te onthouden zou ik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
foreach ($_POST as $key => $val)
  $_SESSION[$key] = $val;

gebruiken. Je kunt ze daarna in alle andere pagina's gebruiken als bijvoorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
print $_SESSION['artikelnr']

Voor radiobuttons en checkboxes wordt het iets ingewikkelder.
Je kunt de tekstvelden ook allemaal in een array zetten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
foreach ($_POST as $key => $val)
  $aP[$key]=$val;
$_SESSION['tekstvelden] = $aP;
# andere pagina..
$aT=$_SESSION['tekstvelden];
print $aT['artikelnr'];
 
Pascal Schuffelers

Pascal Schuffelers

15/08/2018 19:04:11
Quote Anchor link
@paultje.
Je vermeld deze code.:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
foreach ($_POST as $key => $val)
  $_SESSION[$key] = $val;


als ik meerdere waarde terug wil halen moet het dan zoiets worden?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
foreach ($_POST as $key => $val)
  $_SESSION[$key] = $val;
$_SESSION[$key] = $val2;

enz?

Ik heb een mooie rustige layout en alles netjes ingedeeld op de pagina, maar als ik naar jullie kijk , voel ik mij een prutser en geen idee meer hoe verder te gaan :'(

moet dan in mijn geval zo dan?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if (isset($_POST['submit'])){
   foreach ($_POST as $key => $val)
    $_SESSION[$key] = $val;
Gewijzigd op 15/08/2018 19:21:31 door Pascal Schuffelers
 
- Ariën  -
Beheerder

- Ariën -

15/08/2018 19:20:36
Quote Anchor link
Nee, je hebt nu bijv. in $_SESSION['tekstveld'] de waarde van $_POST['tekstveld'] staan.
Die code van Paultje is enkel wat je nodig hebt, als je alles in de sessie op wilt slaan.

Het doorloopt je hele $_POST array, en plaatst de key's en waardes in een $_SESSION-global als array.

Ik hoop dat je niet echt onduidelijke namen als varname31, varname32, varname33 gaat gebruiken. Want weet je straks nog wat voor inhoud er in welke variabele zit? Houd je daarom vast aan duidelijke naamgeving.
Gewijzigd op 15/08/2018 19:21:50 door - Ariën -
 
Pascal Schuffelers

Pascal Schuffelers

15/08/2018 19:23:08
Quote Anchor link
@Ariën:
Ik zal de boel dezelfde naam geven zodat het duidelijker word.
 
Thomas van den Heuvel

Thomas van den Heuvel

15/08/2018 19:24:35
Quote Anchor link
$_POST bevat alleen informatie als je een POST request naar de server stuurt, dus wanneer je een formulier submit. Daarna (elke daaropvolgende request) is $_POST weer leeg. Dat is ook -mede- de reden dat het verwerken van de formulier-submit in een aparte stap wordt opgenomen, waarna je direct weer wordt doorgestuurd. Dit wordt ook wel het post/redirect/get patroon genoemd.

En dan zijn er nog allerlei randgevalletjes waar waarden mogelijk niet bestaan zoals @Paul al aangaf, niet aangevinkte checkboxen (en radiobuttons? weet ik niet zeker eigenlijk maar klinkt logisch) komen na formulierverzending in het geheel niet voor in $_POST!

Om het overzicht te bewaren is het mogelijk een idee om het een en ander op te delen in verschillende acties (of zelfs aparte bestanden), bijvoorbeeld:
- een apart(e actie/) bestand voor het formulier
- een apart(e actie/) bestand voor de validatie en verwerking
op grond van het resultaat van de validatie kun je een gebruiker terugsturen naar het formulier met foutmeldingen, of het formulier verwerking in de vorm van een mailtje, entry in de database et cetera, waarna je wordt doorgestuurd naar een bedankpagina ofzo.

Elk bestand waarin je sessies wenst te gebruiken dien je te starten/te voorzien van session_start(). Vervolgens kan het ook geen kwaad om eens een en ander stap voor stap te debuggen, zodat je goed kunt volgen wat er zoals in $_SESSION en $_POST zit. Ik denk dat als je alles stap voor stap aanpakt, en je je op elk moment (uitsluitend) op de volgende stap richt, je uiteindelijk makkelijk bij je eindbestemming en -resultaat kunt geraken. Mocht je daar vragen over hebben, daar is dit forum voor.

Maar allereerst, een kleine organisatie van de deelproblemen en het opdelen in stukken kan denk ik al veel bijdragen aan het overzicht. We kunnen dan ook veel beter inzoomen op de deelproblemen en het oplossen daarvan.
Gewijzigd op 15/08/2018 19:25:42 door Thomas van den Heuvel
 
Pascal Schuffelers

Pascal Schuffelers

15/08/2018 19:38:25
Quote Anchor link
Oke , snap er nog helaas niet veel van wat je uitlegt @Thomas ondanks je super goede bedoelingen.

Ik heb dit dus in mijn tabel.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
  <td><input type="text" name="prodnr"  STYLE="width: 10em" value="<?php echo $prodnr;?>"><span class="error">* <?php echo $nameErr;?></span></td>


in mijn submit heb ik dan (namen aangepast).:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if (isset($_POST['submit'])){
     $_SESSION['prodnr'] = $prodnr;
    $_SESSION['tijd'] = $tijd;
    $_SESSION['datum'] = $datum;
    $_SESSION['prod'] = $prod;


In diezelfde pagina heb ik boven aanstaan.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
session_start();


Wat moet nu dan want ik kom even nu niet uit al jullie goede bedoelingen.

BTW voor ik het vergeet.
Op het laatste van de pagina heb ik staan.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<script>$('#k1').click(function(){
    $("#k2").click();
})</script>


Om een extra button klik te krijgen naar de pagina waar dus alles ingevuld zou moeten worden om dan af te drukken.
Gewijzigd op 15/08/2018 19:55:31 door Pascal Schuffelers
 
- Ariën  -
Beheerder

- Ariën -

15/08/2018 19:59:25
Quote Anchor link
Je hoeft niet zelf je $_SESSION klaar te stomen. Dat doet die foreach van Paultje wel.
je kan die $_SESSION['woonplaats'] gewoon in je formulier aanroepen. Controleer wel netjes met isset() of deze bestaat.
 
Pascal Schuffelers

Pascal Schuffelers

15/08/2018 20:09:57
Quote Anchor link
@Ariën:

Dus die sessions wat ik heb weghalen en dat van @Paultje overnem?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if (isset($_POST['submit'])){
   foreach ($_POST as $key => $val)
    $_SESSION[$key] = $val;


of moet ik daar nog iets in aanpassen?

Ondertussen heb ik wel een workaround gevonden en die doet wat ik wil, maar niet wat ik van jullie wil leren uiteraard.

Door die 2de pagina in het begin met.:


window.onload = function() {
if(!window.location.hash) {
window.location = window.location + '#loaded';
window.location.reload();
}
}


Eenmaal te laten refreshen krijg ik wel alles goed te zien.
Maar nogmaals ik wil snappen wat jullie mij willen leren.
Gewijzigd op 15/08/2018 20:12:08 door Pascal Schuffelers
 
- Ariën  -
Beheerder

- Ariën -

15/08/2018 20:26:55
Quote Anchor link
Jep, die code van paultje is prima.
Sessions worden dan automatisch gemaakt.
 
Paul Ulje

Paul Ulje

15/08/2018 20:37:55
Quote Anchor link
Pascal,

Wat je wilt is alle $_POST variabelen van het formulier in de $_SESSION bewaren.

Met de foreachloop wordt voor elke $_POST variabele een gelijknamige sessievar aangemaakt met de doorgegeven waarde. Bestaat die sessievar al, dan wordt hij gewoon 'overschreven'.
Je hebt dan in één keer 'alles' bewaard en kan de sessievars verder overal opreoepen en gebruiken.
Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
if (isset($_POST['submit'])){
   foreach ($_POST as $key => $val)
    $_SESSION[$key] = $val;
# overal...
print $_SESSION['artikelnr'];
print $_SESSION['userid'];
# etc...
 
Pascal Schuffelers

Pascal Schuffelers

15/08/2018 20:56:39
Quote Anchor link
Oke @Paultje , dit lijk ik wel te snappen, zal het eens testen en laat het daarna weten of het mij gelukt is.
 
Rob Doemaarwat

Rob Doemaarwat

15/08/2018 20:57:57
Quote Anchor link
Ik vind 'm wel een beetje "eng". Stel dat je in je sessie ook opslaat of iemand wel/niet ingelogd is, of wat z'n rechten zijn. Met deze constructie kun je die als "gebruiker" gewoon overschrijven (even via de browser een input veldje aan het formulier toevoegen met de juiste waarde).
 
Pascal Schuffelers

Pascal Schuffelers

15/08/2018 21:08:08
Quote Anchor link
Inderdaad @Paultje alle VARS worden overgenomen, scheelt een hoop werk zo :)

Alleen die refresh op die 2de pagina heb ik toch nog nodig anders loopt hij achter.
Zou kunnen zijn omdat ik de form op de eerste pagina begin met.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" onsubmit="return checkForm(this);">


als ik namelijk iets anders zou gebruiken verdwijnt mijn 1ste pagina en die moet wel blijven staan.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.