Ciao,
secondo me cerchi di formattare il testo fuori dal fetch dell'array, per cui non trova alcun valore.

Prova così:
Codice PHP:

............
else {
    
$last = (isset($_GET['last']) && $_GET['last'] != '') ? $_GET['last'] : 0;
    
$sql "SELECT message_id, user_name, message, date_format(post_time, '%H:%i') as post_time, TIPO" .
        
" FROM message WHERE chat_id = " db_input($_GET['chat']) . " AND message_id > " $last;
    
$message_query db_query($sql);

    
//Loop through each message and create an XML message node for each.
    
while($message_array db_fetch_array($message_query)) {

       
$msg '';
       
$tipo=$message_array['TIPO'];
        switch (
$tipo) {
        case
"1":
          
$msg '<font color="#FFFFFF">'.$message_array['message'].'</font>';
          break;
        case
"2":
          
$msg '<font color="#000000">'.$message_array['message'].'</font>';
          break;
        }
        
$xml .= '<message id="' $message_array['message_id'] . '">';
        
$xml .= '<text>' $msg '</text>';
        
$xml .= '</message>';
    }

ti consiglio anche di mettere un default allo switch altrimenti se il TIPO non viene valorizzato il relativo messaggio non viene visualizzato.

Ciao