Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: rand formissa?

Sivun loppuun

Biotank [07.02.2005 16:01:29]

#

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?

T.M. [07.02.2005 16:15:26]

#

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'];
?>

Biotank [07.02.2005 16:41:07]

#

heh... taisi olla kaikkien aikojen tyhmin kysymys:D

Biotank [07.02.2005 18:43:41]

#

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)

Juice [07.02.2005 19:28:28]

#

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.

Biotank [08.02.2005 15:47:12]

#

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

Juice [08.02.2005 18:50:29]

#

Muuttujien ympärille ei ikinä lainausmerkkejä.
Sitäpaitsi, miksi tehdä asioita vaikeiksi? Tiedoston avaaminen taulukkoon käy näin helposti:

$fnfile = file("fornames_fin.txt");
$snfile = file("surnames_fin.txt");

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.

Metabolix [08.02.2005 20:00:32]

#

srand(time()); on ratkaisusi. Se alustaa satunnaislukugeneraattorin ajan perusteella, eli joka sekunti eri lailla. Lisäät sen siis jonnekin koodin alkuun.

Juice [08.02.2005 21:21:01]

#

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.


Sivun alkuun

Vastaus

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

Tietoa sivustosta