Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP - Kyselylomake

alosa [22.05.2007 11:33:52]

#

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/lukihairiotesti.php

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! ;)

Vasta_alkaja [22.05.2007 11:46:08]

#

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.

alosa [22.05.2007 12:29:40]

#

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 :)

Antti Laaksonen [22.05.2007 12:33:26]

#

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.

alosa [22.05.2007 13:02:30]

#

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

Vasta_alkaja [22.05.2007 14:40:22]

#

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>

Vastaus

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

Tietoa sivustosta