Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: arvonta

Sivun loppuun

peg [03.04.2006 10:15:49]

#

Olen tehnyt php:llä kilpailuun osallistuville ilmoittautumis-sivun. Kukin osallistuja tulostuu tietoineen omalle riville. Nyt nämä pitäisi arpoa lähtöjärjestykseen?
Onko hyviä ideoita?

ajv [03.04.2006 10:23:49]

#

Vähän tarkempi kuvaus voisi auttaa auttamaan. Onko tiedot tietokannassa? Täytyykö lähtejärjestys tallettaa jonnekkin, vai onko lähtöjärjestys "sessiokohtainen"?

Taulukolla tuo kuitenkin kannattanee hoitaa, joten ei muuta kuin tiedot taulukkoon ja taulukko sekaisin vaikka shuffle()-funktiolla. Tai jos tiedot ovat esim. MySQL-kannassa saat ne sieltäkin jo satunnaisessa järjestyksessä liittämällä SQL-lauseeseen ORDER BY RAND()

tgunner [03.04.2006 14:06:56]

#

Eikös tuon voisi tehdä niin, että asettaa osallistujien nimet jonkinmoiseen taulukkoon ja sitten sekoittelee sitä, ja lopulta tulostaa sen järjestyksen?

Lebe80 [03.04.2006 15:32:08]

#

Tai arpoo jokaiselle käyttäjälle satunnaisen merkkijonon (vaikka 32 merkkiä "a5rs854 ... fd43" ) ja järjestää sen mukaan "aakkosjärjestykseen".

Aina kun "satunnaisuutta" tarvitaan, arvotaan jokaiselle uusi merkkijono. Mutta tulostaessa "alkuperäinen" "satunnainen" järjestys pysyy samana.

peg [03.04.2006 19:42:51]

#

Tiedot on .txt tiedostossa. Vois olla hyvä kopioida tuolta tiedot toiseen tiedostoon jossa arvonta/sekoitus tapahtuisi, ehkä. Onko muita vaihtoehtoja kuin tuo shuffle.

Lebe80 [04.04.2006 11:44:11]

#

peg kirjoitti:

Tiedot on .txt tiedostossa. Vois olla hyvä kopioida tuolta tiedot toiseen tiedostoon jossa arvonta/sekoitus tapahtuisi, ehkä. Onko muita vaihtoehtoja kuin tuo shuffle.

Tarvitaanko jostain syystä muita vaihtoehtoja?

NiLon [04.04.2006 11:50:53]

#

Mitenkä olisi näin:

$file = 'a';
$array = file($file);
suffle($array);
file_put_contents(implode("\r\n",$array),$file);

Toki voit kirjoittaa ne uuteenkin tiedostoon.

Nuts @ php.net kirjoitti:

WARNING ON WINDOWS:
file() function will add "\r\n" in to the end of the row, even if you use only "\n" char to make rows in the file!

On UNIX systems there is no such problem.

um, no windowsille:

file_put_contents(implode('',$array),$file);

Heh kerkesimpäs :D
Muokataan sitten lainauskin kuntoon.

T.M. [04.04.2006 11:52:59]

#

Huom: file() funktio ei poista rivinvaihtoja, joten implodesta pitää ottaa pois \r\n ettei tule tuplarivinvaihtoja.

Edit: Siis ei se käyttiksest johu jättääkö se rivinvaihdot sinne loppuun vai ei, file() funktio ei jokatapauksessa poista niitä rivinvaihtoja sieltä joka rivin lopusta. Mutta windowsilla se muuttaa "\n" rivinvaihdot muotoon "\r\n".


Sivun alkuun

Vastaus

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

Tietoa sivustosta