Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rotator zdań z bazą generowanych zdań w pliczku txt
Forum PHP.pl > Forum > Przedszkole
NSIHD
Witam, otóż chciałbym napisać coś co będzie generowało losowe pytanie odczytane z txt ale po kliknięciu w przycisk generuj.
Nie mam zielonego pojęcia jak się do tego zabrać ani jak tego szukać.
Jest mi to bardzo potrzebne gdyż na tym będzie polegała strona, którą chcę postawić.
Dodatkowo chciałbym to później rozbudować o wybranie kategorii z jakiej ma losować pytanie.
Ktoś może mi polecić jakąś stronę? wskazówki?

----
Znalazłem coś takiego:

  1. <?
  2. //odczytujemy
  3. $plik ="lista.txt";
  4.  
  5. //tworzymy tablicę zawierającą linie z pliku
  6. $items = file("$plik");
  7.  
  8. //generujemy losowy tekst
  9. $item = rand(0, sizeof($items)-1);
  10.  
  11. //i wyświetlamy
  12. echo $items[$item];
  13. ?>


Chciałbym dodać do tego funkcje, która pozwoli mi zmieniać element klikając przycisk. Bez zbędnego odświeżania całej strony.
Proszę o pomoc
SmokAnalog
Żeby działało bez odświeżania, to tylko Ajax. Znasz jakieś podstawy JavaScript?

P.S. Jeśli tych zdań będzie stosunkowo mało (powiedzmy mniej niż 100, ale to kwestia bardzo dyskusyjna), to możesz też wszystkie od razu załadować, wtedy kolejne będą się wyświetlały natychmiast bez angażowania serwera.

P.S.2. Jeśli planujesz to rozbudowywać o kategorie i może coś innego w przyszłości, to polecam zapisywać te dane w formacie JSON: json_encode
NSIHD
Już sobie poradziłem, dzięki:
efekt http://nsihd.pl/tst/index.php (tymczasowe)
SmokAnalog
Czyli jednak odświeża stronę całą. Niezbyt przyjemny efekt.
NSIHD
U ciebie odświeża całą? U mnie na operze 16.0 odświeża tylko tekst. Jedno kliknięcie na 10 może odświeży całą.
Rzuć okiem na kod jak możesz
  1. <html>
  2. <body>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. <link href="styles.css" rel="stylesheet" type="text/css" />
  5. <link href='http://fonts.googleapis.com/css?family=Tangerine:bold,bolditalic|Inconsolata:italic|Droid+Sans' rel='stylesheet' type='text/css'>
  6.  
  7. <center>
  8. <div id="generator">
  9. <h2><?
  10. //odczytujemy
  11. $plik ="lista.txt";
  12.  
  13. //tworzymy tablicę zawierającą linie z pliku
  14. $items = file("$plik");
  15.  
  16. //generujemy losowy tekst
  17. $item = rand(0, sizeof($items)-1);
  18.  
  19. //i wyświetlamy
  20. echo $items[$item];
  21. ?></h2>
  22.  
  23.  
  24. <form action="index.php" method="post">
  25. <button onclick="odswiezaj()">Losuj pytanie</button>
  26. <div id="generator"></div>
  27. <script language=javascript>
  28. odswiezaj();
  29. </script>
  30. </div>
  31. <?php
  32. if((!isset($_COOKIE['licznikowe-ciacho'])) && (!strstr($_SERVER['HTTP_REFERER'], "strona.pl"))) {
  33. $plik = fopen("licznik.txt", "r");
  34. $tekst = fread($plik, filesize("licznik.txt"));
  35. $dane = explode(";", $tekst);
  36. fclose($plik);
  37. $plik = fopen("licznik.txt", "w");
  38. flock($plik, 2);
  39. $dane[0]++;
  40. fwrite($plik, "$dane[0];", 15);
  41. flock($plik, 3);
  42. fclose($plik);
  43. setcookie("licznikowe-ciacho", "zliczono", 0);
  44. }
  45. else {
  46. $plik = fopen("licznik.txt", "r");
  47. $tekst = fread($plik, filesize("licznik.txt"));
  48. $dane = explode(";", $tekst);
  49. }
  50.  
  51. ?>
  52. <p><div id="licznik">Jesteś <?php echo($dane[0]); ?> gościem na mojej stronie.</div></p>
  53. </center>
  54. </body>
  55. </html>
SmokAnalog
U Ciebie też za każdym razem odświeża całą, tylko nie za każdym razem to ewidentnie widać. Widzę, że tych pytań jest prawie 500. W sumie jeśli jesteś pewien, że średni użytkownik sporo razy kliknie, to ja bym mimo wszystko ładował całość naraz i jeszcze zastosował ładny efekt płynnej zmiany jednego pytania w drugie.

Wczytywanie całości naraz, oprócz zmniejszenia liczby wysyłanych żądań do serwera, będzie miało jeszcze jedną zaletę - możesz łatwo pomieszać całą tablicę od razu, dzięki czemu nie trafi się dwa razy na to samo pytanie (chyba że np. po przeklikaniu wszystkich chcesz, żeby się zapętliło). W obecnym skrypcie teoretycznie ktoś może mieć losowane jedno pytane wiele razy pod rząd.

Jeśli pomysł Ci się podoba, to pomogę Ci taki efekt osiągnąć.
NSIHD
Powiem tak, to ma być generator losowych pytań na ask.fm.
Na stronie będzie zapewne wiele wyświetleń bo takiej strony w sieci jeszcze nie ma.
Myślę że pytań w bazie będzie nawet kilka razy więcej. Pytania są kopiowane z profili użytkowników bądź szukane w google.

Myślałem że uporałem się już z tym odświeżaniem strony. Meh worriedsmiley.gif
Jeżeli chodzi o powtarzanie się pytań, powinny być zapętlone ponieważ nie ma możliwości cofnięcia wstecz
SmokAnalog
Kilku tysięcy pytań już bym raczej nie wrzucał naraz, bo starsze komputery mogą się zakrztusić biggrin.gif Ale mam inny pomysł, można ładować pytania Ajaxem i jednocześnie przechowywać indeksy pytań, które już wylosowano. Przyznasz chyba, że o wiele lepszą perspektywą jest losowanie ciągle nowych pytań, prawda?
NSIHD
Na pewno są na to lepsze metody, bardziej zaawansowane skrypty itd.
pomysłów mam dość, powinien być jeszcze przycisk kopiuj tekst, podział na kategorie pytań, wybranie płci do jakiej ma dopasować pytania, możliwość dodawania pytań przez użytkowników i takie tam.
Myślę że ludzie skłonni byliby nawet płacić smsami za tak szeroką bazę pytań. A jeżeli to by nie wypaliło to zawsze na wyświetleniach reklam.

Tylko że ja nie jestem webmasterem, jestem prostym grafikiem a w php siedzę no można powiedzieć że od wczoraj sciana.gif

Może podzielić to na kilka plików, sam już nie wiem.
SmokAnalog
Cytat(NSIHD @ 27.09.2013, 09:29:30 ) *
Myślę że ludzie skłonni byliby nawet płacić smsami za tak szeroką bazę pytań.

W to bardzo wątpię.

Jeśli pomysły są, a nie umiesz programować, to pozostaje chyba zlecić to komuś.
NSIHD
Dzięki za radę i za pomoc. Jak znajdą się środki na ten cel to pewnie tak właśnie zrobię Rkingsmiley.png
jeżeli ktoś chciałby wspomóc projekt w jakiś sposób i mieć w tym jakiś udział lub przyjąć płatne zlecenie. Zapraszam na gg 4160349
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.