Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: checkbox

manninen [09.09.2011 00:46:13]

#

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>";

Teuro [09.09.2011 06:57:58]

#

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.

manninen [09.09.2011 08:03:24]

#

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ä.

The Alchemist [09.09.2011 08:09:24]

#

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ä.

Teuro [09.09.2011 09:40:37]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta