Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mam małe pytanie
Forum PHP.pl > Forum > Przedszkole
wojteks
próbuje zrobić skrypt który będzie losował automatycznie jedną liczbę z wybranego przeze mnie przedziału cyfr co 24 godziny.
Narazie udało mi się napisać coś co wybiera (nie automatycznie) jedną liczbę z przedziału od 00 do 99 potrzebuje pomocy bo nie moge jakoś przebrnąć przez to:
nie wiem jak zrobić żeby wybrać przedział cyfr oraz jak to zautomatyzować.

Czy byłby ktoś tak uprzejmy żeby pomóc laikowi?
Jojo
Jeśli chodzi o przedział to poczytaj o funkcji rand" title="Zobacz w manualu PHP" target="_manual.
Jeśli zaś chodzi o losowanie co określony okres czasu to powiedz dokładnie co chcesz zrobić z tą liczbą. Zapisać? Wyświetlić? Ma być jedna dla wszystkich czy dla każdego osobna?
scanner
Primo: Następny taki nic nie mówiący tytuł wątku spowoduje jego zamknięcie i/lub usunięcie.
Secundo: NTF: Skrypty -> php Początkujacy.
wojteks
chodzi mi o to żeby co 24 godziny losowała sie liczba dla wszystkich taka sama.
mam cos takiego:
  1. <?php
  2. /**
  3.  * Return a random string
  4.  *
  5.  * @author  Aidan Lister <aidan@php.net>
  6.  * @version 2.0
  7.  * @param int  $length Length of the string you want generated
  8.  * @param string $seeds  The seeds you want the string to be generated from
  9.  */
  10. function str_rand($length = 2, $seeds = '0123456789')
  11. {
  12. $str = '';
  13. $seeds_count = strlen($seeds);
  14.  
  15. // Seed
  16. list($usec, $sec) = explode(' ', microtime());
  17. $seed = (float) $sec + ((float) $usec * 100000);
  18. mt_srand($seed);
  19.  
  20. // Generate
  21. for ($i = 0; $length > $i; $i++) {
  22. $str .= $seeds{mt_rand(0, $seeds_count - 1)};
  23. }
  24.  
  25. return $str;
  26. }
  27.  
  28. ?>


a do tego:

  1. <pre>
  2. <?php
  3. require_once 'a.php';
  4.  
  5. // Simple
  6. echo str_rand();
  7. echo &#092;"n\";
  8.  
  9. // Longer
  10. echo str_rand(0);
  11. echo &#092;"n\";
  12.  
  13. // Really big number
  14. echo str_rand(0, '123456789');
  15. ?>
  16. </pre>
Jojo
Jeśli chcesz losować liczbę co 24 godziny to musisz ją gdzieś zapisać. Proponuję taki prosty kawałek kodu. (Pisane z palca, więc mogą być błędy.)
  1. <?php
  2.  
  3. //na początek ustawiamy przedział do jakiego wylosowana liczba może należeć
  4. $intMin = 0;
  5. $intMax = 100;
  6.  
  7. if( ( filemtime( 'liczba.txt' ) + 3600 * 24 ) <= time() )
  8. {
  9. $intRandom = mt_rand( $intMin, $intMax );
  10. $resFile = fopen( 'liczba.txt', 'w' );
  11. fwrite( $resFile, $intRandom );
  12. fclose( $resFile );
  13. }
  14.  
  15. ?>

Powyższe sprawdza czas modyfikacji pliku i jeśli plik był zapisywany więcej niż 24 godziny temu, to losuje nową liczbę i zapisuje ją w pliku. Oczywiście przed pierwszym wywołaniem powinieneś taki plik przygotować i wpisać do niego jakąś liczbę, albo wzbogacić podany przeze mnie kod o sprawdzenie czy plik istnieje i czy zawiera coś w środku.
wojteks
jak juz wcześniej wspomniałem jestem totalnym laikiem i to cud że mi się tamto udało zrobić. mam jeszcze kilka pytań.
gdzie mam wkleic ten twój fragment kodu?
co to jest to 'w' ?
  1. <?php
  2.  
  3. $resFile = fopen( 'liczba.txt', 'w' );
  4.  
  5. ?>

jak mam wpisać pierwszy raz tą liczbe do txt? czy wystarczy wpisać np. 1 i nadać atrybut 777?
dlaczego jak wpisałem inną wartość czasu zamiast 3600 * 24 wpisałem 60 * 2 i mi wypisało:

Warning: fclose(): supplied argument is not a valid stream resource in /mnt/storage/users/c/h/w/chww/jojo.php on line 12

chociarz nic nie zmieniałem przy zamnięciu tagów.
no i to wszystkie pytania byłbym wdzięczny jakbyś na nie odpowiedział.

Za wszystko jestem bardzo wdzięczny.
oldek
Zrób sobie w bazie tabelkę z jednym wierszem i jednym polem, gdzie będzie zapisywana data. W razie potrzeby skorzystania zrób coś takiego (dla ułatwienia piszę w pseudokodzie):

if (dzisiaj<>zapamietana_w_bazie_data){
zapamietana_w_bazie_data =dzisiaj;
rob_cos_co_robi_sie_tylko_jeden_raz_dziennie;
} else {
- guitar.gif (czyli słodkie nieróbstwo)
}
Jojo
Cytat(wojteks @ 2004-12-23 12:06:51)
gdzie mam wkleic ten twój fragment kodu?

To już zależy od Twojego "widzimisie". Najlepiej umieść go tak żeby był wywoływany za każdym razem gdy ktoś wejdzie na stronę.

Cytat(wojteks @ 2004-12-23 12:06:51)
co to jest to 'w' ?

Jest to tryb w jakim otwierany jest plik. Po szczegóły zapraszam tutaj: fopen" title="Zobacz w manualu PHP" target="_manual

Cytat(wojteks @ 2004-12-23 12:06:51)
jak mam wpisać pierwszy raz tą liczbe do txt? czy wystarczy wpisać np. 1 i nadać atrybut 777?

Tak.

Cytat(wojteks @ 2004-12-23 12:06:51)
dlaczego jak wpisałem inną wartość  czasu zamiast 3600 * 24 wpisałem 60 * 2 i mi wypisało:

Warning: fclose(): supplied argument is not a valid stream resource in /mnt/storage/users/c/h/w/chww/jojo.php on line 12

chociarz nic nie zmieniałem przy zamnięciu tagów.
no i to wszystkie pytania byłbym wdzięczny jakbyś na nie odpowiedział.

Ten błąd nie zależy od czasu który wpiszesz. Wynika z mojej nieuwagi winksmiley.jpg Wszędzie używałem zmiennej $resFile a do funkji fclose podałem $resPlik. Zaraz to poprawie we wcześniejszym poście.
wojteks
ok bardzo ci dziękuje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.