Autor | Zpráva | ||
---|---|---|---|
Trombon Profil * |
#1 · Zasláno: 25. 3. 2014, 15:23:58
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 |
#2 · Zasláno: 25. 3. 2014, 16:19:11
Trombon:
Jak moc jsi se před tím snažil než jsi to rozkopíroval po diskuzích? |
||
Trombon Profil * |
#3 · Zasláno: 25. 3. 2014, 16:21:42 · Upravil/a: Trombon
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 * |
#4 · Zasláno: 25. 3. 2014, 19:49:28
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); |
||
Chro Profil |
#5 · Zasláno: 25. 3. 2014, 20:06:03
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 * |
#7 · Zasláno: 26. 3. 2014, 17:54:38
Vyřešil jsem to pomocí:
$text = preg_replace('/(.*?) »/', '<b>$1 » </b>', $text); |
||
peta Profil |
#8 · Zasláno: 27. 3. 2014, 09:57:48
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); ?> |
||
Časová prodleva: 10 let
|
0