Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Usówanie starych wpisów gdy ich liczba przekracz 10
Mavestinus
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 6.04.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Próbuję napisać skrypt który zapisuje informacje o odwiedzających (ip, host, data i godzina). Sam zapis mi wychodzi ale chciałem to rozszeżyć o automatyczne usuwanie najstarszych wpisów jeśli jest ich więcej niż 10.
Na razie napisałem coś takiego:
index.php[php:1:eb8b1c18e7]<?php
$ip=$_SERVER['REMOTE_ADDR'];
$host=gethostbyaddr($ip);
$data=date("d-m-Y");
$godzina=date("H:i:s");
$open=fopen("ip.dat", "a");
$save="$ip||$host||$data||$godzina rn";
fputs($open, $save);
fclose($open);
?>[/php:1:eb8b1c18e7]
ip.php[php:1:eb8b1c18e7]<?php
$table=file("ip.dat");
$table=array_reverse($table);
$all=count($table);
for($p=$all; $p>9; $p--)
{
unset($table[$p]);
for($n=0;$n<count($table);$n++)
{
$table[$n]=chop($table[$n]);
}
$cale=implode("rn",$table);
$open=fopen("ip.dat", "w");
fwrite($open,chop($cale));
fclose($open);
}
for($i=0; $i<$all; $i++)
{
$ip=explode("||", "$table[$i]");
print("IP: <b>$ip[0]</b> Host: <b>$ip[1]</b> Data: <b>$ip[2]</b> Godzina: <b>$ip[3]</b><BR>");
}
?>[/php:1:eb8b1c18e7]Ale to się sypie.... Może mi ktoś pomóc??


--------------------
pozdrawiam.
Go to the top of the page
+Quote Post
Mnichasso
post
Post #2





Grupa: Zarejestrowani
Postów: 97
Pomógł: 13
Dołączył: 26.06.2003
Skąd: Piekary Śląskie

Ostrzeżenie: (0%)
-----


Niech mu ktoś pomoże bo mi by sie też takie coś przydało, lub żeby można było wybrane przezemnie wpisy usuwać.


--------------------
This is only game
Go to the top of the page
+Quote Post
Mavestinus
post
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 6.04.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Do usówania wybranych wpisów zastsuj coś takiego:
$usun = id linijki wpisu ktory chcesz usunąć
dane.inc = plik w ktorym trzymasz te informacje
I teraz:[php:1:3fe4c8f772]<?php
$table=file("dane.inc");
unset($table[$usun]);
for($n=0;$n<count($table);$n++)
{
$table[$n]=chop($table[$n]);
}
$cale=implode("rn",$table);
$open=fopen("dane.inc", "w");
fwrite($open,chop($cale));
fclose($open);
?>[/php:1:3fe4c8f772]


--------------------
pozdrawiam.
Go to the top of the page
+Quote Post
Mnichasso
post
Post #4





Grupa: Zarejestrowani
Postów: 97
Pomógł: 13
Dołączył: 26.06.2003
Skąd: Piekary Śląskie

Ostrzeżenie: (0%)
-----


W którym miejscu dać :

$usun = id linijki wpisu ktory chcesz usunąć
dane.inc = plik w ktorym trzymasz te informacje

Zaraz po znaczniku <? :?: :?: [/b]
?>[/php]


--------------------
This is only game
Go to the top of the page
+Quote Post
Mavestinus
post
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 6.04.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Nie ja to w moim systemie newsów robie tak:
delete.php[php:1:29ca99f419]<?php
$tabela=file("dane.inc"); // Zamienia zawartosc pliku dane.inc na tablice
$table=array_reverse($tabela);
for($i=0; $i<count($table); $i++) // Dopuki sa newsy wyswietla je
{
$dane=explode ("||", $table[$i]); // Rozdziela kazdy news znakami ||
// POCZTAEK - Wyswietlanie newsa
print("<b>.: $dane[0] :.</b><small> $dane[1] $dane[2]</small>");
print("<br>");
print("$dane[3]");
print("<br>");
print("<small>Posted by... <a href=mailto:$dane[4]>$dane[5]</a></small>");
print("<br>");
print("News numer $i --- <a href=del.php?usun=$i>Usuń News</a>");
print("<br>");
print("<br>");
// KONIEC - Wyswietlanie newsa
}
?>[/php:1:29ca99f419]I jak widać z tego kodu przeslyła zmienną $usun do pliku del.php a tam już to obrabiasz tak jak wyżej. Aha Sorry za komentarze ale teraz nie mam czasu żeby je usówać a cały skrypt mam okomentowany!
Ale dalej czekam na odpowiedź na moje 1 pytanie - jak zrobić automatyczne usówanie powyżej 10 wpisów


--------------------
pozdrawiam.
Go to the top of the page
+Quote Post
dragossani
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 398
Pomógł: 0
Dołączył: --
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Akurat komentarze w kodzie są raczej sprawą chwalebną, a nie wstydliwą. Gdyby tak wszyscy komentowali kod, żyłoby się łatwiej.

"Life would be much easier if I had the source code." :wink:


--------------------
cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
Go to the top of the page
+Quote Post
Mavestinus
post
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 6.04.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat
Akurat komentarze w kodzie są raczej sprawą chwalebną, a nie wstydliwą. Gdyby tak wszyscy komentowali kod, żyłoby się łatwiej.

"Life would be much easier if I had the source code." :wink:

Aha to ok winksmiley.jpg
Ale czy nikt nie jest mi w stanie pomóc w problemie dal którego właśnie powstał ten topic?? 8)


--------------------
pozdrawiam.
Go to the top of the page
+Quote Post
menic
post
Post #8





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

Ostrzeżenie: (0%)
-----


Cytat
Akurat komentarze w kodzie są raczej sprawą chwalebną, a nie wstydliwą. Gdyby tak wszyscy komentowali kod, żyłoby się łatwiej.

"Life would be much easier if I had the source code." :wink:

Ale nie do przesady....... aaevil.gif


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
jono
post
Post #9





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Banał.[php:1:60254cf9b8]<?php

//najpierw wczytujesz plik do tablicy
$dane = file("dane.txt");

//teraz kasujesz plik (najprościej tak)

unlink("dane.txt");

//teraz masz dane tylko w tablicy
foreach($dane as $id => $tresc){

//zapisujesz je z powrotem do pliku

$fp = fopen("dane.txt", "a");
fputs($fp, $tresc);
fclose($fp);

//jak dochodzisz do 10 linii wyskakuje polecenie break.

if($id == 10){break;}

}

?>[/php:1:60254cf9b8]
Ta metoda jest dobra, jeżeli chcesz rzeczywiście tylko 10 wpisów. Przy wiekszej ilości zbyt obciążające.
Go to the top of the page
+Quote Post
Mavestinus
post
Post #10





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 6.04.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


No dobra jakoś to działa (nawet bardzo dobrze 8) ). Ale ja chce zostawić 10 najnowszych (czyli ostatnich 10 od dołu), a ten numer z array_reverse nie przechodzi :cry: ...


--------------------
pozdrawiam.
Go to the top of the page
+Quote Post
jono
post
Post #11





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


no tak.. to źle robisz od początku..
trzeba zapisywać nowe wpisy na samej górze.
[php:1:7f3552eb3d]<?php

//wyciągasz dane z pliku

$kolejnosc = file("test.txt", "a");
$raport = "Najnowszy wpisrn";

//kasujesz plik

@unlink("test.txt");

//tworzysz plik i wsadzasz najnowszy wpis

$fp = fopen("test.txt", "a");
fputs($fp, $raport);
fclose($fp);

//teraz wsadzasz resztę z powrotem do pliku

foreach($kolejnosc as $news){
$fp = fopen("test.txt", "a");
fputs($fp, $news);
fclose($fp);}
?>[/php:1:7f3552eb3d]
I w ten sposób najnowszy wpis będzie zawsze na samej górze, a co za tym idzie kasowanie będzie poprawne. Tylko z nowu to ma zastosowanie do niewielkich obciążeń.
Go to the top of the page
+Quote Post
spenalzo
post
Post #12





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


A nie krócej?
[php:1:cf25096d54]<?php

//wyciągasz dane z pliku

$kolejnosc = file("test.txt", "a");
$raport = "Najnowszy wpisrn";

//tworzysz plik i wsadzasz najnowszy wpis oraz resztę wpisów

$fp = fopen("test.txt", "w");
fputs($fp, $raport);
fputs($fp,implode("",$kolejnosc));
fclose($fp);

?>[/php:1:cf25096d54]


--------------------

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 11:27