Avatar billede jesper-moeller Nybegynder
16. juni 2006 - 21:43 Der er 12 kommentarer og
1 løsning

PHP virker alene, Men ikke med JavaScript

Ja nok en dårlig måde at skrive mit spørgsmål på men jeg viste ikke helt hvordan jeg skulle beskrive mit spørgsmål anderledes på så kort en linie

Jeg har lavet et lille PHP script der læser en folders filer og deres indhold
Dette virker fint (Se http://www.jart.dk/jgom/test1.html )

Men da jeg skal bruge de oplysninger til at udregne værdierne fra filerne har jeg omskrevet (forsøgt på) PHP'en  så den laver et javascript. Detsvære kan jeg ikke få den del til at virke.

Jeg håber nogen kan hjælpe mig.
http://www.jart.dk/jgom/test3.html skulle resultatet af test+test1 foldernes indhold gerne blive vist det sker detsvære ikke
men scriptet der viser filerne og deres inhold virker fint

Her er det omskrevet PHP som jeg ikke kan få til at fungere
----------------------------------------------------------------------------------------------------
$filedata = 0;
$filename = "";
$dir = "./logs";
echo "var pcount = new Array();\n";
if (is_dir($dir)) {   
if ($dh = opendir($dir)) {
while (($filename = readdir($dh)) !== false) {
if (($filename != ".") && ($filename != "..")) {
$file = $dir . "/" . $filename ;
$handle = fopen($file, "r");
$filedata = fread($handle, filesize($file));
fclose($handle);
$filename = substr($filename, 0, strrpos($filename, "."));
echo "pcount[$filename]=$filedata;\n";
}
}
closedir($dh);
}
}
echo "
function pagecountdisplay(id)
{
document.write(pcount[id]);
}
";
exit();
----------------------------------------------------------------------------------------------------


Det der virker ser sådanne ud
----------------------------------------------------------------------------------------------------
$dir = "./logs";
$filecount = 0;
$filedata = 0;
$filename = "";
echo "document.write('-- FILES IN FOLDER --<br><br>');\n";
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($filename = readdir($dh)) !== false) {
if (($filename != ".") && ($filename != "..")) {
$file = $dir . "/" . $filename ;
$handle = fopen($file, "r");
$filedata = fread($handle, filesize($file));
fclose($handle);
$filename = substr($filename, 0, strrpos($filename, "."));
echo "document.write('pcount[','$filename','] = ','$filedata','<br>');\n";
$filecount ++;
}
}
closedir($dh);
}
}
echo "document.write('<br><br>-- TOTAL = ', $filecount,' FILES  FOUND --');\n";
exit();
----------------------------------------------------------------------------------------------------
Avatar billede jakobdo Ekspert
16. juni 2006 - 21:53 #1
Hvorfor vil du bruge javascript?
Er det stadig en sammentælling af hits vi taler om?
Burde du ikke få lukket nogle af de andre spørgsmål, inden du starter nye?
Avatar billede jesper-moeller Nybegynder
16. juni 2006 - 22:36 #2
>> Hvorfor vil du bruge javascript

For at kunne kalde de resultater jeg skal bruge når og hvor jeg skal bruge dem
(Feks med <script type="text/javascript">var all = pcount[test]+pcount[test2]; document.write(all);</script> )


>> Er det stadig en sammentælling af hits vi taler om?

Ja... men ikke alle hits på samme sted... kun dem jeg ønsker at se / lægge sammen.. Feks flere forskellige resultater på samme side


>> Burde du ikke få lukket nogle af de andre spørgsmål, inden du starter nye?

Jamen lukker skam mine spørgsmål når der er svar ... folk skal dog lige have lov at svare på dem .... ;-)
Avatar billede jakobdo Ekspert
16. juni 2006 - 22:46 #3
Prøv at se denne kode nu: http://www.codebreaker.dk/exp/715926.php
Du må kunne nøjes med at bruge som vi har foreslået fra start! :o)
Avatar billede jesper-moeller Nybegynder
16. juni 2006 - 23:04 #4
Kan du så forklare mig (skære det ud i pap) hvordan jeg på samme side med det script viser

test+test4 på en linie

og test1+test2+test3 på en anden linie

i det samme Html dokument ???

For det har jeg ikke kunne få det til ?
Avatar billede jesper-moeller Nybegynder
16. juni 2006 - 23:08 #5
jeg skal kunne lave mange forskellige kombinationer af talne fra de filer...
Feks skal en side vise hits på de underligende ... nogle af de underligende skal vise samlede hits på dem under dem
andre sider skal gøre det samme....
og bla en side skal vise det samlede smat opdelte resultater ...
Og siderne som skal tælles på varie, der kommer nye til og gamle går ud...
Avatar billede jakobdo Ekspert
16. juni 2006 - 23:31 #6
Du kunne f.eks. bruge koden her så:

<?php
//http://www.eksperten.dk/spm/715565
//http://www.eksperten.dk/spm/715926

function printHits($pages)
{
    $counterPages[0] = 'http://www.jart.dk/jgom/componenter/pagecount/logs/test.log';
    $counterPages[1] = 'http://www.jart.dk/jgom/componenter/pagecount/logs/test1.log';
    $counterPages[2] = 'http://www.jart.dk/jgom/componenter/pagecount/logs/test2.log';
    $counterPages[3] = 'http://www.jart.dk/jgom/componenter/pagecount/logs/test3.log';
    $counterPages[4] = 'http://www.jart.dk/jgom/componenter/pagecount/logs/test4.log';

    $sum = 0;

    $pagesToCount = (isset($pages))?explode('+',$pages):array();

    if(count($pagesToCount)>0)
    {
        foreach($pagesToCount as $page)
        {
            $data = file_get_contents($counterPages[$page]);
            $sum += $data;
        }
        return $sum;
    }
    else
    {
        return false;
    }
}

echo printHits('0+4');
echo '<hr />';
echo printHits('1+2+3');

?>
Avatar billede jakobdo Ekspert
16. juni 2006 - 23:32 #7
Du laver altså en funktion som:

function printHits($pages)
{
    $counterPages[0] = 'http://www.jart.dk/jgom/componenter/pagecount/logs/test.log';
    $counterPages[1] = 'http://www.jart.dk/jgom/componenter/pagecount/logs/test1.log';
    $counterPages[2] = 'http://www.jart.dk/jgom/componenter/pagecount/logs/test2.log';
    $counterPages[3] = 'http://www.jart.dk/jgom/componenter/pagecount/logs/test3.log';
    $counterPages[4] = 'http://www.jart.dk/jgom/componenter/pagecount/logs/test4.log';

    $sum = 0;

    $pagesToCount = (isset($pages))?explode('+',$pages):array();

    if(count($pagesToCount)>0)
    {
        foreach($pagesToCount as $page)
        {
            $data = file_get_contents($counterPages[$page]);
            $sum += $data;
        }
        return $sum;
    }
    else
    {
        return false;
    }
}


Og hvor du så vil vise hits, laver du "bare":

echo printHits('0+4');

eller

echo printHits('1+2+3');
Avatar billede jesper-moeller Nybegynder
16. juni 2006 - 23:40 #8
Dvs at jeg hvergang der kommer en ny side skal ind i php filen og skrive den ind ??

Og ind og rette echo printHits('0+4'); på html siden ??

og jeg kan da ikke bare skrive echo printHits('0+4'); i html'en ??
Avatar billede jakobdo Ekspert
17. juni 2006 - 09:38 #9
Hvad så med:

<?php
//PrintHits som billede

function printHits($pages)
{
    $pagesToCount = (isset($pages))?explode(' ',$pages):array();
   
    $path = 'http://www.jart.dk/jgom/componenter/pagecount/logs/';
    $ext  = '.log';
    $sum  = 0;

    if(count($pagesToCount)>0)
    {
        foreach($pagesToCount as $page)
        {
            if(preg_match('/[a-z]+\\d*/', $page))
            {
                $data = file_get_contents($path . $page . $ext);
                $sum += $data;
            }
        }
        return $sum;
    }
    else
    {
        return 'Error';
    }
}

header("Content-type: image/png");
$im = @imagecreate(100, 50) or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 255, 255, 255);
$text_color = imagecolorallocate($im, 0, 0, 0);
imagestring($im, 1, 5, 5, printHits($_GET['hits']), $text_color);
imagepng($im);
imagedestroy($im);

?>

Og i html'en kan du så:

Hits i alt: <img src="koden.php?hits=test+test2+enandenlog+entrejdelog">
Avatar billede jesper-moeller Nybegynder
18. juni 2006 - 20:08 #10
Takker for din tålmodighed og hjælp .... :-)

Du har hjulpet mig meget, og nu ser det ud til at virke.
Hvertfald PHP delen :-P
(selvom jeg ikke HELT har gjort det som dit eksempel)

Smid et svar så du kan få point ...

(Mine Javascript problem høre ikke til her.. så det lægger jeg et andet sted )
Avatar billede jakobdo Ekspert
18. juni 2006 - 20:13 #11
Svar!
Avatar billede jesper-moeller Nybegynder
18. juni 2006 - 20:20 #12
Takker for hjælpen *S*.. her dine fortjænte points
Avatar billede jakobdo Ekspert
18. juni 2006 - 20:23 #13
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester