Změny po vydání článků
Čas od času mě nějaký pozorný čtenář upozorní na možné doplnění nebo chybu v článku, někdy mě s odstupem času něco napadne samotného. Pokud to dává smysl a nestačí to na vydání nového článku, tak změny do článků doplňuji. A protože to dělám poctivě pomocí značek ins a del, tak není problém seznam změn v článcích vypsat:
<?php $zmeny = array(); $result = mysql_query("SELECT * FROM clanky WHERE zprava REGEXP '<(ins|del)' ORDER BY id"); while ($row = mysql_fetch_assoc($result)) { preg_match_all('~<(ins|del)[^>]* datetime="(([0-9]{4})-0?([0-9]+)-0?([0-9]+)).*?</(ins|del)>~', $row["zprava"], $matches, PREG_SET_ORDER); foreach ($matches as $val) { $zmeny[$val[2]] .= "<dt>$val[5].$val[4].$val[3] <a href='$row[url].php'>" . htmlspecialchars($row["nadpis"]) . "</a></dt><dd>$val[0]</dd>\n"; } } mysql_free_result($result); ksort($zmeny); // seřazení podle data změny echo "<dl>\n" . implode("", $zmeny) . "</dl>\n"; ?>
Ehm, možná by v tomto případě možná bylo lepší poskytnout přímo výstup tohoto skriptu.
Diskuse
endlife:
Ten ukázkový výstup je cachovaný nebo je výběr z db pomocí regexpu tak rychlý? (není tu velká databáze, ale stejně jsem vždycky myslel, že to musí být hrozně pomalé)
Jakub Vrána
:
Je to rychlé dost. Článků je pár set kilo, to se projde hned. U většího objemu dat nebo při větší návštěvnosti by samozřejmě bylo vhodné si do indexovaného sloupce ukládat, jestli byl daný článek změněn, nebo rovnou změny ukládat i bokem.
Mimochodem i vyhledávání zde je dělané přes obyčejný LIKE, na což upozorňuje titulek vyhledávacího políčka.


ia:
Trošku OT, ale pri vyhľadávaní by sa možno zišlo ošetriť, či hľadaný reťazec nie je prázdny...
Jakub Vrána
:
Proč? Nechci lidem bránit najít všechno.


Diskuse je zrušena z důvodu spamu.

