<http://www.jajjun.webz.cz/index.php?id=mp>
Na výše uvedených stránkách mám v pravém sloupci Co se děje. Alternativa Novinek.
Z jiné stránky tam vkládám poslední novinky. Vše mi funguje správně, ale nevím jak udělat to, aby se mi zobrazovaly jen poslední tři zprávy a starší se mazaly.
Můžete mi někdo poradit?
Moc dík
za ten příkaz kde vybíráš ty novinky tak nakonec dej LIMIT 3 , ale jak to smazat to newim...
no, pri zadavani, jak udelas zapis, tak udelej taky mazani, treba vyber posledni 3 ID, a smaz vse co nejsou tato 3 id, teda pokud je to v db.
No to je ten problém já to nemám v SQL, ale v texťáku.
no jestli to pises primo do toho textaku a jenom ty, tak proste pri zapisu dalsi novinky dycky tu posledni umaz, ne?
jinak by to slo taky tak, ze po zapisu nove novinky najdes, kde konci treti novinka (treba mas kazdou novinku na jeden radek, tak najdes pozici, kde ten treti radek konci) a pak soubor oseknes pomoci ftruncate (http://php.ftp.cvut.cz/manual/cs/function.ftruncate.php)
Tato informace měla být zcela jistě již v původním dotazu.
Napadají mě dvě řešení:
1.
Naučíš se pracovat se soubory. Užitečné funkce:
http://php.ftp.cvut.cz/manual/cs/function.fopen.php
http://php.ftp.cvut.cz/manual/cs/function.fclose.php
http://php.ftp.cvut.cz/manual/cs/function.fread.php
http://php.ftp.cvut.cz/manual/cs/function.fwrite.php
2.
Pokud ty aktuality jsou jen občas, tak si ten textový soubor stáhni k sobě na počítač, uprav a nahrej zpátky. Není třeba dělat bůhví jak výkonný nástroj, když to jde snadno a rychle.
napadlo me, tedy za predpokladu, ze kazdy zaznam je na 1 radku a nejnovejsi zaznam je ulozen na poslednim radku:
$zaznamy = file('soubor_s_daty.txt');
$zaznamy = array_reverse ($zaznamy);
echo $zaznamy[0]; // vypise prvni zaznam (tj. posledni radek v souboru)
echo $zaznamy[1]; // druhy (tj. predposledni radek)
echo $zaznamy[2]; // treti zaznam (treti radek od konce)
a pokud chces po vypsani nechat v souboru ulozene jen tyto 3 radky, tak
$fp = fopen('soubor_s_daty.txt','w');
fwrite($fp,$zaznamy[2]); // ukladas v puvodnim poradi
fwrite($fp,$zaznamy[1]);
fwrite($fp,$zaznamy[0]); // nejnovejsi na konec
fclose($fp);
Dulezity predpoklad je, ze nove zaznamy do souboru ukladas takto:
$nove = 'text noveho zaznamu';
$fn = fopen('soubor_s_daty.txt','a');
fwrite($fn, $nove."\n"); // to odradkovani je velmi dulezite - oddeluje od sebe zaznamy
fclose($fn);
Moc díky takto to funguje suprově.
Ale chtěl jsme se zeptat jestli by to šlo zapsat nějak abych nemusel vypisovat stále echo $xxx[0]; a další, ale abych mohl napsat přímo více výpisů do jednoho. $xxx[0-20];
no cyklem :-) (snad to nezkonim...)
for($i = 0; $i < 21; $i++) echo $zaznamy[$i];