Autor | Zpráva | ||
---|---|---|---|
tajny spion Profil |
#1 · Zasláno: 22. 10. 2007, 20:16:00
Zdravím. Mám 2 scripty na náhodnou hlášku, potřebuji
a) rozhodnout, který je lepsí a který používat b) poradit ohledne toho 2. Script první funguje na principu cteni z *.txt souboru po radcich. Je overeny, avsak me trochu nevyhovujici: function hlaska() { $soubor = "hlasky.txt"; $data = file($soubor); $pocethlasek = count($data)-1; SRand((double)MicroTime()*1e6); $nahodnecislo = Rand(0,$pocethlasek); $vygenerovano = $data[$nahodnecislo]; $vygenerovano = chop($vygenerovano); return $vygenerovano; } echo "<span id="small-caps">Pamatuj: </span>" . hlaska(); ?> Script druhý jsem vymyslel sám, nefunguje. Pls pomozte mi ho rozchodit: <?php $hlaska[0] = "Nejaka hlaska první"; $hlaska[1] = "Nejaka hlaska druhá"; $hlaska[2] = "Nejaka hlaska třetí"; $hlaskacount = count($hlaska); $hlaskaindex = mt_rand(0, $hlaskacount); echo $hlaska[$hlaskaindex]; ?> Nakonec zbyva rozhodnout, ktery je lepsi. Predstavte si, ze hlasek budu mit 50 (coz je realita). 50 radku uz je nejakej ten kB navic. A to asi neni dobre. Na druhou stranu cteni ze souboru... no, poradte. |
||
Alphard Profil |
#2 · Zasláno: 22. 10. 2007, 20:32:59
<?php
$hlaska[0] = "Nejaka hlaska první"; $hlaska[1] = "Nejaka hlaska druhá"; $hlaska[2] = "Nejaka hlaska třetí"; $hlaskacount = count($hlaska); $hlaskaindex = mt_rand(0, $hlaskacount-1); echo $hlaska[$hlaskaindex]; ?> |
||
nightfish Profil |
#3 · Zasláno: 22. 10. 2007, 20:33:49
Nakonec zbyva rozhodnout, ktery je lepsi.
lepsi je ten prvni, protoze funguje :-) co se ti na tom prvním nezdá? co ti na něm nevyhovuje? |
||
tajny spion Profil |
#4 · Zasláno: 22. 10. 2007, 21:21:35
nightfish
Potreboval jsem, aby se nekdo zeptal. 1) chtel bych ho nejak zjednodusit, pokud to jde 2) potrebuji, aby to odkazovalo na soubor hlasky.txt, ktery je v rootu webu. Tj nekam se tam musi dat lomitko. Ja to skousel, ale pokazde mit o hodilo error. V tom je pro me nevyhovujici. Alphard Dik vole. To se rika ne? Dobre, tak: Dik |
||
tajny spion Profil |
#5 · Zasláno: 22. 10. 2007, 21:25:08
Alphard
Mimochodem, jak nova je fce mt_rand()? Ptze me to pres localhost stale vypisuje "Nejaka hlaska třetí". A kdyz dam rand(), tak to pekne nahodne strida. Spravi se to na hostingu? Pro oba Alpharduv zpusob zabere pri velkem poctu hlasek mnoho mista, je tak? |
||
DJ Miky Profil |
#6 · Zasláno: 22. 10. 2007, 21:32:33
Alpharduv zpusob zabere pri velkem poctu hlasek mnoho mista, je tak?
Můžeš to třeba zredukovat na: $hlaska=array("Nejaka hlaska první","Nejaka hlaska druhá","Nejaka hlaska třetí"); |
||
Alphard Profil |
#7 · Zasláno: 22. 10. 2007, 21:52:33
Alpharduv zpusob zabere pri velkem poctu hlasek mnoho mista, je tak?
není to můj zbůsob, pouze jsem opravil tvůj script, osobně se mi vic líbí ten první (oddělení obsahu od scriptu, ale zjednodušil bych to) Mimochodem, jak nova je fce mt_rand()? od PHP 4 Ptze me to pres localhost stale vypisuje "Nejaka hlaska třetí". kolikrát jsi to zkoušel? 3 hlášky není moc, nečekej, že se to při každé aktualizace změní jinak jsem to teď zkusil a mně to jde správně (PHP 5) |
||
tajny spion Profil |
#8 · Zasláno: 23. 10. 2007, 10:09:30
Alphard
Mohl bys mi prosim pepsat tedy ten první, aby byl co nejjednodussi? Pr(e)dem dik. DJ Miky Dik. |
||
DFly Profil |
#9 · Zasláno: 23. 10. 2007, 12:03:01
klidne prvni verzi
$radky = file(soubor.txt); echo array_rand($radky); |
||
DFly Profil |
#10 · Zasláno: 23. 10. 2007, 12:06:33
a muzes si pred to dat jeste radku
srand ((double) microtime() * 1e6); |
||
DFly Profil |
#11 · Zasláno: 23. 10. 2007, 12:08:51
take mas moznost databaze, kde se take da nahodne vybirat jeden zaznam
|
||
tajny spion Profil |
#12 · Zasláno: 23. 10. 2007, 14:35:44
DFly
DObre, tim padem mame tri moznosti (soubor, pole, db). Ktera je nejlepsi a nejspolihvejsi a zabyra nejmene mista? |
||
Alphard Profil |
#13 · Zasláno: 23. 10. 2007, 15:10:52 · Upravil/a: Alphard
tajny spion
nedělej z toho kovbojku... spolehlive jsou všechny misto zabírají zhruba stejné nejrychlejší bude asi varianta s polem, ale nemám to ověřeno nejlepší – to je relativní (mně se líbí soubor) něco si vyber a neřeš takovou blbost několik dní :-) |
||
DFly Profil |
#14 · Zasláno: 23. 10. 2007, 16:42:13
tajny spion
pro vetsi mnozstvi dat (napr citaty), to mam udelany pres databazi pole je vhodne pro minimalni pocet moznosti (kdo to ma v tom scriptu furt menit) napr do 10-20 max soubor je vhodny tak 10-100, protoze ti to vse leze do pameti, ale je to prehledne a dobre se s tim pracuje zbytek databaze, kde si vytahnes nahodne treba jen jedinou radku, a dat tam muzes mit neomezene |
||
Alphard Profil |
#15 · Zasláno: 23. 10. 2007, 17:22:36
DFly
plánuje cca 50 záznamů |
||
tajny spion Profil |
#16 · Zasláno: 23. 10. 2007, 19:35:10
DObre, udelam to zatim souborem. Nekdo mel napad na zjednoduseni. Sem snim
|
||
Alphard Profil |
#17 · Zasláno: 23. 10. 2007, 20:12:17
Nekdo mel napad na zjednoduseni. Sem snim
zjednodušit jsem to chtěl já, ale popsal to DFly výše, čteš ty příspěky vůbec? |
||
tajny spion Profil |
#18 · Zasláno: 23. 10. 2007, 20:37:57
Aha, to patrilo k tomu? Takze jako tohle...
srand ((double) microtime() * 1e6); $radky = file(soubor.txt); echo array_rand($radky); ...plnohodnotne nahradi tohle? function hlaska() { $soubor = "hlasky.txt"; $data = file($soubor); $pocethlasek = count($data)-1; SRand((double)MicroTime()*1e6); $nahodnecislo = Rand(0,$pocethlasek); $vygenerovano = $data[$nahodnecislo]; $vygenerovano = chop($vygenerovano); return $vygenerovano; } echo "<span id="small-caps">Pamatuj: </span>" . hlaska(); ?> |
||
DFly Profil |
#19 · Zasláno: 24. 10. 2007, 02:12:40 · Upravil/a: DFly
jj :-)))
tomu programatori rikaji optimalizace :-))) jak jsem to psal pro info, tak tam mam "chybku" $radky = file('soubor.txt'); nicmene ti to taky nebrani dat to do funkce, ale je to zbytecne - nacteni do pole provedes jednou, a pak z nej muzes kdykoli nahodne vybirat - coz tva fce taha soubor pokazdy maximalne muzes zapouzdrit array_rand() pro pripad kdyby po vybrani bylo casem jeste hlasku nejak zpracovat, abys to pak nemusel v kodu prepisovat a pak si to dat do toho sveho echo "<span id="small-caps">Pamatuj: </span>" . hlaska(); |
||
nightfish Profil |
#20 · Zasláno: 24. 10. 2007, 07:36:36
a pak si to dat do toho sveho
echo "<span id="small-caps">Pamatuj: </span>" . hlaska(); pokud bude v té funkci echo array_rand($radky);, tak tento zápis nebude fungovat správně - nejdřív by se vypsala hláška a pak až ten span... lepší bude v té funkci použít return array_rand($radky); |
||
tajny spion Profil |
#21 · Zasláno: 24. 10. 2007, 10:30:15
DFly, nightfish
Jj, dik, koukam, ze se to postupne da dohromady. Jen abychom nedosli nakonec k puvodnimu reseni :D |
||
DFly Profil |
#22 · Zasláno: 24. 10. 2007, 11:00:22
jsou i taci co si na tyto tri radky udelaji tricu vcetne konstruktoru a destruktoru
to by to pak bylo delsi nez prvni varianta tajny spion - kolikrat se v tom scriptu nahodne zobrazi hlaska - pokud jednou, nedavej to do fce a nech si ty tri radky... |
||
tajny spion Profil |
#23 · Zasláno: 24. 10. 2007, 13:00:29
DFly
Melo by to vypisovat neco takovehodle: Pamatuj: Nejaka hlaska Z toho vyplyva ze pouziji tve triradkove reseni. |
||
Časová prodleva: 5 dní
|
|||
tajny spion Profil |
#24 · Zasláno: 29. 10. 2007, 20:41:18
Alphard, DFly, nightfish
No hosi, Vas script Pamatuj: <?php srand((double) microtime() * 1e6); $radky = file('hlasky.txt'); echo array_rand($radky); ?> Mi vypisuje misto nahodne hlasky nahodne cislo v rozmezi 0 az (pocet hlasek). Dokazal by mi nekdo vysvetlit proc? Ja uz si s tim vazne nvm rady :( Btw opakuji: pokuste se prosim udelat to tak, aby se soubor 'hlasky.txt' hledal vzdy v rootu webu a nikoliv v aktualni slozce, jak je tomu ted. Predem dik. |
||
Alphard Profil |
#25 · Zasláno: 29. 10. 2007, 20:51:09
srand((double) microtime() * 1e6);
$radky = file('/hlasky.txt'); echo $radky[array_rand($radky)]; |
||
tajny spion Profil |
#26 · Zasláno: 30. 10. 2007, 09:48:32
Alphard
Sice to vypada divne a uz vidim, jak mi bude hlasit, ze soubor nenalezen, ale skusim to. Kazdopadne se ozvu :) |
||
tajny spion Profil |
#27 · Zasláno: 1. 11. 2007, 15:59:43
Alphard
Vyborny... vse jde az na to nacitani z rootu... s lomitkem to hodi error, bez lomitka funguje jak ma. Vi nekdo? |
||
tiso Profil |
#28 · Zasláno: 1. 11. 2007, 16:05:54
tajny spion - zrátaj lomítka v $_SERVER['PHP_SELF'] a potom vypíš pred názov súboru toľkokrát string '../'
|
||
tajny spion Profil |
#29 · Zasláno: 1. 11. 2007, 16:13:23
tiso
Vypsat ok, $_SERVER['PHP_SELF'] taky vim co je, ale spocitat pocet urcitych znaku v necem, "to jsme se fakt jeste neucili". Mohl bys mi to pls priblizit? PS: Proc '../' kdyz odkaz do rootu webu je '/' ? |
||
tiso Profil |
#30 · Zasláno: 1. 11. 2007, 16:23:52
tajny spion - substr_count a str_repeat
PS: - root pre PHP a root webu podľa url sú 2 rozdielne veci... Potrebuješ sa skrátka dostať o tých x zanorených adresárov vyššie... Alebo mrkni na http://latrine.dgx.cz/php-tipy-a-triky-i |
||
Téma pokračuje na další straně.
|
0