Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyeliminowanie danych w kolejnym losowaniu
Forum PHP.pl > Forum > PHP
Snap
Witam,

Nie mam pomysłu jak wykonać pewien mechanizm. Rzecz polega na tym, że mam sobie stronę na której wyświetlane są dwa teksty z bazy, należy wybrać tekst który nam się bardziej podoba.

Każdy tekst ma swoje id. np: Id: 3 | Tekst: "Witaj"; Id: 5 | Tekst: "Cześć".

Skrypt po wejściu na stronę losuje teksty z bazy, najpierw losuje pierwszy tekst, a następnie drugi, tak aby się nie powtarzał.

Gdy wybierzemy sobie dany tekst np: klikniemy na "Witaj" skrypt sprawdza czy był już pojedynek pomiędzy tekstem o Id:1 a Id:2.
Pojedynki są zapisywane w następujący sposób: PojedynekId: 1 | TekstId1: 3 | TekstId2: 5 | Wynik: 23:12.
A wybrany tekst zostaje dalej, natomiast losowany jest kolejny tekst który walczy z pierwszym.

W zmiennej sesyjnej zapisywane jest jaki zestaw tekstów internauta już wybrał w postaci: TekstId1-TesktId2|TekstId1-TesktId2|TekstId1-TesktId2|...
Tak więc jak kliknęliśmy na Test "Witaj" o Id 3 został oddany głos i doliczony punkt. A do sesji dodano zestaw 3-5.

Następnie przechodzimy do kolejnego losowania tekstu.

W tym momencie chciałbym aby skrypt sprawdzał jakie zestawy już były wylosowane i wykluczał id ich z kolejnego losowania. Tak więc jak już były teksty o id: 3 i 5 nie można ich ponownie wylosować.

Tekst o id 3 zostaje a skrypt losuje drugi tekst wykluczając teksty o id 3 i 5.

Po lewej mamy tekst "Witaj" a nowym wylosowanym tekstem jest "Hej" o id 2. Itd..

Przed losowaniem pobieram dane z sesji i filtruje je:
  1. <?php
  2. $zbior = explode(&#092;"|\", $_SESSION['tekst']); //$zbior = 3-5|3-2|1-2|1-4|1-3|1-5|5-2
  3. $zbior = filtr&# 2d99 40;$zbior, 2);
  4.  
  5. ...
  6.  
  7. $losujPrawyTekst = //losuje tekst z bazy
  8.  
  9. ...
  10.  
  11. $walka = $lewyTekst.&#092;"-\".$losujPrawyTekst; //$walka = 5-2
  12. $jest = array_search($walka, $zbior);
  13. ?>

i co dalej smile.gif
Darti
Tak nie do końca rozumiem Twój tok rozumowania.
Może jak ja bym podszedł do zagadnienia:

Dwie tablice w bazie: pierwsza "teksty" z dwoma kolumnami(id_tekstu, tekst) druga "walki" z trzema kolumnami (id_losowania,wygral,przegral).
//pierwsze wejscie
1) Pobieram wszystkie teksty
2) Losowo wyświetlam 2 jako linki w postaci ?wygral=id&przegral=id np:
  1. <a href="?wygral=id_tekstu1&przegral=id_tekstu_2">tekst_1</a><a href="?wygral=id_tekstu2&przegral=id_tekstu_1">tekst_2</a>

// user klika w linka
3) zapisuje w bazie "walki" $_GET['wygral'] i $_GET['przegral']
4) Zapisuje w sesji (Twój sposób się nadaje, pod warunkiem ze bedzie w schemacie wygral_id-przegral_id|wygral_id-przegral_id| ...)
5) generuje tekst $przegrani = (przegral_id,przegral_id, ....) ale tylko z tych pól, gdzie wygrany == $_GET['wygral']
6) Pobieram z tabeli "teksty" id_tekstu = $_GET['wygral_id'] // do wyswietlenia
7a) Pobieram z tabeli "teksty" id_tekstu != $_GET['wygral_id'] AND NOT IN $przegrani // do losowania
7b) losuję szczęśliwca i wyświetlam w postaci ..... (wróć do pkt 2)
Cysiaczek
Proszę wysłać propozycję sensownego tytułu tematu komuś z zespołu moderującego, temat zostanie wówczas otworzony.
Zamykam
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.