Hallo beste PHP liefhebbers,

Ik heb een vraag betreffende het maken van een array, die gevuld wordt naar aanleiding van de vooraf aan gevinkte opties.

Dit is het programma:

<?php
session_start();
/*
 * De naam van het programma: Test_Label_array.php
 * De ontwikkelingsdatum: 2018-07-09
 * De naam van de auteur: 
 *
 * De edit opleverings datum:
 * De naam van de editor:
 *
 * versie nummer: 0.1
 *
 * De beschrijving van het programma:
 * Vult de array $labels
 */
?>
<html>
    <head>
        <title>vult array $labels</title>
        <meta charset="UTF-8">
        <meta name="Login" content="width=device-width, initial-scale=1.0">
        <meta "description" content="Test programma om label array te vullen.">
        <meta name="author" content="naam">
	</head>

	<body>
	<?php
		
		/* Gewenste data definitie: ongewenst=0 gewenst=1 */
		$_SESSION['fam_user_name']=1;
		$_SESSION['fam_e_mail']=0;
		$_SESSION['fam_passwd']=0;
		$_SESSION['fam_street']=0;
		$_SESSION['fam_complex_no']=1;
		$_SESSION['fam_birth_date']=0;
		/* checkbox invoer j/n */
		$_SESSION['checkbox_1']=1;
		$_SESSION['checkbox_2']=0;

/* Maak een labels array met alle formulier velden handmatig (dit werkt!). */
/* $labels = array('user_name' => 'Familie_naam',
'complex_no' => 'Complex_nummer',
'sfinx_new' => 'Sfinx_complex'); */

		/* Maak een optioneel labels array met alle keuze velden, */
		/* die in het formulier moeten voorkomen.                 */
		
		/* $opties_aan="(";*/ /* Voeg haakje open toe */

        if ($_SESSION['fam_user_name']<>0) {
        	$opties_aan=$opties_aan."'user_name' => 'Familie_naam',";
        }
        if ($_SESSION['fam_e_mail']<>0) {
        	$opties_aan=$opties_aan."'e_mail' => 'mailadres',";
        }
        if ($_SESSION['fam_user_passwd']<>0) {
        	$opties_aan=$opties_aan."'passwd' => 'paswoord',";
        }
        if ($_SESSION['fam_street']<>0) {
        	$opties_aan=$opties_aan."'street' => 'straat',";
        }
        if ($_SESSION['fam_complex_no']<>0) {
        	$opties_aan=$opties_aan."'complex_no' => 'Complex_huisnummer',";
        }
        if ($_SESSION['fam_birth_date']<>0) {
        	$opties_aan=$opties_aan."'birth_date' => 'Geboortedatum',";
        }
        if ($_SESSION['checkbox_1']<>0) {
        	$opties_aan=$opties_aan."'sfinx_new' => 'Sfinx_complex',";
        }        
        if ($_SESSION['checkbox_2']<>0) {
        	$opties_aan=$opties_aan."'boxtekst2' => 'Boxtekst2',";
        }          
        /* Haal laatste comma weg  */
		$opties_aan = substr_replace($opties_aan,"",-1);
		
		/* $opties_aan = $optie_aan.")"; */ /* Voeg haakje sluiten toe */
		/* $labels = array.$opties_aan */
		

$labels = array ($opties_aan); /* dit werkt niet!!!!! */

		echo "Dit is de inhoud van de string: ".$opties_aan."<br><br>";
		echo "Dit zijn de veldnamen en inhoud van de velden:<br>";
		foreach ($labels as $field => $value) {
			echo "Naam van veld: ".$field." Inhoud van veld: ".$value."<br>" ;
		}
    ?>
    </body>
</html>

Wat zegt [php]var_dump[/php] over $opties_aan? en over $labels?
Deze functie is ideaal om te debuggen en dus ook om te kijken wat voor datatype en waarde er in een variabele zitten.
Waarom maak je van $opties_aan niet direct een array? Nu is het een hele lange string met het uiterlijk van een array?

Ik zou eerder iets verwachten in de trant van:
<?php
if (array_key_exists('fam_user_name', $_SESSION) {
    $opties_aan['user_name'] = 'Familie_naam';
}
?>

Ook loont het de moeite om de index-namen van de sessie en $opties_aan gelijk te stellen, zodat je zoiets kunt doen:
<?php
foreach (array(
    'fam_user_name' => 'Familie_naam',
    'fam_email' => 'mailadres',
    // et cetera
) as $k => $v) {
    if (array_key_exists($k, $_SESSION)) {
        $opties_aan[$k] = $v;
    }
}
?>
Geeft de zelfde output als die ik zelf al gemaakt had om te zien wat er in de variabele stond. Sorry Arien!

[size=xsmall]Toevoeging op 09/07/2018 16:03:38:[/size]

Thomas, bedankt voor je reactie.
Deze oplossing, begrijp ik nog niet helemaal.
Ik neem even de tijd om dit uit te werken en te begrijpen.
Daarna kom ik er op terug.
Ik hoop dat mij dit helpt, zo niet, dan ligt het niet aan jou maar aan mij zelf en begrijp ik het niet.
Het heeft gelukkig geen haast, dus studeren maar even!
vriendelijke groet,
Gerard


[size=xsmall]Toevoeging op 10/07/2018 01:27:30:[/size]

Thomas,
Bedankt voor je goede opmerking, ik heb er nu rechtstreeks een array van gemaakt en het werkt.
Ook via jou voorbeeld zag ik hoe je de array kon vullen, dat wist ik niet dat dit zo mogelijk was.
Ik kan weer verder.
Zie onderstaand:
<?php
session_start();
/*
* De naam van het programma: Test_Label2_array.php
* De ontwikkelingsdatum: 2018-07-09
* De naam van de auteur: G.J. de Brieder Sr.
*
* De edit opleverings datum:
* De naam van de editor:
*
* versie nummer: 0.02
*
* De beschrijving van het programma:
* Test de inhoud van array $labels
*/

/* Gewenste data definitie: ongewenst=0 gewenst=1 */
$_SESSION['fam_user_name']=1;
$_SESSION['fam_e_mail']=0;
$_SESSION['fam_passwd']=0;
$_SESSION['fam_street']=0;
$_SESSION['fam_complex_no']=1;
$_SESSION['fam_birth_date']=0;
/* checkbox invoer j/n */
$_SESSION['checkbox_1']=1;
$_SESSION['checkbox_2']=0;

/* Maak een optioneel labels array met alle keuze velden, */
/* die in het formulier moeten voorkomen (Nu is dat: */
/* user_name, complex_no en een checkbox_1) */

$opties_aan=array ();
if ($_SESSION['fam_user_name']==1) {
$opties_aan['user_name'] = 'Familie_naam';
}
if ($_SESSION['fam_e_mail']==1) {
$opties_aan['e_mail'] = 'Mailadres';
}
if ($_SESSION['fam_passwd']==1) {
$opties_aan['passwd'] = 'Paswoord';
}
if ($_SESSION['fam_street']==1) {
$opties_aan['street'] = 'Straat';
}
if ($_SESSION['fam_complex_no']==1) {
$opties_aan['complex_no'] = 'Huisnummer';
}
if ($_SESSION['fam_birth_date']==1) {
$opties_aan['birth_date'] = 'Geboortedatum';
}
if ($_SESSION['checkbox_1']==1) {
$opties_aan['sfinx_new'] = 'Sfinx_complex';
}
if ($_SESSION['checkbox_2']==1) {
$opties_aan['checkbox_2'] = 'Checkbox2';
}
echo "Dit is de inhoud van de string: ".$opties_aan."<br><br>";
echo "Dit zijn de veldnamen en inhoud van de velden:<br>";
foreach ($opties_aan as $field => $value) {
echo "Naam van veld: ".$field." Inhoud van veld: ".$value."<br>" ;
}

?>

Reageren