Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di MM88
    Registrato dal
    Jun 2003
    Messaggi
    567

    Site Mapper Dinamic Menu

    Io ho uno script che mi permette di leggere nel mio server e farmi un elenco delle cartelle presenti (ma questa prima parte potrebbe essere fatta in vari modi).


    /* Sitemap version 2.1 (C) copyright Metalhead 2004 - Array with file types to display and the pictures to use.
    Syntax: $display['filetype'] = "picture"; */
    $display['php'] = "php.gif";
    $display['html'] = "html.gif";
    $display['htm'] = "html.gif";
    $display['shtml'] = "html.gif";

    /* Array with directories to exclude.
    Syntax: $excludedir[] = "directory"; */
    $excludedir[] = "temp";
    $excludedir[] = "tmp";

    /* Array with files to exclude. */
    $excludefile[] = "index.php";

    ?>

    <html>
    <head>
    <title>Sitemap</title>
    </head>

    <body>

    Sitemap



    <?php

    $stime = gettimeofday();

    /* some preliminaries... */
    $root = getcwd();

    $pre = explode("/", $_SERVER['REQUEST_URI']);
    array_pop($pre);
    $prefix = join("/", $pre);

    /* Uncomment the 2 lines below to create a tree of all files and directories on your webserver if the script
    * is in a subdirectory */
    //$root = str_replace($prefix, "", $root);
    //$prefix = "";

    $root .= "/";

    /* Display server name and directory */
    echo "<table cellspacing=0 cellpadding=0 border=0>\n";
    echo "<tr><td><img align=absmiddle src=server.gif> http://".$_SERVER['SERVER_NAME'];
    echo "$prefix/";
    echo "</td></tr><tr><td><img align=absmiddle src=vertical.gif></td></tr>\n";

    function get_extension($name) {
    $array = explode(".", $name);
    $retval = strtolower(array_pop($array));
    return $retval;
    }

    /* Recursion, here we go.. */
    function list_dir($chdir) {
    /* some globals, some cleaning */
    global $root, $prefix, $showsize, $display, $excludedir, $excludefile;
    unset($sdirs);
    unset($sfiles);
    chdir($chdir);
    $self = basename($_SERVER['PHP_SELF']);

    /* open current directory */
    $handle = opendir('.');
    /* read directory. If the item is a directory, place it in $sdirs, if it's a filetype we want
    * and not this file, put it in $sfiles */
    while ($file = readdir($handle))
    {
    if(is_dir($file) && $file != "." && $file != ".." && !in_array($file, $excludedir))
    { $sdirs[] = $file; }
    elseif(is_file($file) && $file != "$self" && array_key_exists(get_extension($file), $display)
    && !in_array($file, $excludefile))
    { $sfiles[] = $file; }
    }

    /* count the slashes to determine how deep we're in the directory tree and how many
    * nice bars we need to add */
    $dir = getcwd();
    $dir1 = str_replace($root, "", $dir."/");
    $count = substr_count($dir1, "/") + substr_count($dir1, "\\");

    /* display directory names and recursively list all of them */
    if(is_array($sdirs)) {
    sort($sdirs);
    reset($sdirs);

    for($y=0; $y<sizeof($sdirs); $y++) {
    echo "<tr><td>";
    for($z=1; $z<=$count; $z++)
    { echo "<img align=absmiddle src=vertical.gif>"; }
    if(is_array($sfiles))
    { echo "<img align=absmiddle src=verhor.gif>"; }
    else
    { echo "<img align=absmiddle src=verhor1.gif>"; }
    echo "<img align=absmiddle src=folder.gif> <a
    href=\"http://".$_SERVER['SERVER_NAME']."$prefix/$dir1$sdirs[$y]\">$sdirs[$y]</a>";
    list_dir($dir."/".$sdirs[$y]);
    }
    }

    chdir($chdir);

    /* iterate through the array of files and display them */
    if(is_array($sfiles)) {
    sort($sfiles);
    reset($sfiles);

    $sizeof = sizeof($sfiles);

    /* what file types shall be displayed? */
    for($y=0; $y<$sizeof; $y++) {
    echo "<tr><td>";
    for($z=1; $z<=$count; $z++)
    { echo "<img align=absmiddle src=vertical.gif>"; }
    if($y == ($sizeof -1))
    { echo "<img align=absmiddle src=verhor1.gif>"; }
    else
    { echo "<img align=absmiddle src=verhor.gif>"; }
    echo "<img align=absmiddle src=\"";
    echo $display[get_extension($sfiles[$y])];
    echo "\"> ";
    echo "<a href=\"http://".$_SERVER['SERVER_NAME']."$prefix/$dir1$sfiles[$y]\">$sfiles[$y]</a>";
    if($showsize) {
    $fsize = @filesize($sfiles[$y])/1024;
    printf(" (%.2f kB)", $fsize);
    }
    echo "</td></tr>";

    echo "<tr><td>";

    }
    echo "<tr><td>";
    for($z=1; $z<=$count; $z++)
    { echo "<img align=absmiddle src=vertical.gif>"; }
    echo "</td></tr>\n";
    }
    }

    list_dir($root);

    echo "</table>\n";

    /* How long did that need..? */
    $ftime = gettimeofday();
    $time = round(($ftime[sec] + $ftime[usec] / 1000000) - ($stime[sec] + $stime[usec] / 1000000), 5);
    echo "<center>This page was generated in $time seconds.</center>\n";

    ?>




    come faccio poi ad inserire tutto il risultato in una routine che crei le pagine in base alla quantità delle directories?
    che mettendo limite 10 e avendo 20 cartelle crei automaticamente 2 pagine con la possibilità di navigare avanti e dietro?

    Mi speigo meglio: io lancio INDEX.PHP e la pagina visualizza un elenco con link (potrebbe essere una scritta o una immagine), diciamo
    come:

    [LINK1] - [LINK2] - [LINK3] - ecc. - >> [PROSSIMA PAGINA]

    Cliccando su ognuno di questi link vorrei visualizzare ciascuna delle pagine (php o html) ocntenute nelle sottocartelle 1, 2, 3.

    Inoltre, vorrei mettere un limite in modo che in INDEX.PHP fossero visualizzati 10 link. Quindi se le sottocartelle sono 15, la routine dovrebbe darmi la possibilità di accedere alla seconda pagina con le restanti 5.

    Questo perché le sottocartelle possono aumentare di numero e il sistema dovrebbe automaticamente crearmi tutte le pagine necessarie per andare avanti e dietro.

    Possibile che qualcuno non abbia già creato qualcosa di simile?


    GRAZIE!

  2. #2
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    ma non avevi già postato una roba del genere?
    personalmente non riesco a capire ke tipo di
    navigazione stai progettando.
    Errare humanum est, perseverare ovest

  3. #3
    Utente di HTML.it L'avatar di MM88
    Registrato dal
    Jun 2003
    Messaggi
    567
    mi hanno consigliato di cambiare titolo.

    Quale navigazione? ma una cosa standard!

    google ti mostra N risultati quando fai la ricerca, no?
    e puoi muoverti alla seocnda, terza, quarta pagina. tornare indietro, ecc.


    ecco, se nel sito ho 400 cartelle, dovrò pure mettere un LIMIT per non visualizzarle tutte e 400 nella stessa pagina.

    quindi volevo raccogliere il risultato del parsing fra cartelle e creare al volo un menu dinamico con LIMIT che si possa impostare.

  4. #4
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    non credo ke google costruisca una per una tutte le pagine, le metta in diverse cartelle e poi si inventa una navigazione tra le stesse, ma bensì nella stessa pagina viene visualizzata una parte dei risultati frutto del risultato di una ricerca nel loro db, impaginati in modo tale da comparire in una quantità efficace.

    il tema dell'impaginazione è stato trattato in questo forum in una [pillola]
    e facendo altre ricerche sull'argomento si trova diverso materiale utile.
    Errare humanum est, perseverare ovest

  5. #5
    Utente di HTML.it L'avatar di MM88
    Registrato dal
    Jun 2003
    Messaggi
    567
    infatti non stiamo parlando di una ricerca su MILIONI di pagine. Lì c'è necessita di appoggiardi ad un db. QUi stiamo parlando di fare un parsing in una cartella e con il numero di file presenti creare un link di navigazioni fra gli stessi. NOn necessita di db.


    grazie per il link.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.