Tarkoitus olisi tulostaa kaksi nimeä tiedostosta fornames.txt, mutta ei onnistu. Aivan kuin tuo while ei koskaan lopettaisi, sillä tulee valitus "Fatal error: Maximum execution time of 30 seconds exceeded in /srv/www/htdocs/matias/tacb/jaja.php on line 15"
<?php $list0 = "fornames.txt"; $breaker = 0; while ($breaker < 2){ //random name $fnfile = file("$list0"); $x = rand(0, count($fnfile)-1); //print name echo $fnfile[$x]; $braker++; } ?>
"Toimii" kun siirtää random name-osan pois while:stä. Tulostaa jotain tiettyä nimeä koko ruudun täyteen jne.
Edit: 1 virheen korjasin itse. Lisäsin siis aaltosulut, mutta silti ei lopeta nimien tulostamista.
Edit2: braker = breaker
Eli anteeksi. Mietin ihan aikuisten oikeasti tätä, ja keksinkin sitten ratkaisun. Pahoitteluni.
Mitenkös saisi nuo randomnimet tallennettua vaikka tiedostoon randomnimet.txt?
Siirrä " $fnfile = file("$list0"); " rivi ennen whileä.
Biotank kirjoitti:
Mitenkös saisi nuo randomnimet tallennettua vaikka tiedostoon randomnimet.txt?
vaihtamalla "$list0 = "fornames.txt";" --> "$list0 = "randomnimet.txt";"
kameli-2 kirjoitti:
Biotank kirjoitti:
Mitenkös saisi nuo randomnimet tallennettua vaikka tiedostoon randomnimet.txt?
vaihtamalla "$list0 = "fornames.txt";" --> "$list0 = "randomnimet.txt";"
Ja sittenkö randomitetut nimet tallennettaisiin sinne?
Tarkoitus ei ole lukea mistään tiedostosta, vaan saada selaimeen tulostuvat arvotut nimet talteen tiedostoon randomnimet.txt
Biotank kirjoitti:
Mitenkös saisi nuo randomnimet tallennettua vaikka tiedostoon randomnimet.txt?
https://www.ohjelmointiputka.net/oppaat/opas.
Eli tuon samaisen koodin pohjalta muodostui aavistuksen monimutkaisempi (ja huomattavasti sotkuisempi) skripti.
Tuossa siis randomitetaan pelaajille, joiden nimet on myös arvottu 'taidot'. Harmi vain että niin taidot että pelaajien nimetkin saan refreshillä arvottua uudestaan.
<?php $list0 = "fornames.txt"; $list1 = "surnames.txt"; $breaker = 1; $fnfile = file("$list0"); $snfile = file("$list1"); //avataan tiedosto append-tilassa (a-kirjain), jolloin vanha tieto ei katoa ja uusi tieto kirjoitetaan vanhan perään $tt = fopen("/home/wwwrun/nimitiedosto.txt", "a"); //kirjoitetaan tiedostoon teksti, jolla erotetaan pelaajalistat toisistaan fwrite ($tt, "***uusi pelaajalista alkaa*** \r\n"); while ($breaker <= 22) { //random name $x = rand(0, count($fnfile)-1); //random surname $y = rand(0, count($snfile)-1); $atta = rand(1, 40); $scor = rand(1, 40); $cros = rand(1, 40); $defe = rand(1, 40); $tack = rand(1, 40); $tact = rand(1, 40); if ($atta + $scor + $cros > 90 and $defe + $tack > 60) echo "<tr><td bgcolor=\"#F65237\" align=\"center\">$breaker</td>"; elseif ($atta + $scor + $cros > 90) echo "<tr><td bgcolor=\"#A9F637\" align=\"center\">$breaker</td>"; elseif ($defe + $tack > 60) echo "<tr><td bgcolor=\"#9FA2F4\" align=\"center\">$breaker</td>"; else echo "<tr><td bgcolor=\"gray\" align=\"center\"><font color=\"white\" type=\"bold\">$breaker</font></td>"; //kirjoitetaan tiedostoon pelaajalista fwrite($tt, $fnfile[$x] . " " . $snfile[$y] . " " . $taito1 . " " . $taito2 . " " . $taito3 . " " . $taito4 . " " . " " . $taito5 . " " . $taito6 . "\r\n"); //print name echo "<td bgcolor=\"#E5E5E5\"> " . $fnfile[$x] . " " . "<b>" . $snfile[$y] . "</b></td><td bgcolor=\"#DDFAB2\">$atta</td><td bgcolor=\"#DDFAB2\">$scor</td><td bgcolor=\"#DDFAB2\">$cros</td><td bgcolor=#CCCEFA>$defe</td><td bgcolor=#CCCEFA>$tack</td><td bgcolor=\"#F9D49F\">$tact</td>" ."</tr>"; $breaker++; } fclose($tt); ?>
Mitenkös saisin estettyä että pelaajalistan voi randomittaa uudestaan. Kokeilin jotenkin evästeillä tyyliin (liitin sen tuohon ylläolevaan):
mutta eihän se tietenkään toiminut.
Voisiko joku jelppiä n00bia
<?php setcookie("soaf", serialize($muuttuja)); $soaf = unserialize($_COOKIE['soaf']); ?>
Öö, voisitko selittää tarkemmin, en saanut toimimaan. Se valittaa että "headers already sent by...".
Mitenköhän liitän sen tuohon koodiini että se toimii?
No nyt en taaskaan ymmärtänyt. Omat hösäyksenikään eivät tunnu koskaan toimivan.
Korvasin tuosta ylempänä näkyvästä viimeisen echo-kohdan tällä:
$sum = $fnfile[$x] . $snfile[$y] . $atta . $scor . $cros . $defe . $tack . $tact; if($breaker == 1) { setcookie("one", $sum); $one = $_COOKIE['one']; echo $one; } elseif($breaker == 2) { setcookie("two", $sum); $two = $_COOKIE['two']; echo $two; }
Tulostaa: Warning: Cannot modify header information - headers already sent by (output started at jajas.php:17) in jajas.php on line 90
Warning: Cannot modify header information - headers already sent by (output started at jajas.php:17) in jajas.php on line 97
Miten tuon muka saa cookieilla toimimaan? Tuntuu ettei mitenkään ole mahdollista. Miksi tulee varoitus "headers already sent by", vaikken käytäkään mitään headereita.
Koska cookiet lähetetään HTTP-headereissa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.