Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Skrypt newsów
imil
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 7.03.2004

Ostrzeżenie: (10%)
X----


Witajcie. Mam pewne zapytanie odnosnie tematu. Napisalem juz skrypt ktory dodaje kolejne newsy tj. zapisuje kazdy kolejny o takiej nazwie news$i.txt , gdzie $i>=1 czyli zapisuje kolejno news1.txt , news2.txt itd itd. Chcialbym teraz zapytac jak napisac skrypt ktory odczytywal by te kolejne pliki. Prosze o pomoc.
Formuluje ostateczne pytanie!
Jak zrobic aby odczytywal kolejno pod soba news1.txt dalej news2.txt i aby wyswietlaly sie tylko jesli istnieja czyli np jezeli istnieje news1.txt news2.txt , a kolejnych nie ma to zeby wyswietlal tylko te istniejace a jezeli by sie pojawilo news3.txt to zeby go wyswietlil. Prosze o pomoc , z góry dzieki!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phantom
post
Post #2





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.04.2004
Skąd: Płock

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


Ja swój system o plikach oparłem o następujące założenia:
:arrow: Każda news zapisany jest w pliku *.txt w postaci zserializowanej tablicy z danymi o nazwie kolejnej liczby np. '2.txt'
:arrow: Lista wszystkich news'ów zapisana jest pliku index.txt w postaci "id{|}timetamprn" np. "2{|}1231727712rn"
:arrow: Podczas dodawania news'a na początku pliku index.txt dodawana jest linia j.w. oraz tworzony plik z news'em
:arrow: Przy odczycie jest sprawdzana liczba wszystkich linijek w pliku index.txt. Jeśli jest ona mniejsza niż liczba zdefiniowanej liczby wyświetlanych news'ów - wyśietlane są wszystkie dostępne.

A tu trochę kodu:

[php:1:e5dbd28888]<?php
function addnews($title, $body){

$how = rf('./data/how.txt');
$how++;
sf($how, './data/how.txt');

$indexLine = $how.'{|}'.time()."n";
a2f($indexLine, './data/index.txt');

$title = str_replace("n", '<br />', $title);
$body = str_replace("n", '<br />', $body);

$vars = array('tytul' => $title, 'tresc' => $body, 'time' => time());
$newsLine = serialize($vars);
sf($newsLine, './data/'.$how.'.txt');
}

function viewnews($id){

if(file_exists('./data/'.$id.'.txt')){
$news = rf('./data/'.$id.'.txt');
$news = unserialize($news);
$news['id'] = $id;
return $news;
}
else return FALSE;
}

function viewlast($how){

$list = file('./data/index.txt');
if($how > count($list)) $how = count($list);
for($i = 0; $i < $how; $i++){

$info = explode('{|}',$list[$i]);
$id = $info[0];
$news = viewnews($id);
if($news != FALSE){
$last[$i]['tytul'] = $news['tytul'];
$last[$i]['tresc'] = $news['tresc'];
$last[$i]['time'] = $news['time'];
$last[$i]['id'] = $news['id'];

}
}

return $last;
}


function delnews($id){
if(file_exists('./data/'.$id.'.txt')==TRUE){
$output='';
$list = file('./data/index.txt');
for($i = 0; $i < count($list); $i++){

$exp = explode('{|}', $list[$i]);
if($exp[0] != $id){
$output .= $list[$i];
}
}
sf(chop($output), './data/index.txt');
@unlink('./data/'.$id.'.txt');
return TRUE;
}
else return FALSE;
}

function editnews($id, $title, $body){
if(file_exists('./data/'.$id.'.txt')){
$output='';
$list = file('./data/index.txt');
for($i = 0; $i < count($list); $i++){

$exp = explode('{|}', $list[$i]);
if($exp[0] != $id){
$output .= $list[$i];
}
else $output .= $id.'{|}'.time()."n";
}
sf(chop($output), './data/index.txt');
$body = str_replace("n", '<br />', $body);
$title = str_replace("n", '<br />', $title);
$news = array('tytul' => $title, 'tresc' => $body, 'time' => time());
sf(serialize($news), './data/'.$id.'.txt');
}
}
?>[/php:1:e5dbd28888]

no i funkcje użyte w powyższym kodzie:
[php:1:e5dbd28888]<?php
function rf($where)
{
$file=$where;
$handle=fopen($where, 'r');
flock($handle, 1);
$readed=fread($handle, filesize($file));
flock($handle, 3);
fclose($handle);
return $readed;
}

function sf($what, $where)
{
$file=$where;
$handle=fopen($where, 'w');
flock($handle, 2);
fwrite($handle, $what);
flock($handle, 3);
fclose($handle);
}

function a2f($what, $where)
{
$file=$where;
$handle=fopen($where, 'r');
flock($handle, 1);
$old=fread($handle, filesize($file));
flock($handle, 3);
fclose($handle);

$file=$where;
$handle=fopen($where, 'w');
flock($handle, 2);
fwrite($handle, chop($what.chop($old)));
flock($handle, 3);
fclose($handle);
}
?>[/php:1:e5dbd28888]
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 28.12.2025 - 19:04