Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wspólni znajomi
Forum PHP.pl > Forum > Przedszkole
Johnas
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:



Zrobiłem coś takiego ale to niestety nie działa 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. ?>
bmL
Naprawdę intuicyjne nazwy zmiennych 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 smile.gif ale ja bym zostawił w celu podwyższenia wydajności smile.gif
Johnas
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 sad.gif


Pomoże ktoś ?;>
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.