Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Skrypt znajomych dokończenie
kalafior122
post 18.06.2012, 13:02:12
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


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.

Ten post edytował kalafior122 18.06.2012, 13:08:31
Go to the top of the page
+Quote Post
mikolaj51
post 18.06.2012, 13:20:49
Post #2





Grupa: Zarejestrowani
Postów: 59
Pomógł: 13
Dołączył: 16.03.2012

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


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.  
Go to the top of the page
+Quote Post
thek
post 18.06.2012, 13:21:58
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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"?


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
kalafior122
post 18.06.2012, 13:31:24
Post #4





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


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

Ten post edytował kalafior122 18.06.2012, 13:34:31
Go to the top of the page
+Quote Post
thek
post 18.06.2012, 16:00:32
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
kalafior122
post 18.06.2012, 20:04:31
Post #6





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


nie rozumiem ;(
Go to the top of the page
+Quote Post
phpion
post 18.06.2012, 20:15:28
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Ż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.
Go to the top of the page
+Quote Post
kalafior122
post 19.06.2012, 10:51:33
Post #8





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


dobra, ale jak dodać do tego wyświetlanie bo zapytanie szukające mam poprawnie może dłuższe, ale jest smile.gif
Go to the top of the page
+Quote Post
phpion
post 19.06.2012, 11:00:22
Post #9





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




mysql_fetch_assoc tu masz przykład.
Go to the top of the page
+Quote Post
kalafior122
post 19.06.2012, 11:30:07
Post #10





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


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...
Go to the top of the page
+Quote Post
phpion
post 19.06.2012, 11:49:24
Post #11





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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;
Go to the top of the page
+Quote Post
kalafior122
post 19.06.2012, 12:19:24
Post #12





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


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źć

Ten post edytował kalafior122 19.06.2012, 12:25:27
Go to the top of the page
+Quote Post
phpion
post 19.06.2012, 12:25:58
Post #13





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Pewnie nie nawiązałeś połączenia z bazą (mysql_connect) i nie wybrałeś bazy (mysql_select_db).
Go to the top of the page
+Quote Post
kalafior122
post 19.06.2012, 12:28:06
Post #14





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


Połączenie jest inaczej by reszta funkcji nie działa
Go to the top of the page
+Quote Post
phpion
post 19.06.2012, 12:31:17
Post #15





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Po mysql_query() daj sobie:

To powinno Cię naprowadzić co jest nie tak.

PS: Zakładam, że pod $twoje_id masz podstawioną liczbę.
Go to the top of the page
+Quote Post
kalafior122
post 19.06.2012, 12:41:45
Post #16





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


Column 'status' in where clause is ambiguous
z jakiej paki kiedy w zapytaniu i w tabeli wynosi 1 questionmark.gif?
Go to the top of the page
+Quote Post
phpion
post 19.06.2012, 12:43:42
Post #17





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Pewnie w obu tabelach masz tą kolumnę. Daj user_znajomi.status = 1
Go to the top of the page
+Quote Post
kalafior122
post 19.06.2012, 12:47:12
Post #18





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


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
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: 19.07.2025 - 06:16