Ongelmani on se, että tallennan tietokantaan yhteen kenttään kaikki käyttäjän valitsemat valintakentätä muotoa 1|4|5|8|10
Nyt kun tulostan koodin ja haluaisin saada valitut kentät valituiksi ei se onnistu millään!
Ongelmani on se, että saan purettua kyllä 1|4|5|8|10 muodon, mutta vertaaminen ei meinaa onnistua koska, en saa $id:tä kulkemaan samaan aikaan purun kanssa mukana.
Vertaajana käytettäisiin yrityksissäni aina samaa id:tä, joten tuloksia ei koskaan voisi olla kuin yksi. Miten saan $id,n juoksemaan vertailussa oikein mukana.
foreach($conn->query($sql) as $r){ $id = intval($r['id']); $pd = explode("|", $r['pd']); echo "<tr>"; echo "<td>"; if($_REQUEST['permission'] == $r['account']){ // Tässä välissä olen koittanut vertailua toteuttaa forsilmukalla, mutta sehän ei tietenkään käy päinsä. echo "<input checked type='checkbox' class='className' name='itemSelect[]' onclick='Permission();' value='$id'>"; } else{ echo "<input type='checkbox' class='className' name='itemSelect[]' onclick='Permission();' value='$id'></td>"; } echo '<td>'. htmlspecialchars($r['d']).'</td>'; echo "</tr>";
Millaista dataa sinä sitten tallennat tuonne tietokantaan? Luultavasti olisi itsellesikin helpompaa luoda uusi taulu, jonne tallennat nuo valinnat. Jokainen tieto olisi siis omalla rivillään. Yhdistävänä tekijänä olisi käyttäjän id-numero.
Tällöin samalla kun tulostat nuo checboxit silmukassa, niin tutkit onko käyttäjä valinnut vuorossa olevan checkboxin.
Teuro -> Ilmoittamasi vaihtoehto on järkeenkäypä, mutta jos joku keksii vastauksen kysymykseeni, niin mielelläni kokeilisin myös omaa ratkaisumalliani. Jos kukaan ei keksi, enkä itse ratkaise niin sitten on kokeiltava ilmoittamaasi toimenpidettä.
Ratkaisumallisi on oikeastaan tietokantojen väärinkäyttöä, joten en itse ainakaan lähtisi käyttämään aikaa tuon setvimiseen. Sulla on sitä paitsi syntax error tuossa, kun tulostat TD:lle lopetustagin vain toisessa ehtohaarassa. Oikeasti sitä ei pitäisi tulostaa kummassakaan, koska avaustagiakaan ei tulosteta if-else:n sisällä.
Voisit kokeilla seuraava mallia, jolla varmaankin onnistut?
<?php /** Taulukollinen int lukuja **/ $valitut = Array(1, 4, 8, 13); /** Luetellaan luvut 1 ... 20 **/ for ($i = 1; $i <= 20; ++$i) { /** Jos indeksissä $i oleva arvo on sama kuin käsittelyssä oleva **/ if (in_array($i, $valitut)) { echo "<checkbox checked=\"checked\" />Valintaruutu {$i}\r\n"; } else { echo "<checkbox />Valintaruutu {$i}\r\n"; } }
Ajoesimerkki löytyy codepadista
Aihe on jo aika vanha, joten et voi enää vastata siihen.