Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [funkcje]Generator pytań i odpowiedzi z pliku
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
.radex
Dzisiaj wygrzebałem kolejną funkcję, a w zasadzie dwie.

Tryb prosty

  1. <?php
  2. function Pytania($z_kad){
  3. $pytania;
  4. $odpowiedzi;
  5. $numer = floor(rand(1,(count($z_kad)/2)));
  6. for($i=0;$i<count($z_kad);$i++){
  7. if($i % 2){
  8.  $odpowiedzi[] = $z_kad[$i];
  9. }else{
  10.  $pytania[] = $z_kad[$i];
  11. }
  12. }
  13. return array($numer, $pytania[$numer-1], $odpowiedzi[$numer-1]);
  14. }
  15. ?>


Tryb zaawansowany

  1. <?php
  2. function Pytania2($z_kad){
  3. for($i=0;$i<count($z_kad);$i++){
  4. if($z_kad[$i]{0} == ')'){
  5. $max_pyt++;
  6. }
  7. }
  8. $numer = floor(rand(1,$max_pyt));
  9.  
  10. for($i=0;$i<count($z_kad);$i++){
  11. if($z_kad[$i]{0} == ')'){
  12. $ac_pyt++;
  13. }
  14. if($ac_pyt == $numer){
  15.  if($z_kad[$i]{0} == ':'){
  16.  $odpowiedzi[] = substr($z_kad[$i], 1);
  17.  }elseif($z_kad[$i]{0} == ')'){
  18.  $pytanie = substr($z_kad[$i], 1);
  19.  }
  20. }
  21. }
  22. return array($numer , $pytanie, $odpowiedzi);
  23. }
  24. ?>


Opis trybu prostego
Linijki o numerach parzystych (przy numeracji od zera) lub nieparzystych (jeśli od 1) będą pytaniami, a linijki pod nimi będą odpowiedzią. Jeśli liczba linijek będzie nieparzysta to system to wykryje

Przykład:

(dla przykładu na samym dole: pytania.txt)
Kod
2*5=
10
Adam Mickiewicz ma na imie?
Adam
Pierwiastek kwadratowy z 16
4
Kolejne pytanie
kolejna odpowiedz
Pytanie ktore sie nie wyswietli


Opis trybu zaawansowanego
Linijki zaczynające się od ) będą pytaniami,
linijki zaczynające się od : będą odpowiedziami,
natomiast linijki które nie zaczynają się od ) lub : będą komentarzem

Przykład:

(dla przykładu na samym dole: pytania2.txt)
Kod
)Pytanie 1
:odpowiedz pierwsza
:odpowiedz druga
komentarz
:tdadadakda
jeszcze jeden komentarz
)Pytanie drugie
kolejny komentarz
:Tylko jedna odpowiedz


Przykład:

  1. <?php
  2. $pytodp = Pytania(file('pytania.txt'));
  3.  
  4. echo 'Numer: '.$pytodp[0].'<br>Pytanie: '.$pytodp[1].'<br>Odpowiedz: '.$pytodp[2].'<br>';
  5.  
  6. echo '<br><br><br>';
  7.  
  8. $pytodp = Pytania2(file('pytania2.txt'));
  9.  
  10. echo 'Numer: '.$pytodp[0].'<br>Pytanie: '.$pytodp[1].'<br>Odpowiedzi:<br><ul>';
  11.  
  12. for($i=0;$i<count($pytodp[2]);$i++){
  13.  
  14. echo '<li>'.$pytodp[2][$i].'</li>';
  15.  
  16. }
  17. echo '</ul><br>';
  18. ?>

Moli
A jakieś zastosowanie tego ? Bo ja nie widze niczego sensownego w czym mogl bym to uzyć.
.radex
hmmm... w zasadzie nie wiem po co napisałem ten skrypt, ale zastosowań jest mnóstwo:
stworzenie np. systemu ankiet, czy quizów
rodzaj zabezpieczenia antyspamowego,
itd.

No i dodam że źle określiłem nazwę tematu (... z pliku), ponieważ równie dobrze wpisy mogą być w DB
Baster
Może jakiś gotowy przykład...Chciałbym zobaczyć jak działa w "praktyce"
.radex
Widać, że nie umiesz czytać ze zrozumieniem winksmiley.jpg

  1. <?php
  2. $pytodp = Pytania(file('pytania.txt'));
  3.  
  4. echo 'Numer: '.$pytodp[0].'<br>Pytanie: '.$pytodp[1].'<br>Odpowiedz: '.$pytodp[2].'<br>';
  5.  
  6. echo '<br><br><br>';
  7.  
  8. $pytodp = Pytania2(file('pytania2.txt'));
  9.  
  10. echo 'Numer: '.$pytodp[0].'<br>Pytanie: '.$pytodp[1].'<br>Odpowiedzi:<br><ul>';
  11.  
  12. for($i=0;$i<count($pytodp[2]);$i++){
  13.  
  14. echo '<li>'.$pytodp[2][$i].'</li>';
  15.  
  16. }
  17. echo '</ul><br>';
  18. ?>


a trochę wyżej masz przykłady plików (patrząc na pliki będzie to pytania.txt i pytania2.txt)
Baster
Nie zrozumieliśmy się trochę. Chodziło mi o jakąś stronę gdzie zastosowałeś ten generator winksmiley.jpg
Ps: Czytać ze zrozumieniem umiem ;p
Baster
Oto własnei mi chodziło. Dziękuje i mam nadzieję ze więcej nie będziemy mieć takich nieporozumień.
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.