allora cerco di essere più chiaro possibile ....
ho tre tabelle messages, comments, users ma quelle che mi servono sono users e messages .
Lo script originale era questo:
Codice PHP:
class Wall_Updates {
// Updates
public function Updates($uid)
{
$query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages M, users U WHERE M.uid_fk=U.uid and M.uid_fk='$uid' order by M.msg_id desc ") or die(mysql_error());
while($row=mysql_fetch_array($query))
$data[]=$row;
return $data;
}
Come puoi vedere c'è U.username e users U.
Modificandolo come serve a me così :
Codice PHP:
class Wall_Updates {
// Updates
public function Updates($uid)
{
$query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created FROM messages M WHERE M.uid_fk='$uid' OR M.uid_fk IN (SELECT user_1 FROM relationship AS r WHERE r.user_2 = '$uid' AND r.amico = 'S') OR M.uid_fk IN (SELECT user_2 FROM relationship AS r WHERE r.user_1 = '$uid' AND r.amico = 'S') order by M.msg_id desc ") or die(mysql_error());
while($row=mysql_fetch_array($query))
$data[]=$row;
return $data;
}
NOn posso aggiungere la tabella users perché se no al posto di vedere solo i post degli amici come funziona correttamente in questa query, mi fa' vedere il post ripetuto per tutti gli utenti registrati.
La mia necessità è quella di aggiungere a quest'ultima query la tabella users per recuperare dei dati che mi servono da stampare e ho pensato di fare una join, ma magari potrebbe bastare una qualsiasi query ecc.
E ho provato così nel pomeriggio:
Codice PHP:
// Updates
public function Updates($uid)
{
$query = mysql_query( "SELECT M.msg_id, M.uid_fk, M.message, M.created, username FROM
messages
INNER JOIN messages M ON (M.uid_fk='$uid' )
INNER JOIN users U ON (M.uid_fk=U.uid )
WHERE
M.uid_fk=U.uid AND M.uid_fk='$uid' OR M.uid_fk IN (SELECT user_1 FROM relationship AS r WHERE r.user_2 = '$uid' AND r.amico = 'S') OR M.uid_fk IN (SELECT user_2 FROM relationship AS r WHERE r.user_1 = '$uid' AND r.amico = 'S') order by M.msg_id desc") or die(mysql_error());
while($row=mysql_fetch_array($query))
$data[]=$row;
return $data;
}
Pero' nn funziona bene perché mi rida' tutti i post
ti posto i campi delle tabelle
Codice PHP:
CREATE TABLE IF NOT EXISTS `users` (
`uid` bigint(20) NOT NULL AUTO_INCREMENT,
`md5_id` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
`full_name` tinytext COLLATE latin1_general_ci NOT NULL,
`username` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
`user_email` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
`email` varchar(100) COLLATE latin1_general_ci NOT NULL,
`user_level` tinyint(4) NOT NULL DEFAULT '1',
`pwd` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
`address` text COLLATE latin1_general_ci NOT NULL,
`country` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
`tel` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
`fax` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
`website` text COLLATE latin1_general_ci NOT NULL,
`date` date NOT NULL DEFAULT '0000-00-00',
`users_ip` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
`approved` int(1) NOT NULL DEFAULT '0',
`activation_code` int(10) NOT NULL DEFAULT '0',
`banned` int(1) NOT NULL DEFAULT '0',
`ckey` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
`ctime` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
`nome_file_vero` varchar(255) COLLATE latin1_general_ci NOT NULL,
`tipo_file` varchar(255) COLLATE latin1_general_ci NOT NULL,
`dati_file` longblob NOT NULL,
PRIMARY KEY (`uid`),
UNIQUE KEY `user_email` (`user_email`),
FULLTEXT KEY `idx_search` (`full_name`,`address`,`user_email`,`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=66 ;
i campi della tabella messages
Codice PHP:
Codice PHP:
CREATE TABLE IF NOT EXISTS `messages` (
`msg_id` int(11) NOT NULL AUTO_INCREMENT,
`message` varchar(200) DEFAULT NULL,
`uid_fk` int(11) DEFAULT NULL,
`ip` varchar(30) DEFAULT NULL,
`created` int(11) DEFAULT '1269249260',
PRIMARY KEY (`msg_id`),
KEY `uid_fk` (`uid_fk`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=274 ;