Partiamo dalla query.
Lo username è una stringa giusto ? Allora va contornato da apici e l'operatore corretto da usare non è l'uguale ma il LIKE
PHP:
public function mailbox($username)
{
if($sql="SELECT * FROM mailbox WHERE destinat LIKE '$username' ORDER BY data"){
$row = mysql_fetch_assoc($sql);
}
Ok, a questo punto il controllo che fai sulla creazione della query, questo:
PHP:
if($sql="SELECT * FROM mailbox WHERE destinat LIKE '$username' ORDER BY data"){
è inutile, perché salvo errori di sintassi sarà sempre vero il controllo di un assegnazione il cui risultato è diverso da false.
Terzo punto la successione delle funzioni necessarie per la query.
Non puoi richiedere dati con mysql_fetch_assoc se non hai chiesto al server di caricare un recordset prima.
Ricorda che per eseguire una query di selezione i passaggi sono sempre 3:
- Definizione della query (SELECT campo FROM tabella)
- Richiesta al database ( mysql_query() )
- Recupero delle informazioni ( mysql_fetch_*() )
- Per buona norma ci sarebbe anche un quarto punto: pulizia delle risorse ( mysql_free_result() )
Sistemando il tuo codice verrebbe quindi qualcosa di questo tipo:
PHP:
public function mailbox($username)
{
#> Realizzazione Query
$sql = "SELECT * FROM mailbox WHERE destinat LIKE '$username' ORDER BY data";
$result = mysql_query($sql);
#> Controllo Errori
if (!$result)
die('Errore Mysql: '. mysql_error());
#> Recupero Informazioni
}
Ok, a questo punto abbiamo realizzato la query e abbiamo messo un controllo per verificare la presenza di eventuali errori, ci serve adesso recuperare i dati.
Nell'esempio ti mostro anche come formattarli in una tabella con html:
PHP:
public function mailbox($username)
{
#> Realizzazione Query
$sql = "SELECT * FROM mailbox WHERE destinat LIKE '$username' ORDER BY data";
$result = mysql_query($sql);
#> Controllo Errori
if (!$result)
die('Errore Mysql: '. mysql_error());
#> Formatto una tabella html
echo '<table>';
#> Recupero Informazioni
while ($row = mysql_fetch_assoc($result)) {
#> Formatto una nuova riga nella tabella
echo '<tr>';
echo '<td>', $row['autore'], '</td>';
echo '<td>', $row['messaggio'], '</td>';
echo '</tr>';
}
#> Chiudo la formattazione della tabella
echo '</table>';
#> Libero le risorse impiegate dalla query
mysql_free_result($result);
}
Chiaramente, 'autore' e 'messaggio' li ho inventati io perché non conosco i campi della tua tabella sul database.
Come esempio è molto base, da qui penso che dovresti riuscire a integrarlo come meglio credi.
Ultima cosa, se hai possibilità ti consiglio di passare a mysqli.