Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Losowe wybieranie tekstu
xSlash
post 12.06.2009, 22:44:32
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


Mam plik txt:

Kod
Cos1|Cos2|Cos3|Cos4...



Jak zrobic, zeby raz na dzien (czyli co 24h) zmieniał sie tekst na losowy.
Czyli 12czerwca Cos3, a 13czerwca Cos1...
Prosiłbym bardziej o gotowy skrypt, ale jesli nie to chociaz o podpowiedz jak to zrobic...
P.S. Funkcja "array" sie nie przyda bo tych "coś'ow" bedzie spoooro i dluuugich...
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
DREEMus
post 12.06.2009, 22:51:31
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 34
Dołączył: 4.09.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Ponumeruj sobie te "cosie" i potem ustaw "max" jako drugi parametr ...
rand" title="Zobacz w manualu PHP" target="_manual

Albo najpierw policz ile ich masz, a potem ustaw to na MAX ...
a co do zmiany co 24h, myśle że sam dojdziesz winksmiley.jpg

PS. A nie lepiej Ci tu użyć MySQL? Nie będzie funkcjonalniej i bardziej przejrzyście?

Ten post edytował DREEMus 12.06.2009, 22:58:13


--------------------
Serwer : Acer Aspire 5050 : AMD Turion X2 2x1.9 MHz : 2x2 GB Dual : 250GB + 500 GB USB
Warsztat : Apache v2.2 : PHP v5.2 : MySQL v5.0 : phpMyAdmin v3.4 : phpDesigner v7
Go to the top of the page
+Quote Post
xSlash
post 12.06.2009, 22:57:59
Post #3





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


Nie za bardzo załapałem... Ale skad to bedzie wiedziec jaki element z pliku txt wyciąc... A co do 24h to tez sobie nie poradze... Jestes swierzak... Moglbys mi to napisac ?
Go to the top of the page
+Quote Post
DREEMus
post 12.06.2009, 23:07:16
Post #4





Grupa: Zarejestrowani
Postów: 286
Pomógł: 34
Dołączył: 4.09.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


hmm, np.
  1. <?PHP
  2. function slogan () {
  3.  
  4.    $min = 0;
  5.    $max = 100 // tutaj wstawiasz sumowanie lini w TXT
  6.  
  7.    $nr = rand ( $min, $max ); // losujesz któryś "coś"
  8.  
  9.    $slogan = '...'; //tutaj wstawiasz linie z TXT, nr linia już masz
  10.    
  11.    echo $slogan;
  12.  
  13.    }
  14. ?>


--------------------
Serwer : Acer Aspire 5050 : AMD Turion X2 2x1.9 MHz : 2x2 GB Dual : 250GB + 500 GB USB
Warsztat : Apache v2.2 : PHP v5.2 : MySQL v5.0 : phpMyAdmin v3.4 : phpDesigner v7
Go to the top of the page
+Quote Post
xSlash
post 12.06.2009, 23:17:23
Post #5





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


Niestety nie dziala... nic nie pokazuje... ani echo $slogan ani echo $nr... nie działa...
Go to the top of the page
+Quote Post
Fifi209
post 12.06.2009, 23:24:56
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(xSlash @ 13.06.2009, 00:17:23 ) *
Niestety nie dziala... nic nie pokazuje... ani echo $slogan ani echo $nr... nie działa...


Polecam najpierw wczytać plik.
Poza tym określiłbyś co to ma być to "coś", bo np. gdy będzie znak nowej linii to będzie traktowane jako coś2 etc. ;d


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
teherty
post 12.06.2009, 23:25:08
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 4
Dołączył: 17.05.2009

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $plik = file_get_contents('./baza.txt'); //ten plik z danymi
  3. $wpisy = explode('|',$plik);
  4. $ile = count($wpisy) - 1; //sumuje wpisy
  5. $i = rand(0,$ile);
  6. echo $wpisy[$i];
  7. ?>


To jest samo wyświetlanie, część o wyświetlaniu ciągle tego samego codziennie musisz sam dopisać. Dość gotowców. Mogę jedynie podpowiedzieć że najlepszym wyjściem byłoby zapisywanie tego wylosowania do pliku i sprawdzanie ostatniego zapisu, a w razie potrzeby ponowne losowanie odrzucając ostatni wynik.

@low: rzeczywiście, dziękuję bardzo.

Ten post edytował teherty 12.06.2009, 23:36:26


--------------------
Go to the top of the page
+Quote Post
Fifi209
post 12.06.2009, 23:28:50
Post #8





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(teherty @ 13.06.2009, 00:25:08 ) *
  1. <?php
  2. $wpisy = explode('|','./baza.txt'); //ten plik z danymi
  3. $ile = count($wpisy) - 1; //sumuje wpisy
  4. $i = rand(0,$ile);
  5. echo $wpisy[$i];
  6. ?>


To jest samo wyświetlanie, część o wyświetlaniu ciągle tego samego codziennie musisz sam dopisać. Dość gotowców.


Zamiast:
Kod
'./baza.txt'


chciał kolega napisać:
Kod
file_get_contents('./baza.txt')


@down
@edit

Na prawdę, mógłbyś czytać...
Cytat(xSlash @ 13.06.2009, 00:30:36 ) *
Takie cos wyswietla mi "./baza.txt"... zamiast czesci to sciezke to pliku blinksmiley.gif Kolejny zly pomysl... Ale dam Pomogl...
Czekam na inne propozycje


Przecież napisałem, co masz zrobić zamiast bezsensownego kopiowania.
Kolega zapomniał też dodać, że "coś" od innego "cosia" musi być oddzielone znakiem |

Ten post edytował fifi209 12.06.2009, 23:34:04


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
xSlash
post 12.06.2009, 23:36:34
Post #9





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


Cytat(teherty @ 13.06.2009, 00:25:08 ) *
  1. <?php
  2. $wpisy = explode('|','./baza.txt'); //ten plik z danymi
  3. $ile = count($wpisy) - 1; //sumuje wpisy
  4. $i = rand(0,$ile);
  5. echo $wpisy[$i];
  6. ?>


Takie cos wyswietla mi "./baza.txt"... zamiast czesci to sciezke to pliku  blinksmiley.gif Kolejny zly pomysl... Ale dam Pomogl...


Czekam na inne propozycje

EDIT: Z zaleceniami fifiego to mi wyskakuja bledy skladni... Jak to ma byc?
Kod
$wpisy = explode('|','file_get_contents('slowo.txt')'); //ten plik z danymi
$wpisy = explode('|','file_get_contents('.slowo.txt')'); //ten plik z danymi
$wpisy = explode('|','file_get_contents('./slowo.txt')'); //ten plik z danymi

Ktores z tych? Bo zadne z tych nie działa biggrin.gif

No dobra... po tych stu editach zadziałało... A moglbym jeszcze prosic o dodanie takiego limitu ze zanim da drugi raz cos1 musiało podac wszystkie inne... Czyli zeby powtorzyc jakis rekord musiało najpierw dac wszystkie inne biggrin.gif (dwa razy to samo napisałem) czyli zeby sie nie powtarzaly ;]

Ten post edytował xSlash 12.06.2009, 23:34:09
Go to the top of the page
+Quote Post
DREEMus
post 12.06.2009, 23:36:55
Post #10





Grupa: Zarejestrowani
Postów: 286
Pomógł: 34
Dołączył: 4.09.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $wpisy = explode( '|', file_get_contents('slowo.txt') ); //ten plik z danymi
  3. ?>

zero chęci ... o przemyśleniu nie wspomnę ... a podstawy poszły w las ... sad.gif

Ten post edytował DREEMus 12.06.2009, 23:37:22


--------------------
Serwer : Acer Aspire 5050 : AMD Turion X2 2x1.9 MHz : 2x2 GB Dual : 250GB + 500 GB USB
Warsztat : Apache v2.2 : PHP v5.2 : MySQL v5.0 : phpMyAdmin v3.4 : phpDesigner v7
Go to the top of the page
+Quote Post
teherty
post 12.06.2009, 23:42:15
Post #11





Grupa: Zarejestrowani
Postów: 15
Pomógł: 4
Dołączył: 17.05.2009

Ostrzeżenie: (0%)
-----


Kod cały wyżej, poprawiony.
Co do drugiej części to myślę, że filemtime" title="Zobacz w manualu PHP" target="_manual i time" title="Zobacz w manualu PHP" target="_manual mówią same za siebie.


--------------------
Go to the top of the page
+Quote Post
Fifi209
post 12.06.2009, 23:48:54
Post #12





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


zapisz do innego pliku wystąpienia w postaci zserializowanej tablicy, potem wczytuj ją do skryptu i sprawdzaj kiedy wystąpiło.

P.S. Potrzebne funkcje (te mniej znane) file_get_contents()" title="Zobacz w manualu PHP" target="_manual, file_put_contents()" title="Zobacz w manualu PHP" target="_manual, serialize()" title="Zobacz w manualu PHP" target="_manual, unserialize()" title="Zobacz w manualu PHP" target="_manual i poczytaj http://pl.php.net/manual/en/book.array.php


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
xSlash
post 12.06.2009, 23:51:58
Post #13





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


ludzie chyba sobie to odpuszcze... 


Jestem total zielony a wy dajecie linki tylko do tutow...

Nie mozecie pomoc piszac skryptu? *(P.S.Nie czekam na odpowiedzi typu "nie" ;/)*
Go to the top of the page
+Quote Post
Fifi209
post 13.06.2009, 00:08:25
Post #14





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(xSlash @ 13.06.2009, 00:51:58 ) *
ludzie chyba sobie to odpuszcze... 
Jestem total zielony a wy dajecie linki tylko do tutow...

Nie mozecie pomoc piszac skryptu? *(P.S.Nie czekam na odpowiedzi typu "nie" ;/)*


Jeżeli chcesz gotowy skrypt to można ten temat przenieść do giełdy i oznaczyć tagiem "wolontariat" chyba, że jesteś w stanie zapłacić.

W przedszkolu masz się uczyć czegoś, aby nie zadawać 100x tego samego pytania.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
MicNeo
post 13.06.2009, 00:09:43
Post #15





Grupa: Zarejestrowani
Postów: 37
Pomógł: 7
Dołączył: 21.11.2004
Skąd: Kraków / Nowy Sącz

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3.  
  4.    $wpisy = explode('|', file_get_contents('baza.txt')); // plik z danymi
  5.    $ile = count($wpisy) - 1; //sumuje wpisy
  6.    
  7.    if ($wpisy[0] != date('d')){    // sprawdzamy czy mamy zmienic wylosowany tekst
  8.    
  9.        $i = rand(2, $ile);         // losujemy sobie tekst
  10.        
  11.        $wpisy[0] = date('d');      // zmieniamy dzien
  12.        $wpisy[1] = $i;                // zmieniamy nr tekstu
  13.            
  14.        $fp = fopen('baza.txt', 'w');        // zapis do pliku
  15.        fwrite($fp, implode('|', $wpisy));  // Zapisujemy do pliku wsyzstko, dzien, nr cytatu, i cytaty
  16.        fclose($fp);                        // wiadomo ;)
  17.    }
  18.    
  19.    else {                              // mamy nadal ten sam dzien wiec podstawiamy za $i stary numer
  20.        $i = $wpisy[1];
  21.    }
  22.    
  23.  
  24.    echo $wpisy[$i];                 // wyswietlamy
  25.  
  26.    
  27.  
  28. ?>


Bardzo prosto rozwiązane, byś mógł się coś z tego nauczyć. Do tego okomentowałem to.

Pozdrawiam!

PS: Schemat pliku: baza.txt -> 13|5|cos1|cos2|cos3
13 - dzien
5 - zapamietany ostatni tekst
cos1, cos2 ... - wiadomo, teksty winksmiley.jpg


--------------------
Każda dobrze napisana rzecz wciąga pod wode i zapiera dech...
Go to the top of the page
+Quote Post
Fifi209
post 13.06.2009, 00:15:35
Post #16





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(MicNeo @ 13.06.2009, 01:09:43 ) *
Bardzo prosto rozwiązane, byś mógł się coś z tego nauczyć. Do tego okomentowałem to.

Pozdrawiam!

PS: Schemat pliku: baza.txt -> 13|5|cos1|cos2|cos3
13 - dzien
5 - zapamietany ostatni tekst
cos1, cos2 ... - wiadomo, teksty winksmiley.jpg


Użyj do zapisuj file_put_contents()" title="Zobacz w manualu PHP" target="_manual bo tak tylko zasypujesz go nowymi funkcjami (ich ilością)

P.S. Teraz się nic nie nauczy. winksmiley.jpg


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
MicNeo
post 13.06.2009, 00:25:30
Post #17





Grupa: Zarejestrowani
Postów: 37
Pomógł: 7
Dołączył: 21.11.2004
Skąd: Kraków / Nowy Sącz

Ostrzeżenie: (0%)
-----


Ja tylko pokazałem użycie kilku podstawowych narzędzi. Jeżeli będzie się chciał nauczyć to sie nauczy smile.gif A bez explode, implode, działania na plikach, ani rusz w dalszy świat winksmiley.jpg Chociaż sam nie używam jakoś często plików w swoich skryptach, ale wypada to znać. Do teraz nie wiedziałem, że PHP5 wprowadziło takie fajne funkcje jak file_put_contents czy file_get_contents biggrin.gif

Pozdrawiam!


--------------------
Każda dobrze napisana rzecz wciąga pod wode i zapiera dech...
Go to the top of the page
+Quote Post
xSlash
post 13.06.2009, 11:04:18
Post #18





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


Cytat(MicNeo @ 13.06.2009, 01:25:30 ) *
Ja tylko pokazałem użycie kilku podstawowych narzędzi. Jeżeli będzie się chciał nauczyć to sie nauczy smile.gif


Twoj skrypt nic nie wyswietla, ale widze, ze mamy podobne poglady na swiat... Niestety... sad.gif
Go to the top of the page
+Quote Post
MicNeo
post 13.06.2009, 11:47:14
Post #19





Grupa: Zarejestrowani
Postów: 37
Pomógł: 7
Dołączył: 21.11.2004
Skąd: Kraków / Nowy Sącz

Ostrzeżenie: (0%)
-----


Jakiś błąd? Może źle plik masz ustawiony? Poza tym pamiętaj, że w pliku w którym masz te swoje dane, są też dane konfiguracyjne.

Pozdrawiam.


--------------------
Każda dobrze napisana rzecz wciąga pod wode i zapiera dech...
Go to the top of the page
+Quote Post
xSlash
post 13.06.2009, 11:50:40
Post #20





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


errora nie wywala, ale poprostu nic nie pokazuje... sciezka jest dobra... a na probe  w pliku napisalem

"13|5|cos1|cos2|cos3"
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 07:58