Zadejte hledaný výraz...

V odeslané zprávě na chatu zvýraznění jména.

table
verified
rating uzivatele
25. 3. 2014 16:02:41
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:
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;
$this->query("
INSERT INTO `chat` (`id`, `message`, `timestamp`, `ip`)
VALUES (" . (int)$id.", '" .$this->db->real_escape_string($message) ."', UNIX_TIMESTAMP(), '$adr')
");
}
}
Výpis chatu:
session_start();
require_once "../core/init.php";
if (isset($_POST) === true && empty($_POST) === false) {
$chat = new Chat();
$method = trim($_POST);
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('
', '
', '
' , '
', '
', '
', '
' , '
' , '
' , '
' , '
' , '
' , '
',
);
$text = nl2br($message);
$text = str_replace($textsmile, $graphicsmile, $text);
$date = $message;
$text = preg_replace('#(^|s)(+://(?)*)#is', '\1odkaz>>', $text);
$text = preg_replace('#(^|s)((www|ftp).(?)*)#is', '\1odkaz>>', $text);
$text = preg_replace('#(^|s)((+)@((?)*))#is', '\1email', $text);
?>
> :
' ; ?>
}
}
} else if ($method === 'throw' && isset($_POST) === true) {
$message = trim($_POST);
if (empty($message) === false) {
$chat->throwMessage($_SESSION, $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.
25. 3. 2014 16:02:41
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009476
tomve
verified
rating uzivatele
(22 hodnocení)
25. 3. 2014 16:40:42
bych to udělal takhle:
"@nick: text" --> preg_replace - zvýraznit nick --> zapsat do db s tagem ... protože jinak by se mohl zvýraznit i text "hledej tady:" nebo bys musel skrz db hledat, jestli ten nick existuje, pak podle výsledku (ne)zvýraznit
25. 3. 2014 16:40:42
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009475
iTerminator
verified
rating uzivatele
(9 hodnocení)
25. 3. 2014 16:43:01
Je to jednoduché, určitě máš někde uložené jméno toho uživatele, takže jenom replacneš to jméno toho uživatele ve zprávě za jméno uživatele, které bude obaleno fontem či jiným tagem.
$message = "Ahoj, dnes je fakt skvělej den, nemám pravdu uživateli jménem iTerminator"; // samotná zprávy
$user = "iTerminator"; // sem dosadíš jméno uživatele podle libosti
$user_format = "" . $user . ""; // zde je obalení jména tagy či styly
$message = str_replace($user, $user_format, $message); // replacneš jméno za jméno s tagem ve zprávě
echo $message;
Je to pouze příklad, ale je použitelný, pominu-li menší úpravy a dosazení hodnot z DB.
25. 3. 2014 16:43:01
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009474
tomve
verified
rating uzivatele
(22 hodnocení)
25. 3. 2014 16:50:58
iTerminator: jak to chceš dosadit, když ti odepíšu ručně? To bys musel projet každý string s dvojtečkou skrz db nebo doufat, že někdo nenapíše "hledej tady:" ... fakt bych to řešil formátem @nick:, preg_replace a je hotovo
edit nebo jen @nick, ta dvojtečka je tam vcelku naprd, pač nick s mezerou není moc cool
25. 3. 2014 16:50:58
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009473
iTerminator
verified
rating uzivatele
(9 hodnocení)
25. 3. 2014 17:03:15
Možná jsem udělal chybu, každopádně obdržel jsem bodík od zadavatele, tudíž očekávám, že i přes možnou chybu dostal to, co chtěl.
25. 3. 2014 17:03:15
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009472
tomve
verified
rating uzivatele
(22 hodnocení)
25. 3. 2014 17:04:03
já ho dostal taky heheč :P
25. 3. 2014 17:04:03
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009471
iTerminator
verified
rating uzivatele
(9 hodnocení)
25. 3. 2014 17:05:25
Pak tedy není co řešit.
25. 3. 2014 17:05:25
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009470
table
verified
rating uzivatele
25. 3. 2014 19:47:57
Zkusil jsem toto:
$text = nl2br($message);
$user = $message; // sem dosadíš jméno uživatele podle libosti
$user_format = "".$user.""; // 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.
25. 3. 2014 19:47:57
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009469
iTerminator
verified
rating uzivatele
(9 hodnocení)
25. 3. 2014 20:01:33
Napsal table;1072014
Zkusil jsem toto:
$text = nl2br($message);
$user = $message; // sem dosadíš jméno uživatele podle libosti
$user_format = "".$user.""; // 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.
Proměnnou $user ber jako ten řetězec, který se má vyhledat, čili tam musíš dosadit tu dvoutečku.
25. 3. 2014 20:01:33
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009468
table
verified
rating uzivatele
25. 3. 2014 20:03:13
$user = $message.":";
Takto jsem to zkusil a také nepomohlo.
25. 3. 2014 20:03:13
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009467
iTerminator
verified
rating uzivatele
(9 hodnocení)
25. 3. 2014 20:06:30
Je docela dost možné, že máš před/po dvojtečce mezeru, takhle by to hledalo asi takovýto výraz, řekněme, že jméno je "Josef".
A v případě, že formát ve zprávě je jiný, třeba s mezerou.
Tak se řetězce neshodnou, je tedy třeba ten formát, nebo-li výraz upřesnit.
25. 3. 2014 20:06:30
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009466
table
verified
rating uzivatele
25. 3. 2014 20:11:17
Tak jsem zkusil mezeru před jménem, za dvojtečkou a stejně nic.
Zde je náhled chatu http://erasttest.comehere.cz/chat/
25. 3. 2014 20:11:17
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009465
iTerminator
verified
rating uzivatele
(9 hodnocení)
25. 3. 2014 20:15:47
Hodíš sem prosím celý kod?
25. 3. 2014 20:15:47
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009464
table
verified
rating uzivatele
25. 3. 2014 20:16:41
Nyní script který zobrazuje zprávy je :
session_start();
require_once "../core/init.php";
if (isset($_POST) === true && empty($_POST) === false) {
$chat = new Chat();
$method = trim($_POST);
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('
', '
', '
' , '
', '
', '
', '
' , '
' , '
' , '
' , '
' , '
' , '
',
);
$text = nl2br($message);
$text = str_replace($textsmile, $graphicsmile, $text);
$user = $message; // sem dosadíš jméno uživatele podle libosti
$user_format = "".$user.""; // zde je obalení jména tagy či styly
$text = str_replace($user, $user_format, $text);
$date = $message;
$text = preg_replace('#(^|s)(+://(?)*)#is', '\1odkaz>>', $text);
$text = preg_replace('#(^|s)((www|ftp).(?)*)#is', '\1odkaz>>', $text);
$text = preg_replace('#(^|s)((+)@((?)*))#is', '\1email', $text);
?>
> »
' ; ?>
}
}
} else if ($method === 'throw' && isset($_POST) === true) {
$message = trim($_POST);
if (empty($message) === false) {
$chat->throwMessage($_SESSION, $message);
}
}
}
?>
25. 3. 2014 20:16:41
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009463
iTerminator
verified
rating uzivatele
(9 hodnocení)
25. 3. 2014 20:18:15
Hodíš sem prosím to, co vrátí funkce var_dump na proměnnou $user?
25. 3. 2014 20:18:15
https://webtrh.cz/diskuse/v-odeslane-zprave-na-chatu-zvyrazneni-jmena#reply1009462
Pro odpověď se přihlašte.
Přihlásit