Autor Zpráva
Grogg
Profil *
Chtěl bych se zeptat jestli nejde nějak udělat, když je hodně příspěvků v knize hostů, aby se mi nějak ze souboru umazávaly zprávy (jedná se o knihu bez databáze). Nemusí se mi umazávat po celých zprávách, stačilo by mi, aby se umazávaly jakkoliv - třeba omezit knihu na 100 řádků a co je víc než 100 by se smázlo.
díky
#ikso
Profil *
Tak ukladaj iba tych sto znakov:

$text = "bldab dkfl kdnfkldnfklgn dfklgndklfjd";

$text = substr($text, 0, 100); // orezes text len ta 100 znakov
Grogg
Profil *
Mě nejde o to aby příspěvek měl 100 znaků. Ale jde mi o to, když soubor, do kterého si ukládám příspěvky má třeba 300 řádků, tak to musim mazat složitě přes ftp, ale já bych to chtěl průběžně mazat nějakým skriptem.
Prostě, aby se kniha nezahltila spoustou příspěvků, když se o ní nebudu starat.
krteczek
Profil
no elegantně by to šlo tak že pokud máš nějaký oddělovač, tak načti ten soubor po každém přidání do pole a ulož třeba jen 60 zpráv, zbyvající zahod. právě nad podobným vylepšením přemýšlím
krteczek
Grogg
Profil *
krteczek: Maslíš oddělovač třeba <hr>? Nejsem si ale jistý jestli je dobrý nápad načítat to do pole, protože rozsáhlé pole zabírají hodně systémových zdrojů...
ikso
Profil
Chtěl bych se zeptat jestli nejde nějak udělat, když je hodně příspěvků v knize hostů, aby se mi nějak ze souboru umazávaly zprávy (jedná se o knihu bez databáze). Nemusí se mi umazávat po celých zprávách, stačilo by mi, aby se umazávaly jakkoliv - třeba omezit knihu na 100 řádků a co je víc než 100 by se smázlo.
díky


A co ked su riadky rovnako dlhe ? Mas jeden prispevok na jeden riadok ?
Grogg
Profil *
Ano, každý příspěvek má svůj řádek
WertriK
Profil *
soubor.dat - soubor s prispevkama

$all = file("soubor.dat");

for($i=0;$i <= 100;$i++) {

if($i == 0) {

$only100 = "$all[$i]";

}
else {

$only100 = "$only100\n$all[$i]";

}


// toto by melo do $only100 pridat jen 100 prvnich radku, ale nejsem si tim 100% jisty
}

$fp = FOpen ("soubor.dat", "w");
FWrite ($fp, $only100);
FClose ($fp);
centi
Profil
WertriK
Tú podmienku v cykle máš dosť zbytočnú, pretože riadky sú už znakom \n oddelené, netreba ho tam pridávať.

<?php
//novy prispevok ziskany napriklad z formulara alebo pod.
$new = "toto je novy prispevok z formulara\n";
$file = "prispevky.dat";
$contents = file($file);
//precitaj prvych 99 riadkov, pridavany prispevok bude numero 100
$lineTo = 99;
for($i=0;$i<$lineTo;$i++)
{
$old .= $contents[$i];
}
$write = $new.$old;
$fp = fopen($file,"w+");
fwrite($fp,$write);
fclose($fp);
?>
WertriK
Profil *
no ale stacilo to na to aby jsi sem napsal spravne reseni .... :)
error414
Profil *
no ale zalezi jestli zapisuje na konec souboru nebo na zacetek, osobne si myslim ze na konec

fwrite("soubor.txt",a);
centi
Profil
V tom prípade stačí trocha upraviť podmienku a novú správu prihodiť na koniec a nie na začiatok.


...
$lineFrom = 100;
for($i=$lineFrom;$i<count($file);$i++)
{
...
}
$write = $old.$new;
..
krteczek
Profil
ahoj,
v nové verzi mé knihy bez db funguje mazání jednotlivých příspěvků, automaticky převádí http://www.* a www.* na odkazy. Koukněte a vyzkoušejte, popřípadě stahujte: http://www.krteczek.czweb.org/jpw/kniha-navstev/
krteczek
Toto téma je uzamčeno. Odpověď nelze zaslat.

0