IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Mechanismus zpráv v chatu

Aktivity
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21.6.2018 17:21

Ahoj,
snažím se udělat chat, ale nevím, jak zobrazovat zprávy od zdola nahoru. Protože když používám,

foreach($zpravy as $zprava)
echo($zprava['zprava']);

tak je to naopak. Pro získávání zpráv používám

$zpravy = Db::dotazVsechny('SELECT *
FROM chat
ORDER BY zprava_id DESC');
 
Odpovědět
21.6.2018 17:21
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Jakub Du
Ondřej Štorc:21.6.2018 17:35

Tak použij dotaz:

$zpravy = Db::dotazVsechny('SELECT *
FROM chat
ORDER BY zprava_id ASC');
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
21.6.2018 17:35
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21.6.2018 18:41

A mohli by jste mi ještě poradit?
Když tam dám,

$zpravy = Db::dotazVsechny('SELECT *
FROM chat
ORDER BY zprava_id ASC LIMIT 20');

tak se zobrazí pouze prvních dvacet zpráv a další se již nepřidávají.

Editováno 21.6.2018 18:41
 
Nahoru Odpovědět
21.6.2018 18:41
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá na Jakub Du
Jindřich Máca:21.6.2018 18:52

To je správně. Tenhle dotaz vrátí první 20 zpráv a hotovo. Pokud chceš někam přidávat nějaké další zprávy, musíš položit další dotaz/y nebo tenhle adekvátně upravit. Vše se logicky odvíjí od toho, co to má vlastně ve výsledku dělat... :-`

 
Nahoru Odpovědět
21.6.2018 18:52
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21.6.2018 18:58

Špatně jsem to napsal. Potřebuji aby se zobrazilo posledních 20 zpráv.

 
Nahoru Odpovědět
21.6.2018 18:58
Avatar
Neaktivní uživatel:21.6.2018 19:01
$zpravy = Db::dotazVsechny('SELECT *
FROM chat
ORDER BY zprava_id DESC LIMIT 20');

Mělo by to fungovat :)

Nahoru Odpovědět
21.6.2018 19:01
Neaktivní uživatelský účet
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21.6.2018 19:03

To jo, ale ne od zdola nahoru.

 
Nahoru Odpovědět
21.6.2018 19:03
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:21.6.2018 19:04

Proč sem píšeš něco, co se dá složit z původní (nechtěné) a poslední verze?

Nahoru Odpovědět
21.6.2018 19:04
Neaktivní uživatelský účet
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21.6.2018 19:09

A jak, jelikož když tam bude ASC a LIMIT 20, tak se zobrazí 20 prvních zpráv a poslední se nepřidají. Když tam bude DESC, tak se zobrazí, ale ze shora dolu. Ja potřebuji, aby se zobrazilo 20 zpráv ze zdola nahoru, tudíž aby nejnovější zprávy byly dole.

 
Nahoru Odpovědět
21.6.2018 19:09
Avatar
Odpovídá na Jakub Du
Neaktivní uživatel:21.6.2018 19:11

Na co to byla reakce? Znáš tlačítko <i>Odpovědět</i>?

Nahoru Odpovědět
21.6.2018 19:11
Neaktivní uživatelský účet
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21.6.2018 19:46

To byla otázka, jak to tedy udělat.

 
Nahoru Odpovědět
21.6.2018 19:46
Avatar
Odpovídá na Jakub Du
Neaktivní uživatel:21.6.2018 20:07
  1. v tom případě používej otazník
  2. nemůžeš to prostě otočit? Sice PHP moc neumím, ale určitě tam na to funkce bude. A kdyžtak to přece zvládneš sám, ne? :-)
Nahoru Odpovědět
21.6.2018 20:07
Neaktivní uživatelský účet
Avatar
Jakub Du
Člen
Avatar
Odpovídá na Neaktivní uživatel
Jakub Du:21.6.2018 20:08

Hledal jsem docela dlouho, ale nic jsem nenašel, proto jsem šel sem.

 
Nahoru Odpovědět
21.6.2018 20:08
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Jakub Du
Ondřej Štorc:21.6.2018 20:28

Promiň, ale první dotaz na google a: http://php.net/…-reverse.php

foreach($zpravy as array_reverse($zprava))
        echo($zprava['zprava']);
Nahoru Odpovědět
21.6.2018 20:28
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21.6.2018 21:00

Takhle mi to nefunguje, ale když udělam,

$zpravy = array_reverse($dotaz);

tak to funguje. Děkuji.

 
Nahoru Odpovědět
21.6.2018 21:00
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:22.6.2018 8:45

Spatne je, ze to primo echujes. Ukladej to do promenne, echuj na zaver. (ledaze bys chtel setrit pamet) Pak s tim muzes snadno carovat.

$str = '';
foreach ($zpravy as $zprava) $str = $str . $zprava['zprava'];
echo $str;
// ---
$str = '';
foreach ($zpravy as $zprava) $str = $zprava['zprava'] . $str; // reverzni
echo $str;

Je mozne pouzit dvojity sql dotaz

SELECT * FROM (SELECT ... LIMIT 20) x ORDER BY x.neco DESC
Editováno 22.6.2018 8:46
 
Nahoru Odpovědět
22.6.2018 8:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.