Koitan saada monivalintaruksit formiin valittua päälle siten, että $koetulokset sisältää valittavat kohteet ja $koetunnus listaa kaikki mahdolliset ruksittavat kohteet. Ainoastaan ensimmäinen checkbox saa nyt ruksin.
<select name="kayttotul[]" id="kayttotul" data-native-menu="false" multiple="multiple" data-iconpos="left"> <?php $koetulokset = explode(',', $kayttotul); $koelista=mysqli_query($link,'SELECT tunnus FROM koetunnukset'); while ($rowkoe = mysqli_fetch_array($koelista, MYSQLI_ASSOC)) { $koetunnus = Encoding::toUTF8($rowkoe["tunnus"]); echo "<option value ='$koetunnus'" ; foreach ($koetulokset as $value) { if ($value == $koetunnus) { echo " selected='selected' "; } } echo ">"; echo $koetunnus ; echo "</option>"; } ?> </select>
Olisiko vertailtavat arvot kirjoitettu jotenkin eri tavalla, vaikkapa toisessa jotain isoilla kirjaimilla ja toisessa pienillä.
Voisit myös kokeilla debugata laittamalla silmukan tähän tyyliin
foreach ($koetulokset as $value) { echo "<!--$value==$koetunnus-->"; if ($value == $koetunnus) { echo " selected='selected' "; } }
Ehkäpä tuota tulostusta katsoessa syntyy joku ahaaelämys.
Olen noita tulostuksia tuijotellut eilisestä. Nyt jostain syystä alkoi toimia, en keksi muuta selitystä kuin että tuohon exploden jälkeisen pilkun viereen lisäsin välilyönnin. ', '
Ehkä se oli tuo, ehkä ei, toimii nyt joka tapauksessa.
Jos kerran tuon jälkeen toimii, kyllä se varmasti oli tuosta kiinni. Jos aiemmin olet katkaissut pelkällä pilkulla, muihin kuin ensimmäiseen on jäänyt alkuun ylimääräinen välilyönti, ja tietenkin "sana" on eri kuin "<väli>sana".
HTML-koodissasi on value-sanan jälkeen hassusti välilyönti. Suosittelen yhtenäistä koodaustyyliä, niin koodia on helpompi lukea.
Aihe on jo aika vanha, joten et voi enää vastata siihen.