Autor Zpráva
Trombon
Profil *
Ahoj všem.

Měl bych na Vás dotaz.
Prosil bych o radu jak v odeslané zprávě zvýraznit jméno uživatele z databáze.
Pokud někdo někomu odpovídá a použije jeho nick ve zprávě tak aby se v té zprávě označilo, např. změnilo barvu fontu.
viz. screen.
Screen:


SQL dotaz do db:
<?php
class Chat extends Core{
     public function fetchMessages() {
          $this->query("
           SELECT     `chat`.`message`,
                       `chat`.`timestamp`,
                       `chat`.`ip`,
                       `chat`.`message_id`,
                       `uzivatele`.`jmeno`,
                       `uzivatele`. `id`,
                       `uzivatele`. `admin`
           FROM        `chat`
           JOIN        `uzivatele`
           ON          `chat`.`id` = `uzivatele`.`id`
           ORDER BY    `chat`.`timestamp`
           DESC            
          ");
          
          return $this->rows();
     }
     public function throwMessage($id, $message){
     $adr=$_SERVER["REMOTE_ADDR"];    
         $this->query("
             INSERT INTO `chat` (`id`, `message`, `timestamp`, `ip`)
             VALUES (" . (int)$id.", '" .$this->db->real_escape_string($message) ."', UNIX_TIMESTAMP(), '$adr')
         
         ");
     }
}

Vypis chatu:
<?php
  session_start();
require_once "../core/init.php"; 
if (isset($_POST['method']) === true && empty($_POST['method']) === false) {
   $chat        = new Chat();
   $method      = trim($_POST['method']); 
   
   if ($method === 'fetch') {
   
       $messages = $chat->fetchMessages();
        
       if (empty($messages) === true) {
          echo 'Momentálně zde nejsou žádné zprávy!'; 
       } else {
       
          foreach($messages as $message) {
          $textsmile = array(':-)', ':-(', ':-D', ':-P', ':-p', ';-)', ';)', ':D', 'X[]', 'B-]', ':-!', ':-/', 'blee'); $graphicsmile = array('
<img width="25" height="20" src="/chat/smileys/1.gif">', '
<img width="25" height="20" src="/chat/smileys/2.gif">', '
<img width="25" height="20" src="/chat/smileys/3.gif">' , '
<img width="25" height="20" src="/chat/smileys/4.gif">', '
<img width="25" height="20" src="/chat/smileys/4.gif">', '
<img width="25" height="20" src="/chat/smileys/5.gif">', '
<img width="25" height="20" src="/chat/smileys/5.gif">' , '
<img width="25" height="20" src="/chat/smileys/3.gif">' , '
<img width="25" height="20" src="/chat/smileys/6.gif">' , '
<img width="25" height="20" src="/chat/smileys/7.gif">' , '
<img width="25" height="20" src="/chat/smileys/8.gif">' , '
<img width="35" height="20" src="/chat/smileys/9.gif">' , '
<img width="35" height="20" src="/chat/smileys/10.gif">',  

); 
$text = nl2br($message['message']); 
$text = str_replace($textsmile, $graphicsmile, $text);
$date = $message['timestamp']; 
$text = preg_replace('#(^|\s)([a-z]+://([^\s\w/]?[\w/])*)#is', '\\1<a target="blank" href="\\2" title="\\2" class="koment"><strong>odkaz>></strong></a>', $text);
$text = preg_replace('#(^|\s)((www|ftp)\.([^\s\w/]?[\w/])*)#is', '\\1<a target="blank" href="http://\\2" title="\\2" class="koment">odkaz>></a>', $text);
$text = preg_replace('#(^|\s)(([a-z0-9._%+-]+)@(([.-]?[a-z0-9])*))#is', '\\1<a target="blank" href="mailto:\\2">email</a>', $text); 
         
          ?>  
            <script>
function ConfirmDelete()
{
  var x = confirm("Opravdu chceš danou zprávu smazat?");
  if (x)
      return true;
  else
    return false;
}
</script>         
<div  title="<?php  echo date('d.m.Y H:i', $date); ?> IP: <?php echo $message['ip']; ?>" class="message">                     
  <a onclick="Names('<?php echo $message['jmeno']; ?>:')" href="#" <?php if($message['admin'] == '1') echo 'style="color: #A52A2A; font-weight:bold; text-decoration: underline;" title="Administrátor"' ;ElseIf($message['admin'] == '0')echo'style="color:green" title="Uživatel"'; ?>><?php echo $message['jmeno']; ?></a> :           
  <?php echo $text;?>
  
  <?php  if($_SESSION['admin'] == true) echo '<a href="delete.php?id='.$message['message_id'].'" Onclick="return ConfirmDelete()"><img width="10" src="/img/delete.png"></a>' ;  ?>           
</div>          
<?php
          }
       }
       
       } else if ($method === 'throw' && isset($_POST['message']) === true) {
          $message = trim($_POST['message']);
          if (empty($message) === false) {
               $chat->throwMessage($_SESSION['id'], $message); 
          }
           }    
         
}
?>

Pokud jste to zkoukli až sem tak budu vděčný za každou radu.
Napadlo mě to nějak převést jako převadím ty smajly ale vůbec mě nenapadá jak.
okolojsoucí
Profil
Trombon:
Jak moc jsi se před tím snažil než jsi to rozkopíroval po diskuzích?
Trombon
Profil *
okolojsoucí:
Vůbec nevím co máš namysli.
Pokud jsi někde viděl něco podobného, tak věř že jde stále o stejného člověka s těmi dotazy.
Změna nicku přeci není trestná.


PS: stejný dotaz jsem položil jen zde a na webtrh.cz takže se nedá říct o nějakém rozkopírování.
Trombon
Profil *
Zkusil jsem toto:
$text = nl2br($message['message']); 
$user = $message['jmeno']; // sem dosadíš jméno uživatele podle libosti
$user_format = "<b>".$user."</b>"; // zde je obalení jména tagy či styly
$text = str_replace($user, $user_format, $text);
A nezvýrazňuje mi to to jméno. Ovšem pokud se objevuje někde jinde v textu bez té dvojtečky tak ho to zvýrazní, ovšem ne to s tou dvojtečkou. Právě potřebuji zvýraznění jména s tou dvojtečkou.
Chro
Profil
To znamená, že citované jméno je do chatu vkládáno mimo text zprávy jinou proměnnou.
peta
Profil
Tak pouzij preg_replace, tam muzes omezit pocet zamen, navic pridat "i" pro ruzne velikosti pismen (Jmeno jmENo ...).
Neni mi jasne, proc tak slozite. Jmena preci dodavas zvlast pred zpravu, tak si je rovnou muzes zvyraznit, ne? V textu uz to nema vetsi smysl delat. Navic to muzes resit javascriptem.
Viz Chro, mas to v jine promenne nez $text, pak to samozrejme nefunguje :)

<div  title="<?php  echo date('d.m.Y H:i', $date); ?> IP: <?php echo $message['ip']; ?>" class="message">                     
  <a onclick="Names('<?php echo $message['jmeno']; ?>:')" href="#" <?php if($message['admin'] == '1') echo 'style="color: #A52A2A; font-weight:bold; text-decoration: underline;" title="Administrátor"' ;ElseIf($message['admin'] == '0')echo'style="color:green" title="Uživatel"'; ?>><?php echo $message['jmeno']; ?></a> :           
  <?php echo $text;?>
Trombon
Profil *
Vyřešil jsem to pomocí:
$text = preg_replace('/(.*?) »/', '<b>$1 » </b>', $text);  
peta
Profil
Trombon:
Jj. Ja pouzivam treba s oblibou sprintf. Ta funkce doplnuje do sablony udaje. Mozna by ti to usnadnilo praci nez se placat s <?php echo $a; ?><?php echo $b; ?><?php echo $c; ?>
Example #5 Position specifier with other specifiers
<?php
$format = 'The %2$s contains %1$04d monkeys';
echo sprintf($format, $num, $location);
?>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: