Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP kyselyn hakeminen

faaraot [24.02.2011 13:15:27]

#

Eli miten saa checkbox:iin valinnan päälle jos se on valittu.

Eli sivulla yksi.php valitaan esim.

Kyllä <0>
Ei    < >

Lähetä

Tieto tallennetaan tietokantaan. Ollaan eri sivulla mutta päätetään mennä takaisin sivulle yksi, sivulla yksi valinta nappi kyllä pitäisi olla valittuna koska se on jo valittu kertaalleen. Eli vähän niinkuin editoitas jo annettuja tietoja.

Jotenki näin ajattelin mutta mikä onko ajatus lähelläkään: Valuessa varmaan pitäs olla jokin arvo kun se eka kerran valitaan ja tallenetaan tietokantaan, vai else jutulla antaa sit arvon??

<td>

        <input name="kyllä" type="checkbox" id="kylla" value="
<?
if(

}else{

}
?>">

    </td>

Kiitos jo etukäteen.

Mod. lisäsi kooditagit.

Macro [24.02.2011 13:22:43]

#

value-attribuutilla ei valita sitä onko se valittu vai ei. Kun lisäät sinne "checked", niin se on valittu automaattisesti. Esim.

<input type="checkbox" checked />

Tuo esittämäsi tapa, jossa valitaan kyllä tai ei, on kyllä radio button.

<input type="radio" name="testi" selected /> Kyllä
<input type="radio" name="testi" /> Ei

Checkbox on monivalinta, ja radiobutton ei.

http://www.w3schools.com/html/html_forms.asp

Metabolix [24.02.2011 13:34:31]

#

Macro, olet hieman epälooginen: käytät tyhjän tagin sulkumerkintää (XHTML-tyyliä, HTML:ssä ei pakollinen) mutta kuitenkin jätät attribuutin arvon kirjoittamatta (HTML-tyyliä, XHTML:ssä virhe). Loogisempaa olisi minusta valita jompikumpi tapa kokonaan:

<input type="checkbox" checked="checked" />
<input type="checkbox" checked>

Jos vaihtoehdot ovat "kyllä" ja "ei", olisi monessa tilanteessa loogisempaa laittaa vain yksi checkbox, jonka valitseminen on "kyllä" ja tyhjäksi jättäminen "ei". Jos jostain syystä halutaan molemmat vaihtoehdot erikseen esiin, radio button on tosiaan parempi vaihtoehto. Macron esimerkkiin pitäisi lisätä vielä niille valuet (esim. 1 ja 0).

faaraot [24.02.2011 13:42:42]

#

Juu tiedän että checkbox on monivalinnainen, ihan tarkoituksella.

No kyllä ja ei on vain esimerkki. kyselyssä voi olla esim..omistatko auton, kissan,koiran jne. jne...

millä saan sitten haettua tiedon tietokannasta. Eli jos on valittu "auto" niin valinta tulee siihen automaattisesti. Esim tietokannassa on taulukossa "auto" sinne on tallennettu valinta "on" tai "1" tai mitä tahansa. Lähinnä koodia tohon että kun palataan kyselyyn takas niin checkbox/radio valinta on jo valmiiksi valittu.

Haen tietokannasta testi ja taulukosta testi2, jossa rivi auto (arvo esim. 1)
Sitten haen tiedot tietokannasta ja kyselyssä auto <o> pitäisi olla valittuna jos arvo 1.

AkeMake [01.03.2011 18:26:33]

#

faaraot kirjoitti:

Haen tietokannasta testi ja taulukosta testi2, jossa rivi auto (arvo esim. 1)

Tarkoitat varmaan, että auto on kenttä eikä rivi? Jos auto olisi rivi, kentät kasvaisivat äänestäjien mukana rajatta ja se ei ole tietokantojen tarkoitus.

Yksinkertaisesti haet tietokannasta kentän "auto" arvon ja, jos se on 1 niin tulostat input:iin checked. Sinunhan täytyy tietokantaan tallentaessasi laittaa sinne myös jonkin tunnisteen, jolla osaat hakea käyttäjälle oikean rivin tietokannasta. Jos äänestäjät ovat sivustolle rekisteröityneitä käyttäjiä, niin heidät voi tunnistaa esim. id-numerosta. Alla olevassa esimerkissäni äänestänyt on sisäänkirjautuneena, jolloin hänen id-numeronsa löytyy muuttujasta id ja äänestyksen yhteydessä tämä id on laitettu tauluun testi2 kenttään id. Toinen vaihtoehto tunnistaa ei-rekisteröityneitä käyttäjiä voisi olla kirjata äänestäjän ip (tai vaikka istunto) ylös ja hakea sen mukaan. Haku voisi mennä kirjautuneilla jotenkin näin:

$kysely = $yhteys->prepare("SELECT auto, kissa, koira FROM testi2 WHERE id = ?");
$kysely->execute(array($id));
$tulos = $kysely->fetch(PDO::FETCH_ASSOC);

$tulos['auto'] == 1 ? $checked = " checked=\"checked\"" : $checked = "";
print "<p>Omistatko auton: <input type=\"checked\"$checked /></p>\n";

$tulos['kissa'] == 1 ? $checked = " checked=\"checked\"" : $checked = "";
print "<p>Omistatko kissan: <input type=\"checked\"$checked /></p>\n";

$tulos['koira'] == 1 ? $checked = " checked=\"checked\"" : $checked = "";
print "<p>Omistatko koiran: <input type=\"checked\"$checked /></p>\n";

Vastaus

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

Tietoa sivustosta