On array jonka näytän select multiplena jotta siitä voisi valita haluamansa:
[0] => aaa
[1] => bbb
[2] => ccc
No kun valinnat on tehty niin ne tallenetaan:
foreach ( $_POST['menu'] as $k ){
$menu .= $k.",";
}
Eli jos on kaikki valittu niin loppu muoto on "aaa,bbb,ccc,". No nyt jos sitten tallennankin vain 2 kohdan on loppu muoto "ccc,".
Kysynkin siis oisko mahdollista jotenkin saada kaikki pilkut näkyviin oikeaan järjestykseen vaikka vain yksi kohta olisi valittu? Eli siis näin ",,ccc," tai "aaa,,,"? Itselläni ei enään leikkaa.
[0] => aaa
[1] => bbb
[2] => ccc
No kun valinnat on tehty niin ne tallenetaan:
foreach ( $_POST['menu'] as $k ){
$menu .= $k.",";
}
Eli jos on kaikki valittu niin loppu muoto on "aaa,bbb,ccc,". No nyt jos sitten tallennankin vain 2 kohdan on loppu muoto "ccc,".
Kysynkin siis oisko mahdollista jotenkin saada kaikki pilkut näkyviin oikeaan järjestykseen vaikka vain yksi kohta olisi valittu? Eli siis näin ",,ccc," tai "aaa,,,"? Itselläni ei enään leikkaa.
Vastaukset 6
Vanhimmat
$array = array('aaa', 'bbb', 'ccc');
$menu = "";
for($i = 0; $i < current($_POST['menu']); $i )
$menu .= ",";
foreach($_POST['menu'] as $m)
if(isset($array[$m]))
$menu .= $array[$m].",";
for($i = end($_POST['menu']); $i < sizeof($array) - 1; $i )
$menu .= ",";
hm-m, kokonaiset 3(!!!) silmukkaa simppelin tehtävän suorittamiseen :)
http://fi2.php.net/manual/en/function.implode.php
http://fi2.php.net/manual/en/function.in-array.php
jos edellinen vastaukseni oli jäänyt epäselväksi:
> $input = array('ccc','aaa');
Vai $input = array(2,0);
Kiitos vaan molemmille mutta sain sen jo toimimaan
global $final_menu,$menu;
$array = array('aaa', 'bbb', 'ccc');
foreach ( $_POST['menu'] as $m )
$menu[$m] = $m;
foreach ( $array as $n )
if ( isset ( $menu[$n] ) && $menu[$n] == $n ) $final_menu .= $n.",";
else $final_menu .= ",";
echo $final_menu;
Sitä en tiedä voisko ton tehdä järkevämminkin mutta ainakin ajaa asiansa.
>>> Vai $input = array(2,0);
Sori, mutta mitä tarkoitit ?!