Ongelma lienee triviaali, mutta täältä saa ratkaisun luultavasti helpommin kuin itse etsimällä, vaikka tämä vastoin yleisiä periaatteitani onkin (ja seliseli...).
Olen rakentanut/hahmotellut pientä arvostelusysteemiä. Eli käyttäjä arvostelee näkemäänsä juttua (tässä tapauksessa pelkkää tekstiä).
Arvosteltavat kohteet on tallennettu MySQL-tietokantaan siten, että yhdessä tietueessa on arvot nimi (arvosteltava asia), arvostelujen määrä ja arvostelujen keskiarvo.
Käyttäjälle arvotaan satunnaislukumenetelmällä tietokannasta viisi kohdetta arvosteltavaksi.
Idea on se, että sivulla on arvosteltavan asian lisäksi tekstikenttä (johon arvostelija syöttää numeerisen arvosanan) sekä nappi. Nappia painamalla käyttäjän antamaa arvosanaa käyttäen lasketaan uusi keskiarvo ja lisätään arvostelujen määrää yhdellä, sekä näytetään seuraava arvosteltava juttu (ja tyhjennetään tekstikenttä).
Vinkkejä koodipuoleen siis kaivataan, lähinnä napin toiminnallisuuteen ja vuorovaikutukseen tekstikentän kanssa.
Normaalin form-tagin olisit voinut etsiä itsekin.
<form action="lahetys.php" method="post"> <input type="text" name="arvosana[1]" /> <input type="text" name="arvosana[25]" /> <input type="submit" value="Arvostele!" /> </form>
<?php # lahetys.php if (empty($_POST["arvosana"]) || !is_array($_POST["arvosana"])) { die("Joku teki jotain väärin."); } $arvosana = $_POST["arvosana"]; foreach ($arvosana as $avain => $arvo) { echo "arvosana[$avain] = $arvo"; } ?>
Jos tuo ei kelpaa, käytä AJAXia, josta on erillinen opas. Tämänkin olisit voinut löytää itse. Käytännössä siis yo. esimerkin formiin lisätään onsubmit="funktio(); return false"
, jolloin lähetystä ei tapahdu vaan kutsutaankin JavaScript-funktiota, jonka saat kirjoittaa itse.
Kuten sanoin heti alussa, tämä lienee triviaali juttu :) Ja luonnollisesti formilla se menee ihan kivuttomasti.
Kiitos...
Hieman ideaa täältä:
http://masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-rating-bar/#demos
Yritin löytää erästä toista tähtiarvostelua, mutta tuo näemmä ajaa suurin piirtein saman asian.
Aihe on jo aika vanha, joten et voi enää vastata siihen.