In het vlg script wordt een menu dmv select option gemaakt, de waarden in de reeks moeten via echo op het scherm komen. Dit script werkt wel, maar er staat een hinderlijke foutmelding op het scherm te wijten aan deze opdrachtregel: if (in_array($_POST['category'], $map))

waardoor wordt deze foutmelding veroorzaakt?


  <?php
    $map = array('cherry', 'mango', 'kiwi');
      ?>
       <form method="post">
    <select name="category">
    <?php foreach ($map as $value) : ?>					
        <option value="<?php echo $value ?>"><?php echo $value ?></option> 	
    <?php endforeach; ?>
    </select>
    <input type="submit" value="submit" />
    </form>
    <?php
     if (in_array($_POST['category'], $map)) 
                        {				
    echo 'Clients enjoy  eating a ' . $_POST['category'];				 
                        }
     ?>        

Hee Eddy, leuke variant maar ik zou het dan zo gedaan hebben:

<?php

function get($string, $default = '')
{
if (isset($_GET[$string]))
{
return $_GET[$string];
}
if (isset($_POST[$string]))
{
return $_POST[$string];
}
if (isset($_COOKIE[$string]))
{
return $_COOKIE[$string];
}

return $default;
}
Kan inderdaad ook. Dat is wel handig.
Ik zat nog te denken om een $string=="id" gelijk te intval() te geven, maar dat is ook niet altijd wenselijk.
Want dan wordt het weer te complex. Je zou dan ook een type kunnen meegeven aan get(), bijvoorbeeld get("topicid", 0, "int");, maar dan wordt het niet echt makkelijker.
<?php
$naam = get($naam);
?>

En wat als $naam dus nog niet bestaat? => Melding Notice.

<?php
$naam = get('naam');
?>

Lijkt mij dan beter.
Ja, uiteraard. Stom.
Ik dacht even dit te maken:

<?php
error_reporting(E_ALL);

function get($string, $default = '')
{

if (isset($_GET[$string]))
{
$return = $_GET[$string];
}
elseif (isset($_POST[$string]))
{
$return = $_POST[$string];
}
elseif (isset($_COOKIE[$string]))
{
$return = $_COOKIE[$string];
}
else
{
$return = $default;
}

${$string} = $return;

echo 'Aangemaakte variabele: <b> $' . $string . ' = "' . $return . '";</b>';
global ${$string};
//return;

}

get('naam');

echo "<br><br>Ik heet " . $naam;
?>

Maar die laatste regel (met "Ik heet $naam") werkt niet...
Test via www.zundappforum.com/test.php?naam=erik

[size=xsmall]Toevoeging op 18/05/2015 22:28:05:[/size]

Mijn vraag is: waarom niet?

Al kan dit wellicht beter in een ander topic?
Kijk nog eens goed naar de voorbeelden hierboven.

Jij hebt nu $return maar geen return.

En als je de function aanroept moet je het in een variabele stoppen.
> Mijn vraag is: waarom niet?

Omdat je ${$string} pas global maakt nadat je hem een waarde hebt gegeven.
Als je de global meteen aan het begin van je functie zet, werkt het wel.

Reageren