Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Połączenie "userów" w pary.
b4x
post 6.04.2009, 21:13:27
Post #1





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


Witam, mam pytanie, jak można "połączyć" użytkowników w pary.

Powiedzmy mam 10 osób zalogowanych online.

Chcę każdą z nich połączyć w "dwójki" randomowo dobierając drugą osobę ;-)

Wchodzą wszyscy jednocześnie np. na wybierz.php - i oczekują na odpowiedź (np. za pomocą ajax'a.)

Wie może ktoś jak do tego się zabrać? smile.gif

Ten post edytował b4x 6.04.2009, 21:14:24


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
erix
post 6.04.2009, 21:14:14
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ok, ale jak masz tych userów reprezentowanych? Rekord w DB? Pliki? Sam zapis user1:user2?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
b4x
post 6.04.2009, 21:16:04
Post #3





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


Cytat(erix @ 6.04.2009, 20:14:14 ) *
Ok, ale jak masz tych userów reprezentowanych? Rekord w DB? Pliki? Sam zapis user1:user2?




Nie no normalnie w bazie mam użytkowników

id | login | haslo | mail | last_action

- ze strukturą nie ma problemu - zawsze mogę coś dodać.


--------------------
Go to the top of the page
+Quote Post
Spawnm
post 6.04.2009, 21:17:31
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




albo nowa tablica para
id |user1 |user2

albo w istniejącej dodać pole para i tam wpisać id/nick osoby nr2
Go to the top of the page
+Quote Post
b4x
post 6.04.2009, 21:18:45
Post #5





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


@Spawnm - mi chodzi jak to 'wylosować', nie losując już osób w parach.

- Na starcie nikt nie ma pary. winksmiley.jpg


Może "jaśniej" to opiszę.

1. Użytkownik wchodzi sobie na wybierz.php.
2. W pliku wybierz.php ma mu "wylosować" drugą osobę do pary, z tych wszystkich które są aktualnie na wybierz.php, i nie posiadają pary.
3. Jednego z drugim ma połączyć - i poinformować obojga.

Ten post edytował b4x 6.04.2009, 21:21:12


--------------------
Go to the top of the page
+Quote Post
kantek
post 7.04.2009, 07:31:14
Post #6





Grupa: Zarejestrowani
Postów: 73
Pomógł: 15
Dołączył: 2.04.2009
Skąd: koszalin

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


Może tak w tablicy oczywiście twoje id

Tablice sobie mieszasz (losowo się układają elementy) i
układasz w pary 1z2, 3z4 itd.

  1. <?php
  2. $tab = array(1,2,3,15,21,31,41,55,100,200);
  3. shuffle($tab);
  4.  
  5. foreach($tab as $var){
  6.    if($i++ % 2 == 0){
  7.        echo "<br />para  : ";
  8.    }
  9.    echo $var.' , ';
  10. }
  11. ?>



Pozdrawiam


--------------------
kantek.com.pl
Go to the top of the page
+Quote Post
erix
post 7.04.2009, 14:51:13
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
- ze strukturą nie ma problemu - zawsze mogę coś dodać.

Najprościej byłoby chyba zrobić coś takiego: dodajesz kolumnę pair, która by zawierała info o drugim użytkowniku ("na krzyż") i przy wybieraniu sprawdzasz, czy ta kolumna jest pusta.

Choć dużo bardziej eleganckim (relacyjnym) rozwiązaniem byłoby IMHO rozdzielenie tego na osobną tabelę z powiązaniami.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
b4x
post 7.04.2009, 18:17:58
Post #8





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


Zrobiłem na razie tabelę `queue`:

id | UserID | ConnectedTo | PairID | Status |

1 | VKodK | vtEKvotEorvre | VrmvetASN | 2
2 | vtEKvotEorvre | VKodK | VrmvetASN | 2


Przy wejściu na wybierz.php dodaje użytkownika do kolejki, szukam mu osoby do rozmowy, po załadowaniu strony (SELECT * FROM `queue` WHERE `UserID` = "'.$UserID.'" AND `Status` = "1"')

jeśli nie znalazło, odpytuje ajaxem - do czasu znalezienia drugiej osoby.

Po znalezieniu

  1. <?php
  2. mysql_query ('UPDATE `queue` SET `ConnectedTo` = "'.$this->escape($ConnectedTo).'", `PairID` = "'.$this->escape($PairID).'", `Status` = "2" WHERE `UserID` = "'.$this->escape($UserID).'"');
  3.        mysql_query ('UPDATE `queue` SET `ConnectedTo` = "'.$this->escape($UserID).'", `PairID` = "'.$this->escape($PairID).'", `Status` = "2" WHERE `UserID` = "'.$this->escape($ConnectedTo).'"');
  4. ?>


Początkowo: ConnectedTo | PairID - jest puste.

Jest to dobrym rozwiązaniem ;-) ?

Ten post edytował b4x 7.04.2009, 18:33:57


--------------------
Go to the top of the page
+Quote Post

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: 20.07.2025 - 07:12