[ sekvoja @ 25.10.2009. 23:22 ] @
Zdravo dobri ljudi :)

Muci me prihvatanje multiple select forme u php skripti...

Code:
<form action="/form.php" method="post">
    <select name="test[]" multiple="multiple">
    <option value="one">one</option>
    <option value="two">two</option>
    <option value="three">three</option>
    <option value="four">four</option>
    <option value="five">five</option>
    </select>
    <input type="submit" value="Send" />
</form>

U PHP-u imam skriptu
Code:
$test = $_POST['test'];

if($test){
    foreach($test as $t){
        echo 'You selected '.$t.'<br />';
    }
} else {
    echo "Choose one or more items";
}

Uporno dobijam Invalid argument supplied for foreach()...
[ roopix @ 25.10.2009. 23:48 ] @
A cuj, ovo ti kod mene radi normalno, bez gresaka.
[ sekvoja @ 26.10.2009. 00:02 ] @
Neverovatno, u cemu bi mogao biti problem?
Ne znam gde da gledam...

Kada isprintam print_r($test); dobijem samo "Array", bez ikakvih vrednosti...

[Ovu poruku je menjao sekvoja dana 26.10.2009. u 01:12 GMT+1]
[ sekvoja @ 26.10.2009. 01:08 ] @
Problem je bio u tome sto na pocetku skripte koja prihvata formu
proveravam da li je ukljucena f-ja get_magic_quotes:
Code:
if(get_magic_quotes_gpc()) {
    foreach($_POST as $key => $val) {
        $_POST[$key] = stripslashes($val); 
    }
}


Kako sada da uradim stripslashes za svaki elemenat u $_POST['test']?
[ Man-Wolf @ 26.10.2009. 08:33 ] @
http://php.net/manual/en/function.stripslashes.php:

Example #2 Using stripslashes() on an array:

Code:

<?php
function stripslashes_deep($value)
{
    $value = is_array($value) ?
                array_map('stripslashes_deep', $value) :
                stripslashes($value);

    return $value;
}

// Example
$array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar"));
$array = stripslashes_deep($array);

// Output
print_r($array);
?>


Output:

Citat:

Array
(
[0] => f'oo
[1] => b'ar
[2] => Array
(
[0] => fo'o
[1] => b'ar
)

)
[ Nikola Poša @ 26.10.2009. 09:29 ] @
Ja skoro uvek o bootstrap fajlu, odnosno, u tom nekom inicijalnom, imam sledeće linije koda, upravo za slučaj da je opcija magic_quotes uključena na serveru, a da pritom nije moguće njeno isključivanje, čak ni .htaccess-om:
Code:
if (get_magic_quotes_gpc()) {
    function stripslashes_gpc(&$value)
    {
        $value = stripslashes($value);
    }

    if (isset($_GET)) { array_walk_recursive($_GET, 'stripslashes_gpc'); }
    if (isset($_POST)) { array_walk_recursive($_POST, 'stripslashes_gpc'); }
    if (isset($_COOKIE)) { array_walk_recursive($_COOKIE, 'stripslashes_gpc'); }
}

Tako sam siguran da ću na svakom zahtevu dobiti "čiste" vrednosti...