Autor Zpráva
alan1133
Profil *
Zdravím,dělám si takovej web,kde prostě budou moct si uživatele přidat další uživatele do přátel..
všechno funguje,ale ted mě napadlo...
mám stránku,kde zobrazuju všechny uživatele aby si někdo vybral,a přidal si ho..
a napadlo mě,jak udělat,aby mě v tom seznamu nebylo vidět a lidi co už mám přidaný?
dá se to nějak udělat ještě v mysql query? nebo se to už bude muset dělat podmínkou popř jiným způsobem?
PS k tomuhle mám 2 tabulky
uzivatele (tady se po registraci objevěj všichni kde mají informace heslo,jmeno apod..)
pratele (tady mám spojení idcek..(mám hlavní ID toho sloupce,pak moje ID a ID toho,koho jsem si přidal)
díky za vaše návrhy
jdanek
Profil
zkoušel sis to po sobě přečíst? je to nečitelné... už to čtu po třetí a pořád nevím co chceš
alan1133
Profil *
tak to se omlouvám,upřesním to..
mám script,kterej vypíše všechny uživatele.
(jsem přihlášenej,a mám i nějaký lidi v přátelých)
jak udělat,aby v tom seznamu jsem se neobjevil já,i přátelé,který jsem si přidal?
Again
Profil
Pokud jsem to správně pochopil, tak to lze ošetřit přímo v dotazu. Při výběru přátel z databáze stačí přidat:

AND WHERE id != $mojeID;
nemeja
Profil
WHERE id != id_pratele AND id != id_pratele2...

takhle nejak

// mobil
alan1133
Profil *
dobře,díky...
ale ještě,když nemám žádný přátelé,tak mě to napíše chybu,jak tohle obejít?aby to nepsalo chybu když nemám žádný přátelé v databázi?
píše to:
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in /home/users/alan/../web/uzivatele.php on line 103
Tori
Profil
Zkusila bych tohle (edit: mělo by to vyřešit i zmíněný problém ↑):
SELECT u.id, u.login FROM uzivatele u
WHERE NOT EXISTS (SELECT * FROM pratele p WHERE p.uzivatel = $mojeID AND p.pritel = u.id)
AND u.id != $mojeID
alan1133
Profil *
Tori:
no,já budu muset udělat asi 2 dotazy ne?
jeden na jednu tabulku,a druhou na ní nebo ne?..
jelikož potřebuju vědět jak ID přítele,tak i ID uživatele+informace z první tabulky(uzivatel)
tady je schema tabulky
Tabulka "pratele"
sloupce "id,uzivatel,pritel" (id je nastavenej na auto_increment,ostatní jsou ID)

Tabulka "uzivatele"
sloupce "id,login"
jak by měl teda vypadat dotaz abych měl oba dotazy?
Tori
Profil
Mělo by to jít jedním dotazem, zkuste to.
alan1133
Profil *
a jak dát do dotazu 2 tabulky?
Someone
Profil
alan1133:
Hledej JOIN příp. LEFT JOIN
alan1133
Profil *
Tori:
Zkusila bych tohle (edit: mělo by to vyřešit i zmíněný problém ↑):
>
>
>
SELECT u.id, u.login FROM uzivatele u
WHERE NOT EXISTS (SELECT * FROM pratele p WHERE p.uzivatel = $mojeID AND p.pritel = u.id)
AND u.id != $mojeID
můžeš mě prosím ten script objasnit?
nějak ho nechápu..díky
Tori
Profil
V proměnné $mojeID je ID přihlášeného uživatele. Poddotaz SELECT * FROM pratele p WHERE p.uzivatel = $mojeID AND p.pritel = u.id zjistí z tabulky přátel, koho má tento uživatel přidaného. Hlavní dotaz (SELECT u.id, u.login FROM uzivatele u) vybere všechny uživatele, kteří mají jiné ID než přihlášený uživatel (u.id != $mojeID) a zároveň to nejsou jeho přátelé (WHERE NOT EXISTS poddotaz).
alan1133
Profil *
aha,můžeš mě to skontrolovat kde mám chybu? jelikož mě to píše
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/users/alan/../web/uzivatele.php on line 102

102 je ten while(....
$query = MySQL_Query("SELECT * FROM uzivatele WHERE NOT EXISTS (SELECT * FROM pratele WHERE uzivatel = '{$_SESSION['id']}' AND pratele = 'id')AND id != '{$_SESSION['id']}'"); 
                                                    
  while($Vysledek = mysql_fetch_array($query)){
Díky
Tori
Profil
$query = mysql_query("SELECT * FROM uzivatele u WHERE NOT EXISTS (SELECT * FROM pratele WHERE uzivatel = '{$_SESSION['id']}' AND pritel = u.id) AND u.id != '{$_SESSION['id']}'"); 
alan1133
Profil *
jo aha...tak to jsem si neuvědomyl že to tam je schválně...koukám že v mysql query jsem hodně začátečník
Díky moc:)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: