Pereiti prie turinio

Online friends - kaip daryti su PHP?


Rekomenduojami pranešimai

Paieškoje radau užuominų, tačiau gal jau kas darėt ir daug maž nupasakot galėtumėt principus?

 

Vartotojų duomenų bazėje prie ID galima saugoti ir paskutinio prisijungimo laiką, taip išfiltruoti galima visus prisijungusius prie tinklapio. O kaip rūšiuoti tik tam tikrus (kalba eina apie draugus) šiuo metu prisijungusius? Gal atskiroje MySql lentelėje saugoti laukus: ID, ir jo draugų sąrašą 1-15-65-145-2-12 o paskui su explode funkcija susikelti juos į masyvą ir lyginti su visais prisijungusiais?

 

Aš kol kas tik tiek radau ir sugalvojau, gal kas pasiūlysit ką nors kitką? Ačiū :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pirma lentelė `USERS` (`ID`, `last_seen`...).

Antra lentelė `FRIENDS` (`ID`, `user_id`, `friend_id`).

 

SELECT * FROM `USERS` u 
LEFT JOIN `FRIENDS` f 
ON (u.`ID` = f.`friend_id` AND f.`user_id` = '123') # su PHP paduodi vartotojo ID
WHERE u.`lastseen` > '2011-07-17 12:15:00' # su PHP pareguliuosi kokią datą paduoti

 

Kažkas tokio. Nieko netestavau, bet esmei suprast turėtų tikt.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Geriau pateik sql komanda, kuria naudoji online draugam gauti, ir draugu lenteles struktura.

 

O siaip, jei zinai visu draugu id, tai gali panaudoti "id in (2,4,6,8,<vardini draugu id>)"

http://www.webdevelopersnotes.com/tutorials/sql/tutorial_mysql_in_and_between.php3

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pirma lentelė `USERS` (`ID`, `last_seen`...).

Antra lentelė `FRIENDS` (`ID`, `user_id`, `friend_id`).

 

SELECT * FROM `USERS` u 
LEFT JOIN `FRIENDS` f 
ON (u.`ID` = f.`friend_id` AND f.`user_id` = '123') # su PHP paduodi vartotojo ID
WHERE u.`lastseen` > '2011-07-17 12:15:00' # su PHP pareguliuosi kokią datą paduoti

 

Kažkas tokio. Nieko netestavau, bet esmei suprast turėtų tikt.

 

Dėkui, lentelių struktūrą supratau, pasigilinsiu dar į sql užklausą, nes kol kas dariau tik paprastas. Dar kart ačiū :)

 

Geriau pateik sql komanda, kuria naudoji online draugam gauti, ir draugu lenteles struktura.

 

O siaip, jei zinai visu draugu id, tai gali panaudoti "id in (2,4,6,8,<vardini draugu id>)"

http://www.webdevelo...nd_between.php3

 

Atrodo ganėtinai paprasta ir aišku, tik kažin geriau naudoti IN ar daryti kaip Jonaitis sako.. Kad naudoti mažiau resursų..

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na štai ką sugalvojau, jei kas nors blogai pataisykit, bet išmėginau ir ši užklausa man idealiai veikia, taigi pasidalinu su visai, gal dar kam padės:

 

SELECT data, friend 
FROM users 
LEFT JOIN friends 
ON users.id=friends.friend 
WHERE friends.id="nurodau ID su PHP kad nerodytų visų online" 
AND users.data>"atitinkamai laikas po kurio dar skaitome jog vartotojas online"

 

 

USERS
+-------------------+
|  ID  |    DATA    |
+-------------------+
|  1   |   20:30 	|
+-------------------+
|  2   |   20:45 	|
+-------------------+
.
.
.

+-------------------+
|  n   |   20:55 	|
+-------------------+

 

 

 

 

FRIENDS
+-------------------+
|  ID  |  FRIEND |
+-------------------+
|  1   |   2              |
+-------------------+
|  2   |   1         	|
+-------------------+
.
.
.

+-------------------+
|  15   |  45          |
+-------------------+

 

 

Aišku darau gal tokią blogybę kad FRIENDS lentelėje surašinėju draugus 1-2 , 2-1 kad nereiktų atlikti kitų sudėtingų veiksmų norint surūšiuoti kuris kurio ieško prisijungusio.

Redagavo SIEBEL
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...