Salve ragazzi,
sto cercando di esportare su Wordpress gli utenti online di SMF. In parte è stato semplice, ma mi è venuta l'idea di far corrispondere a ogni utente online SMF visualizzato su Wordpress l'ultimo topic in cui hanno postato con il link al post.
Mi sono bloccato e proprio non riesco ad andare avanti. Tutte le prove che faccio, mi danno come risultato l'ultimo post in assoluto inserito nel forum.
Eccovi il codice:
$link = Mysql_connect ('xxxx', 'xxxx', 'xxxx') or die ( 'Errore del database: ' . Mysql_error ());
mysql_select_db('smf') or die('Could not select database');
$query = 'SELECT
lo.ID_MEMBER, lo.logTime, mem.realName, mem.memberName, mem.showOnline,
mg.onlineColor, mg.ID_GROUP, mg.groupName, mem.avatar, mem.posts, mes.ID_MEMBER, mes.ID_MSG, mes.subject, mes.ID_TOPIC
FROM smf_log_online AS lo
LEFT JOIN smf_members AS mem ON (mem.ID_MEMBER = lo.ID_MEMBER)
LEFT JOIN smf_membergroups AS mg ON (mg.ID_GROUP = IF(mem.ID_GROUP = 0, mem.ID_POST_GROUP, mem.ID_GROUP)),
';
$result = mysql_query($query) or die('Query failed: ' . mysql_error()); ?>
Ora non riesco a inserire le colonne di smf_messages (con alias mes.) all'interno del contesto, richiamando la taballe smf_messages.
O meglio, la inserisco dopo LEFT JOIN smf_membergroups in questo modo:
LEFT JOIN smf_messages AS mes ON ( mem.ID_MSG_LAST_VISIT = mes.ID_MSG)
ma il risultato - ahimè! - è l'ultimo post inserito in assoluto. Se poi richiamo direttamente mes.ID_MSG in questo modo:
LEFT JOIN smf_messages AS mes ON mes.ID_MSG
Il risultato è che per ogni utente online mi visualizza tutti i post per quell'utente.
Ma eccovi in php come ho tradotto:
<?php while ($linex = mysql_fetch_array($result, MYSQL_ASSOC))
{
if ($linex['ID_MEMBER'] > 0)
{
echo "\t<table id=\"tablemain\" width=\"95%\"><tr>\n";
// show username & color user
echo "\t<td valign=\"top\" class=\"table2\"><a style=\"color:".$linex['onlineColor'].";\" href=\"urlsito/index.php?action=profile;u=". $linex['ID_MEMBER'] ."\">". $linex['memberName'] ."</a><br/>
<span>".$linex['groupName']."</span></td>\n";
// show last post user
echo "\t<td valign=\"top\" class=\"table3\">Ultimo post inserito in:<br/>
<span><a href=\"urlsito/index.php?topic=". $linex['ID_TOPIC'] .".msg".$linex['ID_MSG']."#msg".$linex['ID_MSG']."\">".substr($linex['subject'],0,30)."</a></span></td>\n";
echo "\t</tr></table>\n";
}
else {
echo "nessun utente registrato nel forum";
}
}
?>
Qualche suggerimento? Ho cercato un po' dappertutto, ma non ho trovato nulla. Essendo peraltro un neofita di php, ovviamente non riesco a intuire ancora bene l'uso delle funzioni e la manipolazione delle query. So per certo che si deve usare LEFT JOIN o INNER JOIN, oppure una semplice funzione PHP di filtraggio, ma non riesco a individuarla.
Vi ringrazio anticipatamente per l'aiuto.