Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Skrypt newsów
Forum PHP.pl > Forum > PHP
imil
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!
zombie
[php:1:2287709d36]<?php
if ($dir = @opendir($path)) {
while (($file = readdir($dir)) !== false){
if (($file != ".") AND ($file != "..")){
$news[] = $file;
}
}
closedir($dir);
}

natcasesort($news);

foreach($news AS $key => $val){
// wyswietlanie wpisow
}
?>[/php:1:2287709d36]
party
[php:1:83af21fe1a]<?php
$intLiczbaNewsow = 3;

for( $i = 0; $i <= $intLiczbaNewsow; $i++ )
{
if( file_exists( 'news'. $i .'.txt' ) )
{
$fp = fopen( 'news'. $i .'.txt', 'a+' );
$content = fread( $fp, filesize( 'news'. $i .'.txt' ) );
print( $content );
fclose( $fp );
}
}
?>[/php:1:83af21fe1a]
Pisane z palca, ale powinno działać smile.gif
phantom
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]
imil
phantom: Jesli moglbys to wyslij mi spakowany caly ten system juz gotowy bo domyslam sie ze masz. Bede bardzo wdzieczny. Poza tym wydaje mi sie sensowny. Moj mail: wegrzyniak@go2.pl
Partyzant: Twoj kod jest OK. Jednak mam pewien problem. Jesli mialem zapisywanie do tych plikow jako news1.txt to w nim mialem zapisana postac taka: <table><tr><td></td>kto dodal<td>Temat</td><td>Tresc</td></tr></table> to zeby odczytywal wraz z tymi tabelkami zeby tworzyly sie jakgdyby gotowe postacie newsow w tabelce.
party
[php:1:3c214764a0]
<?php
$intLiczbaNewsow = 3;

for( $i = 0; $i <= $intLiczbaNewsow; $i++ )
{
if( file_exists( 'news'. $i .'.txt' ) )
{
$fp = fopen( 'news'. $i .'.txt', 'a+' );
$content = fread( $fp, filesize( 'news'. $i .'.txt' ) );
$content = explode( '||', $content );
var_dum( $content .'<br>' );
}
}
?>
[/php:1:3c214764a0]
Jeżeli będziesz w pliku np. news1.txt dane w taki sposób:
Cytat
jakieś dane||inne dane||jeszcze inne||inne

to ten kod Ci się przyda w 100%.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.