• User

    da directory foto a tabella mysql

    Ciao a tutti, avrei un quesito,

    dovrei fare in modo di inserire in una tabella ;il percorso, il nome e l'id di immagini contenute in una directory per poter essere caricate dinamicamente.
    Sono riuscito ad impostare in php apertura, e lettura della directory, e scrittura della tabella ma non riesco a capire come fare in modo che lo script legga i dati e li immagazzini nella tabella...
    Intuisco utilizzo di cicli e array!!!

    grazie
    sandro1492


  • User Attivo

    Ehm... non ho capito una cosa... mi puoi mostrare la struttura della tabella del database?

    Comunque i cicli li so, se mi mostri la struttura ti do il codice pronto 😉


  • Super User

    Ciao Sandro1492,

    per prendere i file puoi utilizzare la funzione glob().
    Questa cerca i file in una directory secondo la pattern specificata come primo argomento e restituisce un array associativo i cui elementi sono le path dei file trovati.
    Puoi successivamente utilizzare un iterazione (ciclo) per stampare i valori nell'array e basename() per prendere i nomi dei file da questi ultimi.
    Gli id sono gli indici a base 0 dell'array restituito da glob().
    Ti faccio un esempio veloce:
    [php]<table>
    <tr><td>ID</td><td>Percorso</td><td>Nome</td></tr>
    <?php
    $arrayfile = glob('dir/*');

    foreach($arrayfile as $id => $percorsofile)
    echo '<tr><td>'.$id.'</td><td>'.$percorsofile.'</td><td>'.basename($percorsofile).'</td></tr>';

    ?>
    </table>

    [/php]Spero di essere stato utile.

    Ciao!


  • User

    Ciao e grazie per le risposte..

    il tuo suggerimento probid riguarda la tabella a video ma io intendevo l' inserimento delle immagini da una directory ad in una tabella nel db mysql...scusatemi se non sono stato chiaro!

    Per questo non riesco a comprendere come creare lo script che me lo faccio in automatico o semiautomatico

    ciao e grazie
    sandro1492


  • Super User

    Scusa, è colpa mia che non avevo letto il titolo.
    Allora, supponiamo di aver una tabella Immagini con i campi "Id" unique o pkey, "Nome" e "Percorso".
    Se puoi utilizzare l'estensione php mysqli è possibile costruire una stringa contenente query multiple da eseguire con una chiamata unica a mysqli::multi_query():

    [php]
    <?php

    //operazioni di connessione e selezione del Database mySQL
    $connessione = new mysqli('localhost', 'root', '','Immagini');

    //prendo tutti i file nella directory "Immagini"
    $arrayfile = glob('Immagini/*');

    //Inizializzo una variabile stringa che conterrà la query da eseguire
    $query = '';

    //Ciclo gli elementi dell'array $arrayfile
    foreach($arrayfile as $id => $percorsofile)
    {
    //Costruisco la query di inserimento
    $query .= "INSERT INTO Immagini (Id,Nome,Percorso) VALUES ('".$id."','".basename($percorsofile)."','".$percorsofile."') ON DUPLICATE KEY UPDATE Id=Id;";
    }

    //All'uscita dal ciclo ho le query costruite dalle varie iterazioni, mi basta eseguirle.
    $connessione->multi_query($query);

    ?>
    [/php]

    Altrimenti devi usare le vecchie funzioni mysql:

    [PHP]<?php

    //operazioni di connessione e selezione del Database mySQL
    $connessione = mysql_connect('localhost','root','');
    mysql_query('USE Immagini',$connessione);

    //prendo tutti i file nella directory "Immagini"
    $arrayfile = glob('Immagini/*');

    //Ciclo gli elementi dell'array $arrayfile
    foreach($arrayfile as $id => $percorsofile)
    {
    //Eseguo la query
    mysql_query("INSERT INTO Immagini (Id,Nome,Percorso) VALUES ('".$id."','".basename($percorsofile)."','".$percorsofile."') ON DUPLICATE KEY UPDATE Id=Id",$connessione);
    }

    ?>[/PHP]

    Ciao!