On tullut tässä taas pidettyä taukoa ohjelmoinnista ja PHP:n opettelu on jäänyt entistä vähemmälle.
Alhaalla yhden sivun body-tagin sisälmykset tutkittavana:
<?php $rand = rand(1, 10); ?> <form action="asetukset.php" method="post"> <b>Kotijoukkue: </b><input type="text" name="name0"><br /> <b>Vierasjoukkue: </b><input type="text" name="name1"><br /> <input type="hidden" value="rand"><br> <input type="submit" value="Lähetä"> </form> <?php echo $_POST['name0'] . " "; echo $_POST['name1']; echo $_POST['rand']; ?>
Ei suostu postittamaan tuota random-numeroa tuohon ruudulle, missäs on vika?
inputin name, sekä muuttujan tulostus puuttuu.
Korjaus:
<input type="hidden" value="<?php echo $rand ?>" name="mun_randomi_numero_muuttuja"><br>
<?php echo $_POST['mun_randomi_numero_muuttuja']; ?>
heh... taisi olla kaikkien aikojen tyhmin kysymys:D
Toistaa saman nimen kymmenen kertaa. Miten saisin niin, että randomittaisi joka kerta uuden nimen? Vinkkejä...
<form action="asetukset.php" method="post"> <?php while ($stopper <= 10) { $alea = rand(1, 12); $list0 = "fornames_fin.txt"; $list1 = "surnames_fin.txt"; $fnfile = file("$list0"); $snfile = file("$list1"); $x = rand(0, count($fnfile)-1); $y = rand(0, count($snfile)-1); ?> <input type="hidden" value="<?php echo $fnfile[$x]; ?>" name="random0"><br> <input type="hidden" value="<?php echo $snfile[$y]; ?>" name="random1"><br> <?php echo $_POST['random0'] . " "; echo $_POST['random1']; $stopper++; } ?> <input type="submit" value="Lähetä">
(nimet ovat siis tiedostoissa fornames_fin.txt ja surnames_fin.txt)
Sovella:
https://www.ohjelmointiputka.net/keskustelu/6553-random-1-2-3-tai-4
Lisäksi muuttujien ympärille ei kannata laittaa lainausmerkkejä sekä while-silmukka kannattaa korvata forilla.
Olin tässä kirjoitamassa viestiä, kun kone tilttasi. Kirjoitan vähän huolimattomasti nyt siis...
Eipä luonnistunut soveltaminen minulta:/
While korvattu forilla, mutta muuttujien ympäriltä hipsuja en pois voi ottaa. Silloin haetaan tiedostosta fornames_fintxt, kun taas hipsujen kanssa piste on paikallaan.
Voisiko joku selittää miksei tuo koodinpätkäni käytännössä toimi?
Nimet näkyvät inputtien valueina lähdekoodissa, mutta ruudulle eivät vaivaudu tulostumaan.
Aika urpoa spämmätä putkaa jatkuvilla n00b-kysymyksillä, mutta minkäs teet...
Muuttujien ympärille ei ikinä lainausmerkkejä.
Sitäpaitsi, miksi tehdä asioita vaikeiksi? Tiedoston avaaminen taulukkoon käy näin helposti:
Sitten koodiisi: Kai se tulostaa saman nimen, kun randomnollia ja randomykkösiä arvotaan aina uudestaan ja uudestaan...
Tässä jonkinnäköistä osviittaa ratkaisuun:
<form action="biotank.php" method="post"> <?php $fnfile = file("fornames_fin.txt"); $snfile = file("surnames_fin.txt"); for($stopper=0;$stopper<=10;$stopper+=1) { $x = rand(0, count($fnfile)-1); $y = rand(0, count($snfile)-1); echo '<input type="hidden" value="'.$fnfile[$x].'" name="random'.$stopper.'a" /><br />'; echo '<input type="hidden" value="'.$snfile[$y].'" name="random'.$stopper.'b" /><br />'; echo $_POST['random'.$stopper.'a'].' '.$_POST['random'.$stopper.'b']; } ?> <br /><input type="submit" value="Lähetä">
Paina lähetä, niin nimet ilmestyvät. Se on lomake. En kyllä ymmärrä miksi haluat sen olevan lomake.
srand(time()); on ratkaisusi. Se alustaa satunnaislukugeneraattorin ajan perusteella, eli joka sekunti eri lailla. Lisäät sen siis jonnekin koodin alkuun.
PHP:n manuaalista: Huomaa: As of PHP 4.2.0, there is no need to seed the random number generator with srand() or mt_srand() as this is now done automatically.
Ja miksi tuli 10 samaa: arvottiin kymmenen random1:sta ja random0:aa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.