Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
zombie
post
Post #2





Grupa: Zarejestrowani
Postów: 296
Pomógł: 0
Dołączył: 9.05.2002
Skąd: Warszawa

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


[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]


--------------------
audaces fortuna iuvat!
Go to the top of the page
+Quote Post
party
post
Post #3





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 19.08.2003
Skąd: Bydgoszcz

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


[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


--------------------
Go to the top of the page
+Quote Post
phantom
post
Post #4





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]


--------------------
Env: Aurox Linux 9.2 ][ Apache 2.0.49 ][ PHP5-RC3 ][ SQLite ][ Quanta+ 3.1.4
Go to the top of the page
+Quote Post
imil
post
Post #5





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

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


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.
Go to the top of the page
+Quote Post
party
post
Post #6





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 19.08.2003
Skąd: Bydgoszcz

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


[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%.


--------------------
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 - 08:41