Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Vähän erilainen arvontakone

Sivun loppuun

merlin [18.08.2013 22:25:54]

#

Nyt täytyisi koittaa kehitellä oma arvontakone, melkein täydellinen kappale löytyy, mutta siinä on yksi erittäin suuri puute ja siksi pitää oma koodailla.

Se "melkein täydellinen" arvontakone
Syötän siis luokkia ja niiden osallistujia tyylillä:
Luokka 1
Osallistuja
Osallistuja
Osallistuja
Osallistuja

Luokka2
Osallistuja
Osallistuja
Osallistuja
Osallistuja

Arvontakoneen täytyisi arpoa nuo osallistujat ja ilmoittaa ne luokittain myös arvottuna. Helpoin ratkaisuhan olisi pistää joka luokka omaan textaeraan, mutta tämä ei tule kyseeseen kun arvottavaa (luokkia) on niin paljon...

Puute joka tuossa on, on se, että se arpoo max. 10 parasta sijoitusta eikä näytä loppuja luokan osallistujia ja heidän sijoituksiaan.

Onko jollain tähän tiedossa jo jotain arvontakonetta/koodia ja jos ei niin miten tätä nyt pitäisi lähteä purkamaan?

Lebe80 [19.08.2013 10:55:15]

#

Teet useamman sivun, jossa on 1) hallintasivujen etusivu, 2)osallistujien lisäämissivu, 3)arvontasivu

1) Hallintasivujen etusivulla on linkit kahdelle muulle sivulle, sekä mahdollinen yhteenveto.

2) Osallistujien lisäämissivu:
Teet vaikka tekstikenttänä osallistujat, ja lisäksi luokka omaksi valittavaksi kentäksi.

3) Arvontasivulla arvotaan osallistujien


Tai vastaavasti, jos et jaksa koodailla, teet työkalusi ottamaan vaikka .csv -tiedostoja sisäänsä.

merlin [19.08.2013 11:56:50]

#

Lebe80, kun ongelma on juurikin se, että kaikki luokat ja niiden kaikki osallistujat pitäisi saada syötettyä samaan kenttään :D Eli se ei riitä, että teen jokaiselle luokalle oman textarean jne.

Lebe80 [19.08.2013 12:02:49]

#

merlin kirjoitti:

Lebe80, kun ongelma on juurikin se, että kaikki luokat ja niiden kaikki osallistujat pitäisi saada syötettyä samaan kenttään :D

En käsitä, että miksi pitää?

merlin [19.08.2013 12:41:23]

#

Koska tuloksia pitäisi arpoa yli 100 luokan (10 kisaa, jokaisessa väh. 10 luokkaa) edestä joka toinen viikko :D Ei kiinnosta copypastettaminen.

Lebe80 [19.08.2013 12:54:29]

#

Pystytkö sä oikeasti kertomaan tosta yhtään enempää? Veikkaan, et tälläkin foorumilta tulis oikeasti ihan hyviä neuvoja sun ongelmaas, jos tiedettäis enemmän kuin sun oma tekstikenttätoiveesi.

Eli missä muodossa tuo alkuperäinen data sulle tulee, vai tuleeko sellaista ollenkaan. yms. yms.

merlin [19.08.2013 13:08:51]

#

Kilpailut järjestetän foorumilla, kisaajat kopioivat edelliseltä osallistujalta tuon koko luokkalistan ja kaikki jo tähän mennessä ilmoittautuneet kisaajat, eli lopulta kun kilpailun osallistumisaika loppuu, niin mulla on siellä valmiina odottamassa aloitusviestissäkin esitelty lista:

Luokka 1
Osallistuja
Osallistuja
Osallistuja
Osallistuja

Luokka 2
Osallistuja
Osallistuja
Osallistuja
Osallistuja

jne...

Haluaisin saada tulokset arvottua niin, että pystyisin syöttämään koko osallistujalistan (yksi kisa kerrallaan siis) luokkineen kaikkineen ja se arpoisi minulle kaikki kerralla. Tämän kun joudun kuitenkin toistamaan useasti, sillä kisojakin on yhtä aikaa menossa monta.

En tiedä mitä muuta tietoa tarvitaan? Kerro jos joku jäi epäselväksi :)

Lebe80 [19.08.2013 13:32:59]

#

No eikö tohon kannattaisi sit suoraan tehdä joku lisäystyökalu, jonne jokainen käy itse lisäämässä vain itsensä, jolloin tuosta ei tulisi juuri noin kömpelö foorumikikkare? Koska tuossa nykyisessä foorumiversiossahan ei tämmöiseen verrattuna ole mitään järkeä!

Metabolix [19.08.2013 14:02:04]

#

Jos nyt vain haluat sekoittaa osallistujat, tämä koodi ehkä auttaa:

<?php
$lista = isset($_POST["lista"]) ? $_POST["lista"] : "";
$lista = array_map("trim", explode("\n", $lista));
for ($i = 0; $i < count($lista); $i = $j) {
	while (empty($lista[$i]) && $i < count($lista)) ++$i;
	$j = $i;
	while (!empty($lista[$j]) && $j < count($lista)) ++$j;
	if ($j > $i + 1) {
		$tmp = array_slice($lista, $i + 1, $j - $i - 1);
		shuffle($tmp);
		// Muuttujien sisältö on nyt esimerkiksi tällainen:
		// $lista[$i] = "Luokka 1";
		// $tmp = array("sekoitetut", "osallistujat");
		// Jos haluat lisätä [b]-tageja tms., se on helppoa tässä välissä.
		array_splice($lista, $i + 1, $j - $i - 1, $tmp);
	}
}
$lista = implode("\n", $lista);
?>
<form action="?" method="post">
	<textarea name="lista" rows="20" cols="80"><?php echo htmlspecialchars($lista); ?></textarea>
	<button type="submit">Sekoita</button>
</form>

Sivun alkuun

Vastaus

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

Tietoa sivustosta