Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.

Diskuze: Mechanismus zpráv v chatu

PHP PHP Mechanismus zpráv v chatu American English version English version

Aktivity (1)
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21. června 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. června 17:21
Avatar
Odpovídá na Jakub Du
Ondřej Štorc:21. června 17:35

Tak použij dotaz:

$zpravy = Db::dotazVsechny('SELECT *
FROM chat
ORDER BY zprava_id ASC');
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 21. června 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. června 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. června 18:41
 
Nahoru Odpovědět 21. června 18:41
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Jakub Du
Jindřich Máca:21. června 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. června 18:52
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21. června 18:58

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

 
Nahoru Odpovědět 21. června 18:58
Avatar
Matěj Strnad:21. června 19:01
$zpravy = Db::dotazVsechny('SELECT *
FROM chat
ORDER BY zprava_id DESC LIMIT 20');

Mělo by to fungovat :)

Nahoru Odpovědět  +1 21. června 19:01
Ty vaše internety!
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21. června 19:03

To jo, ale ne od zdola nahoru.

 
Nahoru Odpovědět 21. června 19:03
Avatar
Odpovídá na Matěj Strnad
Andy Scheuchzer:21. června 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. června 19:04
Za správnost neručím.
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21. června 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. června 19:09
Avatar
Odpovídá na Jakub Du
Andy Scheuchzer:21. června 19:11

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

Nahoru Odpovědět 21. června 19:11
Za správnost neručím.
Avatar
Jakub Du
Člen
Avatar
Jakub Du:21. června 19:46

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

 
Nahoru Odpovědět 21. června 19:46
Avatar
Odpovídá na Jakub Du
Andy Scheuchzer:21. června 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. června 20:07
Za správnost neručím.
Avatar
Jakub Du
Člen
Avatar
Odpovídá na Andy Scheuchzer
Jakub Du:21. června 20:08

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

 
Nahoru Odpovědět  +1 21. června 20:08
Avatar
Odpovídá na Jakub Du
Ondřej Štorc:21. června 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  +1 21. června 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. června 21:00

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

$zpravy = array_reverse($dotaz);

tak to funguje. Děkuji.

 
Nahoru Odpovědět 21. června 21:00
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:22. června 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. června 8:46
 
Nahoru Odpovědět 22. června 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.