![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 5.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Pewnie ten kod nie jest zbyt profesjonalny, ale po części działa więc nie obrzucajcie błotem
![]() Tak to wygląda Kod <?php $nr1 = fopen('wpis.txt', 'r'); $nr2 = fopen('wpis2.txt', 'r'); $nr3 = fopen('wpis3.txt', 'r'); $nr4 = fopen('wpis4.txt', 'r'); $nr5 = fopen('wpis5.txt', 'r'); $tresc1 = fread($nr1, filesize("wpis.txt")); $tresc2 = fread($nr2, filesize("wpis2.txt")); $tresc3 = fread($nr3, filesize("wpis3.txt")); $tresc4 = fread($nr4, filesize("wpis4.txt")); $tresc5 = fread($nr5, filesize("wpis5.txt")); // definujemy teksty $text=array( 1 => $tresc1, 2 => $tresc2, 3 => $tresc3, 4 => $tresc4, 5 => $tresc5 ); // inicjujemy generator liczb losowych srand((double) microtime() * 10000000); // sprawdzamy ilość tekstów w tablicy $ile = count($text); // losujemy liczbę $losowa = rand(1, $ile); // wyświetlamy tekst echo "<br><br><br>$text[$losowa]"; ?> Chciałbym wiedzieć jak zrobić, żeby pobrany tekst z pliku posiadał znaki zakończenia linii. Bo tak wygląda troche nieładnie ![]() I teraz druga sprawa. Chce zrobić tak, że będe pobierał linie z pliku funkcją file(). Wiem, że tworzy ona tablice i 1 element tablicy to 1 linia tekstu. Jak zrobić, żeby np. 20 linii z 10 stronowego tekstu pojawiało się przypadkowo, np. Kod 15 linia jakiś tam mój kod 23 linia 1 linia znowu mój kod itd. I żeby żadna linia się nie powtarzała? Może to głupie pytania, ale troche już szukałem i udało mi się tyle, że linie się powtarzają. Dzięki za przeczytanie i wszelką pomoc ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 7.05.2004 Skąd: Jelenia Góra Ostrzeżenie: (0%) ![]() ![]() |
W moim przekonaniu ten kod jest straszny. No ale cóż.. przyałoby się żebyś wiedział właściwie dlaczego? Przyda Ci się na przyszłość ;-)
1. Otwierasz każdy plik pokolei, chociaż użyjesz tylko jednego z nich. Prosta kwestia. Skrypt wykonywany jest strasznie długo. Co w momencie gdy plików będzie więcej? 2. Wczytujesz każdy plik do zmiennej. Bardzo długo to trwa. W przypadku większych plików zmienne zawierają straszne ilości danych, chociaż nie wiem czy to jest wada ? Zaleta na pewno nie... 3. W obecnej wersji php inicjowanie generatora liczb losowych nie jest wymagane! Musisz wiedzieć, że php to przede wszystkim skrypty dynamiczne, a Ty nie wykorzystujesz jego możliwości. Zdaje mi się, że to jest przypadek czytania przestarzałych, beznadziejnych kursów o php i potomych... Więc sprawdźmy co da się tutaj zrobić ;-) O ile zaraz ktoś mnie nie wyprzedzi. Zakładamy, że masz do dyspozycji 5 plików o charakterystycznej nazwie wpis%id (w przypadku jedynki bez %id).
c.d.n Zaraz dopiszę reszte... ![]() EDIT: Więc teraz kwestia zamiany znaków końca linii: Przed wyświetleniem zmiennej $sBody należy wpisać następujący kod:
Co do ostatniego pytania o losowe linie, to zostawiam to jako zadanie domowe... żebym nie był taki dobry ;p Podpowiem oczywiście, że można te linie które już były wyświetlone wrzucać do tablicy
... a później sprawdzać przy pomocy funkcji array_key_exists() czy dany element (linia) znajduje się już w tablicy. Ten post edytował MagnuM 5.08.2006, 21:46:37 -------------------- ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 5.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Właściwie to skorzystałem z gotowego skryptu znalezionego w sieci, tylko trochę go przerobiłem
tu masz adres Losowy tekst na stronie Może i zrobiłem to niewłaściwie ![]() Ale w Twoim kodzie też malutki błąd spotkałem u mnie serwer wywalił błąd Kod Fatal error: Call to undefined function: file_size() dlatego zmieniłem file_size() na filesize() Teraz popracuje troche nad drugim zadaniem. Dzięki za pomoc ![]() Coś udało mi się zrobić ![]() Niewiem teraz jak zrobić żeby każda linia była inna. bo niestety nadal się powtarzają.
Ten post edytował D3vilroot 6.08.2006, 17:24:31 |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dlatego że losujesz za każdym razem, przy każdym obrocie pętli.
Zrób tak:
P.S. Przenoszę na Przedszkole. Przeciez to wszystko to banalne wykorzystanie podstawowych funkcji z manuala. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 21:11 |