Ho queste 3 tabelle con i rispettivi valori:
Codice PHP:
CREATE TABLE utenti(
id_utente int unsigned AUTO_INCREMENT NOT NULL default '0',
id_gruppo tinyint unsigned NOT NULL default '0',
username varchar(50) NOT NULL default '',
password char(8) NOT NULL default '',
PRIMARY KEY(id_utente)
);
INSERT INTO utenti VALUES (1, 1, 'Alessandro Admin', 'password');
INSERT INTO utenti VALUES (2, 2, 'Luca', 'password');
INSERT INTO utenti VALUES (3, 3, 'Gatsu', 'password');
// -----------------------------------------------------------------
CREATE TABLE gruppi(
id_gruppo tinyint unsigned AUTO_INCREMENT NOT NULL default '0',
nome_gruppo varchar(100) NOT NULL default '',
mod_profili tinyint unsigned NOT NULL default '0', // permesso per modificare i profili
mod_discussioni tinyint unsigned NOT NULL default '0', // permesso per modificare le discussioni
PRIMARY KEY(id_gruppo)
);
INSERT INTO gruppi VALUES (1, 'Amministratori', 1, 1);
INSERT INTO gruppi VALUES (2, 'Moderatori', 0, 1);
INSERT INTO gruppi VALUES (2, 'Utenti', 0, 0);
// -----------------------------------------------------------------
CREATE TABLE online
id_utente int unsigned AUTO_INCREMENT NOT NULL default '0',
tempo_connessione char(10) NOT NULL DEFAULT '',
PRIMARY KEY(id_utente)
);
E successivamente effettuato questa query, è giusta ? Se è giusta, c'è un modo per farla in modo più elegante?
Codice PHP:
$q = mysql_query("SELECT u.*, g.mod_profili, g.mod_discussioni, o.* FROM utenti AS u, gruppi AS g, online AS o INNER JOIN u.id_utente = o.id_utente AND u.id_gruppo = g.id_gruppo AND g.id_utente = ".intval($_COOKIE['id']));
$utente = mysql_fetch_array($q);
if ( $utente['mod_profili'] == 1 OR $utente['mod_discussioni'] == 1 )
mostra_pannello_amministrativo();
else
mostra_pannello_utente();
// ... MOSTRA GLI UTENTI CONNESSI