Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Skrypt znajomych dokończenie
Forum PHP.pl > Forum > Przedszkole
kalafior122
Witam robię skrypt znajomych i nie wiem jak ich pokazać stanąłem w tym miejscu:

  1. $twoje_id = $_GET['id'];
  2. ................................................................................
    .....
  3. $query2 = mysql_query("SELECT * FROM user_znajomi WHERE id_1=$twoje_id AND status=1");
  4. $query3 = mysql_query("SELECT * FROM user_znajomi WHERE id_2=$twoje_id ANd status=1");
  5. if(mysql_num_rows($query2) == 0 AND mysql_num_rows($query3) == 0)
  6. {
  7. ECHO 'Brak znajomych';
  8. }
  9. #end
  10. if(mysql_num_rows($query2) >= 1 OR mysql_num_rows($query3) >= 1)
  11. {
  12. echo"są ale nie pokaże bo nie umiem biggrin.gif";
  13. }

Co dalej? Nie proszę o gotowy skrypt bo to było by bez sensu, proszę o drobną sugestię jak to dokończyć jakiego zapytania użyć itp.
mikolaj51
Witaj, w twoim przypadku wyświetlanie by wyglądało następująco:

  1. $twoje_id = $_GET['id'];
  2. ................................................................................
  3.  
  4. $sql = mysql_query("SELECT * FROM user_znajomi WHERE id_1=$twoje_id AND status=1");
  5. if(mysql_num_rows($sql) > 0)
  6. {
  7. while($row = mysql_fetch_assoc($sql)){
  8. echo $row['imie'].$row['nazwisko'].'<br/>'; // $row['imie'] - imię to przykładowa nazwa pola z bazy
  9. }
  10. }
  11. else{
  12. echo 'Brak znajomych';
  13.  
  14. }
  15.  
thek
Na początek.. jaka jest struktura tabeli user_znajomi i co określone pola oznaczają (za co odpowiada status?). Czy jest to struktura na zasadzie "wzajemnej akceptacji", czyli ja Cie dodaję do znajomych, ale musi to być zatwierdzone przez Ciebie, czy po prostu luźne jednostronne, czyli dodaję do znajomych, ale nie wymaga to akceptacji drugiej osoby? Czy są grupy i jaki jest stopień ich wzajemnej widoczności? Czy po dodaniu kogoś do grupy X widzi on/a tylko osoby w grupie X, czy może wszystkich znajomych, nawet z innych grup, niekoniecznie już "publicznych"?
kalafior122
struktura to:
id_1|id_2|status

status odpowiada za potwierdzenie znajomości czyli użytkownik A potwierdza znajomość z użytkownikiem B i następuje zmiana statusu z 0 na 1 co oznacza że pokazywani są u siebie w profilach oraz korzystają z funkcji przeznaczonych dla znajomych... a nazwa tabeli przechowująca dane nazywa się user
thek
Dla takiego układu chyba najprostszą możliwością jest UNION (jako tabela zbierająca id userów) dla JOINa z tabelą userów, ale musiałbyś zobaczyć jak wyjdzie z wydajnością. Powstanie Ci coś w stylu:
  1. SELECT u.* FROM
  2. (
  3. SELECT `id_1` FROM `user_znajomi` WHERE `id_2` = WYBRANY_ID AND `status` = 1
  4. UNION
  5. SELECT `id_2` FROM `user_znajomi` WHERE `id_1` = WYBRANY_ID AND `status` = 1
  6. ) AS `n`
  7. LEFT JOIN user AS u
  8. ON n.id_1 = u.id
kalafior122
nie rozumiem ;(
phpion
Żadne UNIONy nie są potrzebne. Spróbuj tego:
  1. SELECT IF(id_1 = 99, id_2, id_1) AS user_id FROM user_znajomi WHERE (id_1 = 99 OR id_2 = 99) AND STATUS = 1;

W tym zapytaniu ID użytkownika, dla którego szukamy znajomych to 99. W te miejsca podstaw $twoje_id.
kalafior122
dobra, ale jak dodać do tego wyświetlanie bo zapytanie szukające mam poprawnie może dłuższe, ale jest smile.gif
phpion
mysql_fetch_assoc tu masz przykład.
kalafior122
no to wiem ale te twoje zapytanie wkładam do tablicy tak??
co to jest
  1. AS user_id

w tabeli z użytkownikami mam id usera mam nazwane po prostu id.
Mi chodzi o to żeby z tabeli user pobrało imie i nazwisko i avatar...
phpion
Naprawdę ciężko samemu pomyśleć?
  1. SELECT uzytkownicy.* FROM user_znajomi JOIN uzytkownicy ON (uzytkownicy.id = IF(id_1 = 99, id_2, id_1)) WHERE (id_1 = 99 OR id_2 = 99) AND STATUS = 1;
kalafior122
mam tak:
  1. $query = mysql_query("SELECT user.* FROM user_znajomi JOIN user ON (user.id = IF(id_1 = $twoje_id, id_2, id_1)) WHERE (id_1 = $twoje_id OR id_2 = $twoje_id) AND status = 1");
  2. while($znajomi = mysql_fetch_assoc($query))
  3. {
  4. $z_imie = $znajomi['imie'];
  5. $z_nazw = $znajomi['nazwisko'];
  6. $z_fotka = $znajomi['zdj_gl'];
  7. echo"$z_imie";
  8. }


i wyskakuje błąd:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in
wiem że gdzieś jest banał jak tego typu błędach ale nie mogę znaleźć
phpion
Pewnie nie nawiązałeś połączenia z bazą (mysql_connect) i nie wybrałeś bazy (mysql_select_db).
kalafior122
Połączenie jest inaczej by reszta funkcji nie działa
phpion
Po mysql_query() daj sobie:

To powinno Cię naprowadzić co jest nie tak.

PS: Zakładam, że pod $twoje_id masz podstawioną liczbę.
kalafior122
Column 'status' in where clause is ambiguous
z jakiej paki kiedy w zapytaniu i w tabeli wynosi 1 questionmark.gif?
phpion
Pewnie w obu tabelach masz tą kolumnę. Daj user_znajomi.status = 1
kalafior122
tabeli user i w tabeli user_znajomi była kolumna o nawie status w znajomi zmieniłem na stan i działa wielkie dzięki smile.gif smile.gif smile.gif thumbsupsmileyanim.gif
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.