Beste allemaal ik heb een vraagje over het meenemen van variabelen naar een volgende pagina.

Uit een database haal ik een rij namen op die worden gekoppeld aan o.a. enkele dropdownvelden. Deze velden krijgen een 'name' die wordt gehaald uit een variabele.


echo '<td><select name="Voertuig_'.$row['Pers_ID'].'">
				<option value="BR20-1">BR 20-1</option>
				<option value="TS22-1">TS 22-2</option>
				<option value="TS22-3">TS 22-3</option>
				<option value="MP22-1">MP 22-1</option>
				<option value="OPL1">OPL1</option>
				<option value="OPL2">OPL2</option>
				<option value="Overig">Overig</option>
			</select>';


$row['Pers_ID'] = dus uit een database opgehaald. Op deze manier krijgt elk veld een eigen naam.

Nu wil ik de keuze van elk veld meenemen naar een volgende pagina die een overzicht toont van alles wat is ingevuld.

Ik heb dat als volgt geprobeerd:

<?
session_start();
?>

in het basis formulier samen met

<form action="test.php" method="post">


in test.php heb ik dan geprobeerd met

<?
session_start();
?>

en

<?
$aFormulierVelden = array('SrtAct','Omschr','Bdag', 'Buur', 'Voertuig_'.$row['Pers_ID']');
?>

de waarden van de velden mee te nemen.
Dat lukt dus niet voor Voertuig_'.$row['Pers_ID']

Ik heb ook geprobeerd de waarde van Voertuig_'.$row['Pers_ID'] in een nieuwe variabele te krijgen maar ook de waarde daarvan blijft geen resultaat geven met $_SESSION.

Heeft iemand een idee?
Gegevens uit een formulier meenemen naar een volgende pagina kan simpel met de juiste action in je formulier.

Dus:

<form action="paginawaardevariabelenzichtbaarmoetenzijn.php" method="post">
... Hier je formulieronderdelen
</form>

Wanneer het formulier gesubmit is (controleren met if($_SERVER['REQUEST_METHOD'] == 'POST') ) kan je de array $_POST uitlezen.

Dus de pagina "paginawaardevariabelenzichtbaarmoetenzijn.php" wordt dan zoiets als:

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {

print_r($_POST);

}

?>

Edit: Sessies kan je gebruiken om binnen één sessie (logisch) gegevens te onthouden over meerdere pagina's (let wel op de veiligheid).
Zoals ik zei, ga normaliseren. Dat voertuig_huppeldepup komt uit je database, dat klopt niet.
Verder moet Maarten gewoon naar [php]echo[/php] en [php]string[/php] kijken.
Karl Karl op 12/04/2011 19:38:25

Zoals ik zei, ga normaliseren. Dat voertuig_huppeldepup komt uit je database, dat klopt niet.
Verder moet Maarten gewoon naar [php]echo[/php] en [php]string[/php] kijken.


Dat voertuig_huppeldepup komt niet uit de database naar mijn inziens. Dit is alleen bedoeld om elke selectbox een unieke naam te geven aan de hand van een prefix en de id van data. Dit hoeft niet per definitie fout te zijn.
Wat Arjan zegt is inderdaad het geval. Het formulier toont een lijst met namen, die wel uit de database komen, met daar achter een aantal velden die gevuld moeten worden waaronder dus een voertuig dat uit een dropdownlist gekozen moet worden. Dit is een vastgestelde lijst (juist om te standaardiseren Karl :-).
Elke dropdownlist wordt d.m.v. dat huppeldepup gedoe voorzien van een unieke naam die overeenkomt met de id van de persoon die er voor staat.

Met de tip van Arjan zie ik in ieder geval dat dit wel werkt.
Bij persoons id 122684 hoort bijvoorbeeld:
[Ingezet_122684] => J
[Voertuig_122684] => BR20-1
[Functie_122684] => B
[BTijd_122684] =>
[ETijd_122684] =>
En bij persoons id 122689 hoort:
[Ingezet_122689] => J
[Voertuig_122689] => TS22-1
[Functie_122689] => 1

Dit ga ik opslaan in de database.
Voordat het naar de db gaat wil ik het op een nieuwe pagina laten zien voor controle en eventueel printen.
Het probleem is dat ik bijvoorbeeld de waarde van [Voertuig_122689] => TS22-1 niet uit de $_POST kan halen met

$aFormulierVelden = array('SrtAct','Omschr','Bdag', 'Buur', 'Voertuig_'.$row['Pers_ID']');

Waarom wil je de gegevens weer naar een andere pagina exporteren? Waarom kan het niet op dezelfde pagina afgehandeld worden?
Kan ik die netjes laten printen dan met al die vakjes en zo?
Ik vind het mooier om alles netjes als 'platte tekst' te tonen en te printen.
Ja dat kan. Een print_r geeft alleen weer welke waarden de array bevat. Dit is dus ook alleen voor de ontwikkelingsfase geschikt.

Je kan gewoon het volgende doen:

<?php
if(is_array($_POST) AND count($_POST) > 0){

foreach($_POST AS $key => $value) {

echo '<strong>'.$key.':</strong> '.$value.'<br />';

}


}

?>

Misschien een idee om een blik te werken op http://php.net/manual/en/language.types.array.php

Een $_POST variabale is niets anders dan een array die de waarden bevat van een POST request.
Zie hier het verschil.
Dit is de bedoeling:
http://www.greeve1.nl/Brandweer/Presentielijst%206-3-2011_14_57.pdf

Zo wordt het als ik de pagina afdruk zonder verdere bewerking:
http://www.greeve1.nl/Brandweer/VG%20Post%20Frobenstraat%20nieuwe%20presentielijst.pdf

Toevoeging op 12/04/2011 21:14:53:

Misschien een idee om een blik te werken op http://php.net/manual/en/language.types.array.php

Een $_POST variabale is niets anders dan een array die de waarden bevat van een POST request.


Dit had ik allemaal gelezen en dit is mee ook duidelijk.
Nu moet ik het alleen nog allemaal netjes weergeven.
Paul Greeve op 12/04/2011 20:46:36

Zie hier het verschil.
Dit is de bedoeling:
http://www.greeve1.nl/Brandweer/Presentielijst%206-3-2011_14_57.pdf

Zo wordt het als ik de pagina afdruk zonder verdere bewerking:
http://www.greeve1.nl/Brandweer/VG%20Post%20Frobenstraat%20nieuwe%20presentielijst.pdf



Wat wil je precies, want voor jou is het misschien allemaal duidelijk wat je wilt, maar voor ons (lees: mij) is dat allerminst. Als je goed doorhebt wat een array inhoudt en hoe een array opgebouwd is, dan zal je ook wel een begin kunnen maken met het opnieuw indelen van de array waarmee je de data in de goede volgorde zet zodat je deze eenvoudig kan uitlezen.

Je kan ook in je naam van je selectbox meteen een arraynotatie opgeven, zodat de uitkomst automatisch in een array wordt gezet.

Zoals:

<select name="ingezet[<?php echo $row['Pers_ID'];?>]">

</select>

<select name="voertuig[<?php echo $row['Pers_ID'];?>]">

</select>


Let op: Hierbij moet $row['Pers_ID'] altijd een unieke integer zijn!

$_POST['naamvanselectbox'] zal dan een array bevatten met de verschillende waarden. Dit heeft als voordeel dat het eenvoudiger is om uit te lezen en om bewerkingen uit te voeren.

Uitlezen kan dan met (exclusief de nodige controles!):

<?php
foreach($_POST['ingezet'] AS $key => $value) {

echo 'Pers_ID: '.$key.' & VALUE: '.$value.'<br />';

}
?>

Edit: Ik heb je formulier even realtime bekeken en ik raad je aan om mijn laatste advies op te volgen (het gebruik van arrays).

Om dan alles per pres_id te ordenen kan je de $_POST array doorlopen:

<?php

$new_array = array();

foreach($_POST['ingezet'] AS $key => $value) {

$new_array[$key]['ingezet'] = $value;

}

foreach($_POST['voertuig'] AS $key => $value) {

$new_array[$key]['voertuig'] = $value;

}

print_r($new_array);

?>
Arjan, dat ziet er inderdaad veel logischer en ook eenvoudiger uit.
Ik denk dat ik hier wel mee verder kan.
Echt heel erg bedankt voor de moeite en je tijd!

Ik heb hier veel van geleerd.

@ Karl: Zo kan het ook :-)

Reageren