kalafior122
18.06.2012, 13:02:12
Witam robię skrypt znajomych i nie wiem jak ich pokazać stanąłem w tym miejscu:
$twoje_id = $_GET['id'];
................................................................................
.....
$query2 = mysql_query("SELECT * FROM user_znajomi WHERE id_1=$twoje_id AND status=1"); $query3 = mysql_query("SELECT * FROM user_znajomi WHERE id_2=$twoje_id ANd status=1"); {
}
#end
{
echo"są ale nie pokaże bo nie umiem
"; }
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
18.06.2012, 13:20:49
Witaj, w twoim przypadku wyświetlanie by wyglądało następująco:
$twoje_id = $_GET['id'];
................................................................................
$sql = mysql_query("SELECT * FROM user_znajomi WHERE id_1=$twoje_id AND status=1"); {
echo $row['imie'].$row['nazwisko'].'<br/>'; // $row['imie'] - imię to przykładowa nazwa pola z bazy }
}
else{
}
thek
18.06.2012, 13:21:58
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
18.06.2012, 13:31:24
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
18.06.2012, 16:00:32
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:
SELECT u.* FROM
(
SELECT `id_1` FROM `user_znajomi` WHERE `id_2` = WYBRANY_ID AND `status` = 1
UNION
SELECT `id_2` FROM `user_znajomi` WHERE `id_1` = WYBRANY_ID AND `status` = 1
) AS `n`
LEFT JOIN user AS u
ON n.id_1 = u.id
phpion
18.06.2012, 20:15:28
Żadne UNIONy nie są potrzebne. Spróbuj tego:
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
19.06.2012, 10:51:33
dobra, ale jak dodać do tego wyświetlanie bo zapytanie szukające mam poprawnie może dłuższe, ale jest
kalafior122
19.06.2012, 11:30:07
no to wiem ale te twoje zapytanie wkładam do tablicy tak??
co to jest
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
19.06.2012, 11:49:24
Naprawdę ciężko samemu pomyśleć?
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
19.06.2012, 12:19:24
mam tak:
$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"); {
$z_imie = $znajomi['imie'];
$z_nazw = $znajomi['nazwisko'];
$z_fotka = $znajomi['zdj_gl'];
}
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
19.06.2012, 12:25:58
Pewnie nie nawiązałeś połączenia z bazą (
mysql_connect) i nie wybrałeś bazy (
mysql_select_db).
kalafior122
19.06.2012, 12:28:06
Połączenie jest inaczej by reszta funkcji nie działa
phpion
19.06.2012, 12:31:17
Po mysql_query() daj sobie:
To powinno Cię naprowadzić co jest nie tak.
PS: Zakładam, że pod $twoje_id masz podstawioną liczbę.
kalafior122
19.06.2012, 12:41:45
Column 'status' in where clause is ambiguous
z jakiej paki kiedy w zapytaniu i w tabeli wynosi 1

?
phpion
19.06.2012, 12:43:42
Pewnie w obu tabelach masz tą kolumnę. Daj user_znajomi.status = 1
kalafior122
19.06.2012, 12:47:12