Hello!
Puuhailen tässä php - kyselylomaketta nettisivulleni jossa käyttäjä vastaa kysymyksiin kyllä/ei vastauksin. Vastaukset pisteytetään ja annetaan vastaus tämän perusteella. Hyvä esimerkki on tällä:
http://www.akonet.org/pinoste/7eeroa/testi/
Tämä on varmaan melko perus kuraa, mutta kun en ole juurikaan php:n aiemmin koskenut! Eli onko tällaisia lomakkeita valmiina saatavana jossain tai vastaavia mistä sopivasti modattuna tekis oman???
Kiitos! ;)
Käytätkö lomakkeen pohjalla tietokantaa vai tekstitiedostoa. Valmiita käyttökelpoisia/modattavia pohjia löytyy googlettamalla sekä varmasti tältäkin sivustolta haku koneella.
http://www.elkoo.net/html/lomakkeet.php
Tutustu tuohon, siinä on lomakkeiden tekemisen perusteita. Voivat olla jo selviä, mutta kysymyksesi ei kerro paljon osaamisestasi mikä on selvää ja mikä ei.
Ok. Perus html formit on ihan tuttuja. Haussa on nyt esimerkin kaltainen php-formi jossa on oma php-kysymys file ja sitte joku systeemi joka generoi vastaus php-filen...
Esim. älykkyys testi jossa kysytään matiikan laskuja. Vastausten (oikein/väärin) perusteella annetaan arvio: ääliö/viisas..
En tiedä auttoiko yhtään :)
Tässä on melko yksinkertainen esimerkki:
<?php // kysymykset ja eri valinnoista saatavat pisteet $kysymykset = array( array("Tähän tulee ensimmäinen kysymys", 0, 1), array("Tähän tulee toinen kysymys", 0, 1), array("Tähän tulee kolmas kysymys", 1, 0)); // jos lomake on lähetetty... if (isset($_POST['nappi'])) { // nollataan pistelaskuri $pisteet = 0; // haetaan käyttäjän vastaukset $vastaukset = $_POST['v']; // käydään vastaukset läpi ja lasketaan pisteet for ($i = 0; $i < count($kysymykset); $i++) { $pisteet += $kysymykset[$i][$vastaukset[$i] + 1]; } echo "<p><b>Sait {$pisteet} pistettä!</b></p>"; // lopetetaan skriptin suoritus die(); } echo "<form action=\"kysely.php\" method=\"post\">"; // käydään läpi kaikki kysymykset for ($i = 0; $i < count($kysymykset); $i++) { // näytetään kysymys echo "<p><b>{$kysymykset[$i][0]}</b></p>"; // näytetään valinnat echo "<p>"; echo "<input type=\"radio\" name=\"v[{$i}]\" value=\"0\"> Kyllä"; echo "<input type=\"radio\" name=\"v[{$i}]\" value=\"1\"> Ei"; echo "</p>"; } echo "<p><input type=\"submit\" name=\"nappi\" value=\"Lähetä\"></p>"; echo "</form>"; ?>
Kysymykset ja eri valinnoista saatavat pisteet laitetaan alkajaisiksi taulukkoon. Esim. ensimmäisessä kysymyksessä vastaus "kyllä" tuottaa nolla pistettä ja vastaus "ei" tuottaa yhden pisteen. Samassa skriptissä sekä tarkistetaan vastaukset että näytetään kysymykset, minkä vuoksi skripti toimii eri tavalla riippuen siitä, onko lomake lähetetty.
Lomakkeen kautta tulevat tiedot ilmestyvät taulukkoon $_POST. Tässä $_POST['nappi'] on asetettu, jos lomake on lähetetty, ja $_POST['v'] sisältää kaikki vastaukset. Kaikki valintanapit, joilla on sama nimi, kuuluvat samaan ryhmään, ja kun niiden nimissä on hakasulut, tietoja voi käsitellä PHP:ssä suoraan taulukkona.
Kiitos, tämä kyllä selvensi minun ongelmaani siten että ehkä nyt tiedän tarkemmin mikä on ongelma.. ,) Eli tietoja en halua tallennettavaksi minnekkään, vaan aivan ruudulla nätettäväksi ja mahdollinen tulosten tulostus mahdollisuus tulis kans.
Tämä koodinpätkä on kohtuu selvää, koska c-kieli on ennestään hiukan tuttua. Kysymys kuuluu: kuinka nyt saan vastauksen tulostumaan tähän "kysely.php" tiedostoon ja tässä tapauksessa pisteet.
Ja toinen kysymys kuuluisi että: millainen vertailija hässäkkä muuttaisi minun pisteet sitten sanoiksi.
tyhmä <= 1
ok <= 2
dude >2
Kiitos!
EDIT:
Sovelsin c-kielen oppejani ja homma alkaa ratketa! Joku toimiva tulostusnäkymä pitäis vielä tehdä...
Siinä on semmoista perusideaa ja eikun vain sitten laskemaan niitä radio puttoneiden lukuja yhteen ja katsomaan yhteistulksesta osaako se tyyppi matiikkaa vai ei!
<form method="post" action="<?php $_REQUEST['PHP_SELF']; ?>"> <input type="radio" name="arvo" value="1"> 5+5 = 10 <br /> <input type="radio" name="arvo" value="2"> 5+6 = 10 <br /><br /> <input type="submit" value="tulos" >
<?php # Sivun alussa tulos on tyhjä if(empty($_REQUEST['arvo'])) $_REQUEST['arvo'] = ''; $tulos = $_REQUEST['arvo']; # Jos tulos on suurempi kuin yksi niin on väärin if($tulos > 1){ echo 'tollo'; } # Jos tulos on pienempi kuin yksi niin silloin on oikein else{ echo 'oikein'; } ?>
</form>
Aihe on jo aika vanha, joten et voi enää vastata siihen.