Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Komentarzy na dobę...
Forum PHP.pl > Forum > Gotowe rozwiązania
Qrzysio
Witam.

Potrzebuję napisac skrypt który pokaże mi ilość wpisywanych komentarzy na dobę. Nie wiem jednak jak się do tego zabrać, dlatego zwracam się o pomoc do Was. Plik z komentarzami jest tutaj: www.moja-ostroleka.pl/cutenews/data/comments.txt

Bardzo proszę o pomoc, gdyż naprawe ie wiem od czego zacząć. Nie wiem jak explodować ten plik i jak czytać poszczególne wpisy gdyż tam jest kilka wpisów w jednej linii. I nie wiem czy trzeba zawsze przeszukiwać cały plik czy tylko do pewnego momentu - daty? Proszę pomóżcie.
Qrzysio
Na innym forum podsunięto mi taki kod:

[php:1:50d7668f53]<?php

function debug($t){

print "<pre>";
print_r($t);
print "</pre>";
}

function ilosc_wpisow($filename)
{
# gdzie filename to nazwa pliku
# w twoim wypadku `comments.txt`

$file = @file($filename) or die("Nie moglem otworzyc pliku $filename");

for ($i=0; $i<count($file); $i++)
{
$wiersz = explode("|>|",$file[$i]);
if ($wiersz[0])
{
$r = date("Y",$wiersz[0]);
$m = date("n",$wiersz[0]);
$d = date("j",$wiersz[0]);

$time[$r][$m][$d] += 1;
}
}

debug($time);
}

ilosc_wpisow("comments.txt");

?>
[/php:1:50d7668f53]
lecz... sam autor tego napisał:

"hmm, nie rozumiem, niby wszystko ok a suma liczb ciagle wynosi tyle ile wpisow w calym pliku..."

Rzeczywiście skryt nie działa. Efekt działania tego kodu możecie zobaczyć tutaj:
www.moja-ostroleka.pl/cutenews/data/komentarze.php


Poradźcie mi dlaczego ten kod może nie działać?
scanner
Cytat
Na innym forum podsunięto mi taki kod:[php:1:33eccc20d4]<?php  
if ($wiersz[0])  
?>  
[/php:1:33eccc20d4]
Warunek taki mówi, że jeśłi tylko jest jakakolwiek data ( w tym przypadku), to trzeba dodać jeden.
Trzeba zrobić coś takiego:[php:1:33eccc20d4]<?php
function debug( $mixVariable )
{
echo '<pre>';
var_dump( $mixVariable );
echo '</pre>';
}

/**
* @return false or array
* @param string $strCommentFile
* @desc Funkcja oblicza ilosc komentarzy dla kazdego znalezionego dnia.
*/
function CountComments( $strCommentFile )
{
if(!is_readable( $strCommentFile ))
{
return false;
}

$arrCounters = array();
$arrFile = file( $strCommentFile );
foreach ( $arrFile as $strRow )
{
$arrRow = explode( '|>|', $strRow );
$strTestDate = date('Y-m-d', $arrRow[0]);
if( isset( $arrCounters[$strTestDate] ) )
{
$arrCounters[$strTestDate]++;
}
else
{
$arrCounters[$strTestDate] = 1;
}
}
return $arrCounters;
}

$arrCounters = CountComments( 'comments.txt' );
debug( $arrCounters );
?>[/php:1:33eccc20d4]
Qrzysio
Hmm fajnie fajnie.. ale jak zrobić skrypt o którym pisałem? Wydaje mi się że nie debug jest zbędny... Czekam nadal na propozycje.
scanner
No przecież masz gotową, sprawdzoną fukcje, która zwróci albo FALSE albo tablice zawierającą ilości komentarzy z danym dniu, przy czym data jest indekxem tablicy.
Może jeszcze za Ciebie wkleić to do Twojego skryptu?
Qrzysio
Cytat
Może jeszcze za Ciebie wkleić to do Twojego skryptu?


Szczerze mówiąc to tak.. bo nie wiem jak to zrobić :| Z góry thx, jesli będziesz tak łaskawy.
zombie
W związku z tym, że sam plik komentarzy ma ok. 500 kB, proponuję stworzyć system komentarzy od nowa, zamiast obciążać skrypt dodatkowymi funkcjami. :wink:
Qrzysio
Cytat
W związku z tym, że sam plik komentarzy ma ok. 500 kB, proponuję stworzyć system komentarzy od nowa, zamiast obciążać skrypt dodatkowymi funkcjami.  :wink:


Chętnie bym sam się za to wziął ale na razie nie mam czasu zakuwać php i póki tego nie opanuję jestem zdany tylko na Waszą pomoc.
zombie
No to masz kod scanner'a. Wklej go gdziekolwiek na stronie.
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.