Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wspólni znajomi
Johnas
post
Post #1





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


Witam jak zrobić zapytanie liczące wspólnych znajomych bo głowię się kilka dni i nie wiem. Szukałem w google ale nie ma napisane dokładnie jak zrobić zapytanie...
SQL ze znajomymi wygląda u mnie tak:

(IMG:http://youphoto.pl/sql.png)

Zrobiłem coś takiego ale to niestety nie działa (IMG:style_emoticons/default/sad.gif)
  1. <?php
  2. $myid = $_SESSION['id'];
  3. $result007 = mysql_query("SELECT * FROM znajomi WHERE id_dodaj=$getek AND potwierdzil=1 OR id_zap=$getek AND potwierdzil=1 ORDER BY id ") or mysql_error();
  4. $result008 = mysql_query("SELECT * FROM znajomi WHERE id_dodaj=$myid AND potwierdzil=1 OR id_zap=$myid AND potwierdzil=1 ORDER BY id ") or mysql_error();
  5. $ilez7 = mysql_num_rows($result007);
  6. $_SESSION['ilez'.$getek.''] = 0;
  7.  
  8.  
  9. while($row007 = mysql_fetch_array($result007, MYSQL_BOTH)) {
  10. $z1 = $row007['id_dodaj'];
  11. $z2 = $row007['id_zap'];
  12. if ($z1 == $getek){
  13. $toz = $z2;
  14. } else {
  15. $toz = $z1;
  16. }
  17.  
  18. while($row008 = mysql_fetch_array($result008, MYSQL_BOTH)) {
  19. $z3 = $row008['id_dodaj'];
  20. $z4 = $row008['id_zap'];
  21. if ($z3 == $gmyid){
  22. $noz = $z4;
  23. } else {
  24. $noz = $z3;
  25. }
  26.  
  27.  
  28. $liczymy = mysql_query("SELECT * FROM znajomi WHERE id_dodaj='$toz' AND id_zap='$noz' AND potwierdzil=1 OR id_zap='$toz' AND id_dodaj='$noz' AND potwierdzil=1") or mysql_error();
  29.  
  30. $ilez7 = mysql_num_rows($liczymy);
  31.  
  32. }
  33. }
  34. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
bmL
post
Post #2





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


Naprawdę intuicyjne nazwy zmiennych (IMG:style_emoticons/default/biggrin.gif)
Załóżmy że struktura tabeli to [u1, u2, ac]
  1. SELECT u2 FROM znajomi WHERE u1 IN (SELECT u2 FROM znajomi WHERE u1 = $myID AND ac = 1) AND u2 != $myID AND ac = 1

Ręki sobie za to nie dam uciąć ale wygląda OK
Oczywiście w twoim przypadku pewnie wypadało by dopisać warunki które odwracały by u1 i u2. Ale moim zdaniem lepiej dodać skrypt zmodyfikować znajomych tak żeby po zaakceptowaniu znajomego były dwa wpisy np:
mamy userów A i B.
Użytkownik A zaprasza użytkownika B.
W bazie danych dodaje się wpis:
U1 = A, U2= B
kiedy użytkownik B zaakceptuje zaproszenie w bazie tworzy się kolejny wpis:
U1 = B, U2 = A
można by nawet dzięki temu pominąć pole accepted (IMG:style_emoticons/default/smile.gif) ale ja bym zostawił w celu podwyższenia wydajności (IMG:style_emoticons/default/smile.gif)

Ten post edytował bmL 10.03.2011, 00:28:50
Go to the top of the page
+Quote Post
Johnas
post
Post #3





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


No dalej nie wiem... Chce porównać wspólnych znajomych na profilu czyli muszę pobrać znajomych $geta i porównać je z $myid Ale nie wiem jak. Najpierw muszę porównać gdzie ja zapraszałem a potem gdzie oni zapraszali. Ale od tego algorytmu aż mnie głowa boli (IMG:style_emoticons/default/sad.gif)


Pomoże ktoś ?;>

Ten post edytował Jonek_1993 10.03.2011, 17:48:33
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:15