ugrás a tartalomhoz

Két adatbázis tábla eredménye

tlaci · 2004. Szep. 13. (H), 17.20
Sziasztok!

A következő problémám van.Van 2 db adatbázistáblám:

Az első:
users

id, name,username,email,password,usertype,block,...stb

A második:
session
username,time,session_id,guest,userid,...stb

Amit szeretnék létrehozni, de nem tudom megcsinálni már egy jóideje:
Az első tábla tartalmát kilistáztatom, majd azt szeretném, hogy az egyes sorokban a felhasználók adatai mellett a másik táblából kiszedett adatok alapján (session-ök és userid-k) meghatározhassam, hogy jelenleg ki van az oldalon online.

A users táblában a felhasználókat az id, a session táblában az userid azonosítja.Ezt a kettőt szeretném összehozni valahogyan. Ha tudtok segíteni, azt megköszönném.

Próbálkozásaim:

Adatbázishoz kapcsolódás:

mysql_select_db($database_db, $db);
$query_online = sprintf("SELECT COUNT(*) FROM session WHERE userid = {$row_users['id']}", $colname_online);
$online = mysql_query($query_online, $db) or die(mysql_error());
$row_online = mysql_fetch_assoc($online);
$totalRows_online = mysql_num_rows($online);

Megjelenítés:

echo $row_online['0']; <--- mindig - az eredménye

A segítségeteket előre is köszönöm.
 
1

RE: Két adatbázis tábla eredménye

kmm · 2004. Szep. 13. (H), 17.54
SELECT * FROM users, session WHERE users.id=session.userid
?

--
üdv: kmm...
3

RE: Két adatbázis tábla eredménye

tlaci · 2004. Szep. 13. (H), 20.34
Szia!

Köszönöm a segítségedet, ezzel a lekérdezéssel működik a dolog.Viszont most egy másik csapdába kerültem.Csak azokat a felhasználókat listázza ki, akik be vannak jelentkezve az oldalra, a többieket viszont nem.

Most igy néz ki a végeredmény:
id username userid
62 admin 62
68 felhasznalo 68

És így kellene kinéznie (szerintem, hogy az online állapotot szerkeszthessem):

id username userid
62 admin 62
63 felhasznalo2 <-- nincs userid, mert nincs session sem
68 felhasznalo 68 / tehát ha nincs userid , akkor a
72 felhasznalo3 felhasználó nincs online /

Emlékezeteim szerint egy tutorial oldalon a SELECT COUNT(*) lekérdezéssel oldották valahogy meg, de nem emlékszem , hogy hogyan és ,hogy hol olvastam.
4

RE

kmm · 2004. Szep. 13. (H), 21.58
erre valo a - lentebb Poetro alltal irt - LEFT JOIN
--
üdv: kmm...
2

Mi is itten a kérdés?

Poetro · 2004. Szep. 13. (H), 18.01
Nem teljesen birom felfogni, mi is akar itt történni...
Miért van szükség sprintf-re??

Gondolom a következőt szeretnéd:
mysql_select_db($database_db, $db);
$query_online = "SELECT * FROM users LEFT JOIN session ON users.id=session.userid");
$online = mysql_query($query_online, $db) or die(mysql_error());
while ($row_online = mysql_fetch_assoc($online)) {
   var_dump($row_online);
}
$totalRows_online = mysql_num_rows($online);

Már ha a kapcsolat a két tábla között az id és a userid alapján van...
A var_dump-os sort persze bármilyen más műveletre cserélheted, amit az egyes sorokkal akarsz csinálni. De legjobb, ha RTM. ( http://hu2.php.net/manual/hu/function.mysqli-fetch-assoc.php )
--------
Poetro