Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    170

    Chat, array, formattazione testo

    Ho questo codice che è una parte di codice per una chat.
    Codice PHP:
    //Create the XML response.
    $xml = '<?xml version="1.0" ?><root>';
    //Check to ensure the user is in a chat room.
    if(!isset($_GET['chat'])) {
        $xml .='Your are not currently in a chat session.  [url=""]Enter a chat session here[/url]';
        $xml .= '<message id="0">';
        $xml .= '<text>Your are not currently in a chat session.  &lt;a href=""&gt;Enter a chat session here&lt;/a&gt;</text>';
        $xml .= '</message>';
    } 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)) {
            $xml .= '<message id="' . $message_array['message_id'] . '">';
            $xml .= '<text>' . htmlspecialchars($message_array['message']) . '</text>';
            $xml .= '</message>';
        }
    }
    queste le funzioni prese da file esterno
    Codice PHP:
     function db_query($query$link 'db_link') {
        global 
    $connessione;

        
    $result mysql_query($query$connessione) or db_error($querymysql_errno(), mysql_error());

        return 
    $result;
      }
    //Get a row from the database query
      
    function db_fetch_array($db_query) {
        return 
    mysql_fetch_array($db_queryMYSQL_ASSOC);

    Se lo lascio così, manda alla pagina di visualizzazione i record del campo "message" ordinati per "message_id" e fin qui va bene, ma volevo mandare alla pagina di visualizzazione il testo già formattato con colori, grandezze, ecc diversa a seconda del tipo di messaggio, quindi ho provato a modificare così (posto una delle tante prove fatte tanto per farvi capire cosa vorrei fare):
    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);
        
    $tipo=$message_query['TIPO'];
        
    $msg='';
         switch (
    $tipo) {
         case
    "1":
           
    $msg '<font color="#FFFFFF">'.$message_query['message'].'</font>';
           break;
          case
    "2":
           
    $msg '<font color="#000000">'.$message_query['message'].'</font>';
           break;
         }
        
    //Loop through each message and create an XML message node for each.
        
    while($message_array db_fetch_array($message_query)) {
            
    $xml .= '<message id="' $message_array['message_id'] . '">';
            
    $xml .= '<text>' $msg '</text>';
            
    $xml .= '</message>';
        }

    ma mi rendo conto di sbagliare qualcosa sicuramente ci sono di mezzo gli array, ma non riesco proprio a modificarlo qualcuno mi aiuta?

  2. #2
    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    170
    Grazie, appena posso provo.
    Per quanto riguarda il default non l'ho messo perchè da database è predefinito 1, ma grazie lo stesso

    Edit.
    No non va neanche così non visualizza niente

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    170
    Ok funziona!!!!
    mi sa che c'era qualche parentesi graffa o simili di troppo e ho aggiunto
    Codice PHP:
            $xml .= '<text>' htmlspecialchars($msg) . '</text>'
    Grazieeeeeeee

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.