Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Nimen arvonta

Sivun loppuun

Biotank [13.01.2005 17:54:39]

#

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.

Biotank [13.01.2005 19:37:36]

#

Mitenkös saisi nuo randomnimet tallennettua vaikka tiedostoon randomnimet.txt?

ZcMander [13.01.2005 19:40:36]

#

Siirrä " $fnfile = file("$list0"); " rivi ennen whileä.

kameli-2 [13.01.2005 20:13:50]

#

Biotank kirjoitti:

Mitenkös saisi nuo randomnimet tallennettua vaikka tiedostoon randomnimet.txt?

vaihtamalla "$list0 = "fornames.txt";" --> "$list0 = "randomnimet.txt";"

Biotank [13.01.2005 20:19:01]

#

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

Olga [13.01.2005 20:21:05]

#

Biotank kirjoitti:

Mitenkös saisi nuo randomnimet tallennettua vaikka tiedostoon randomnimet.txt?

https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=phpj5

Biotank [14.01.2005 21:47:39]

#

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):

setcookie("$soaf", "tähän tuli taulukko");

$soaf = $_COOKIE[soaf];

echo "$soaf"

$soaf++

mutta eihän se tietenkään toiminut.

Voisiko joku jelppiä n00bia

Niko [15.01.2005 11:05:42]

#

<?php
setcookie("soaf", serialize($muuttuja));

$soaf = unserialize($_COOKIE['soaf']);
?>

Biotank [15.01.2005 17:14:40]

#

Öö, voisitko selittää tarkemmin, en saanut toimimaan. Se valittaa että "headers already sent by...".

Mitenköhän liitän sen tuohon koodiini että se toimii?

rndprogy [15.01.2005 17:17:35]

#

https://www.ohjelmointiputka.net/keskustelu/7655-header-ongelma

Biotank [15.01.2005 18:42:36]

#

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.

Blaze [15.01.2005 19:08:50]

#

Koska cookiet lähetetään HTTP-headereissa.


Sivun alkuun

Vastaus

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

Tietoa sivustosta