Visualizzazione risultati 1 fino 7 di 7

Discussione: Help: codice PHP per directory

  1. #1
    wood non è connesso Neofita
    Data registrazione
    16-10-2019
    Messaggi
    16

    Question Help: codice PHP per directory

    Buonasera,
    premetto che non ho conoscenze riguardo PHP.

    Avrei bisogno di un codice che legga e ritorni un json di tutti i file (nel mio caso immagini con diverse estensioni) presenti in 3 cartelle: Inizio, Slideshow e Album (nota importante: la cartella Album contiene altre cartelle all'interno con le relative immagini)
    Il json dovrebbe ritornare i percorsi e i nomi di tutti i files.
    A seguire un paio di esempi (non per forza il json deve essere strutturato così, l'importante è che ci siano tutti i percorsi giusti di tutti i file):
    Esempio strutturato ->
    Codice:
    {
      "Inizio": [ "immagine1.jpg" ],
      "Slideshow": [ "immagine2.jpg", "immagine3.png", "immagine4.jpg" ],
      "Album": {
        "Album1": [ "immagine5.jpg", "immagine6.png" ],
        "Album2": [ "immagine7.png", "immagine8.jpg" ],
        "Album3": [ "immagine9.jpg", "immagine10.jpg", "immagine11.png" ]
      }
    }
    Esempio non strutturato ->
    Codice:
    {
      "immagini": [
        "Inizio/immagine1.png",
        "Slideshow/immagine2.jpg",
        "Slideshow/immagine3.jpg",
        "Album/Album1/immagine4.png",
        "Album/Album1/immagine5.jpg",
        "Album/Album2/immagine6.png"
      ]
    }
    L'importante è che ci siano tutte le immagini con i relativi percorsi corretti.

    Inoltre mi servirebbe che il codice si adatti al 100% ai file che trova, in modo che se io dovessi aggiungere o rimuovere foto o album, il codice ritorni sempre i file aggiornati (senza dover ogni volta modificare anche il codice).

    Un esempio di codice (che non funziona molto...) potrebbe essere il seguente
    Codice PHP:
    <?php
    header
    ('Access-Control-Allow-Origin: *');

    $cartelle = [ 'Inizio', 'Slideshow' ] + glob('Album/*', GLOB_ONLYDIR);
    $raccoglitore = function ($elenco, $cartella) {
    return
    $elenco + glob($cartella . '/*.{jpg,JPG}', GLOB_BRACE);
    };

    header('Content-Type: application/json');
    echo
    json_encode([
    'immagini' => array_reduce($cartelle, $raccoglitore, []),
    ]);
    Questo codice, per esempio, ritorna il seguente json
    Codice:
    {
      "immagini": [
        "Inizio/ImmagineInizio.jpg",
        "Slideshow/road-1072823_960_720.jpg",
        "Slideshow/scotland-1761292_1920.jpg",
        "Album/Portaits/portait-4744155_1920.jpg"
      ]
    }
    Il formato, anche se rozzo, va bene (anche se sarebbe meglio più strutturato ma me lo posso sistemare nel JS!), però non funziona (non prende tutti i file e non è iterativo per le sotto-cartelle)

    Se è impossibile da fare in un solo file, si possono anche fare 3 file (uno per ogni macrocartella) anche se uno solo sarebbe decisamente meglio

    Ringrazio tutti per l'aiuto!

    Una buona serata
    Ultima modifica di dreadnaut : 30-09-2020 alle ore 19.39.09 Motivo: + codice riformattato per riuscire a leggerlo

  2. #2
    L'avatar di dreadnaut
    dreadnaut è connesso ora Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,261

    Predefinito

    Boh, ne abbiamo già discusso in passato, e ti abbiamo spiegato come aggiungere estensioni per avere anche i file .png. E con quello hai tutti pezzi del puzzle che ti servono.

    Prova a cambiare il codice che hai per fargli restituire l'elenco che ti serve. Se poi non funziona, mostraci quel codice e vediamo di aggiustarlo.

  3. #3
    wood non è connesso Neofita
    Data registrazione
    16-10-2019
    Messaggi
    16

    Predefinito

    Salve, purtroppo come già detto non ho conoscenze riguardo PHP... inoltre nessuno dei codici già suggeriti era funzionante se no non avrei creato una discussione apposta.
    Mi spiace essere ripetitivo ma non conoscendo il linguaggio avrei bisogno del codice fatto, o dovrei impararlo solo per poter scrivere questo codice

    Se qualcuno avesse voglia di farlo gliene sarei grato!

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    dovrei impararlo solo per poter scrivere questo codice
    Questa è un'ottima idea e sei nel posto giusto.

    avrei bisogno del codice fatto
    Per questo un forum di supporto non è il posto adatto. Cerca piuttosto su piattaforme come https://www.fiverr.com/hire/php.

    I suggerimenti che do più spesso:


  5. #5
    GraphOGLRisorse è connesso ora AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,001

    Predefinito

    Salve,
    concordo, imparare un pò di php è una buona idea, anche per eventuali necessità con futuri codici.

    Comunque wood, nel caso non li conosca, esitono anche questi siti, che sono in italiano. Le ho messo direttamente i link delle rispettive pagine che raggrupano le principali voci su php.
    Html.it
    MRW.it - Mr.Webmaster

    In ogni caso, dato che alcune pagine possono essere un pò datate, faccia attenzioene, per dubbi, può controllare la compatibilita delle specifiche in PHP Manual. Anche qui ci sono molti esempi semplici che aiutano a capire meglio come agire in base alla situazione.

    Cordiali saluti.

  6. #6
    wood non è connesso Neofita
    Data registrazione
    16-10-2019
    Messaggi
    16

    Predefinito

    Grazie a tutti per i consigli, allora se dovessi avere dei problemi con il codice scriverò di nuovo qui

  7. #7
    wood non è connesso Neofita
    Data registrazione
    16-10-2019
    Messaggi
    16

    Talking

    Ho appena ultimato il codice, lo posto a seguire

    Codice PHP:
    <?php header('Access-Control-Allow-Origin: *');

    $dirInizio = glob('Inizio/{ImmagineInizio.jpg,ImmagineInizio.jpeg,ImmagineInizio.png,ImmagineInizio.raw}', GLOB_BRACE);

    $dirSlideshow = glob('Slideshow/{*.jpg,*.jpeg,*.png,*.raw}', GLOB_BRACE);

    $dirAlbumNames = glob('Album/*', GLOB_ONLYDIR);
    $dirAlbum = [];
    foreach (
    $dirAlbumNames as $album) {
    $dirCurrentAlbum = glob($album . '/{*.jpg,*.jpeg,*.png,*.raw}', GLOB_BRACE);
    $dirAlbum = array_merge($dirAlbum, $dirCurrentAlbum);
    }

    $dirInizioFiles = [];
    foreach (
    $dirInizio as $file) {
    $ArrayFile = explode("/", $file);
    array_push($dirInizioFiles, $ArrayFile[1]);
    }

    $dirSlideshowFiles = [];
    foreach (
    $dirSlideshow as $file) {
    $ArrayFile = explode("/", $file);
    array_push($dirSlideshowFiles, $ArrayFile[1]);
    }

    $dirAlbumFiles = [];
    foreach (
    $dirAlbum as $album) {
    $ArrayFile = explode("/", $album);
    if (!
    array_key_exists($ArrayFile[1], $dirAlbumFiles)) {
    $dirAlbumFiles = array_merge($dirAlbumFiles, array($ArrayFile[1] => [$ArrayFile[2]]));
    } else {
    array_push($dirAlbumFiles[$ArrayFile[1]], $ArrayFile[2]);
    }
    }

    $result = array("Inizio" => $dirInizioFiles, "Slideshow" => $dirSlideshowFiles, "Album" => $dirAlbumFiles);
    echo
    json_encode($result);
    Grazie a tutti dei consigli, PHP non è un linguaggio difficile!
    Una buona serata

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •