• User

    Si ok, come dici di fare tu viene un lavoro sicuramente più pulito, io non ho utilizzato MySQL dall'inizio perchè non lo conosco benissimo, ma soprattutto non conosco le porzioni di codice da usare in php per richiamare le varie funzioni sql, quindi non riesco a far interagire bene insieme le due cose.

    A come organizzare il tutto ci ho già pensato..
    Anche se volessi fare una tabella per ogni galleria, poi non saprei come fare a far interagire il database con la pagina effettiva.. non parlo di form, quelli non sono un problema, ho difficoltà invece con i comandi mysql_query che invece non conosco!

    Non so.. hai qualche tutorial da suggerirmi? o se conosci tipologie di gallerie che utilizzano un sistema simile a quello che vorrei usare io, dal quale potrei osservare il funzionamento del codice..

    Grazie, fammi sapere..


  • User Attivo

    Perchè vuoi copiare?
    No no... fai da sola che è più bello! :wink3:

    Anch'io all'inizio mi ostinavo a NON usare il database; non sai quanti casini e spappolamenti di cervello per lavorare sui txt... :arrabbiato:
    Poi mi son deciso e mi son detto: perchè non l'ho fatto prima?

    Fai delle prove con questi script...

    File (connect.inc.php) con i dati di connessione, da includere in tutti gli script che fanno operazioni sul db:

    
    <?php
    ///////////////////////////////////
    // INSERIRE QUI I DATI DI MYSQL ///
    $host='xxx.xxx.xxx.xxx'; ///////////
    $username=''; ////////////
    $password=''; /////////////
    $database=''; //////////
    ///////////////////////////////////
    $dbconnect = mysql_connect($host,$username,$password);
    if (!$dbconnect) exit ('<p>Errore nella connessione al server</p>');
    if (!mysql_select_db($database)) exit ('<p>Errore nella connessione al database</p>');
    ?>
    
    

    File (install.php) da lanciare per cancellare la tabella e ricrearla (utile anche per 'resettare'):

    
    <?php
    require 'connect.inc.php';
    $query="DROP TABLE tabella_prova"; // cancella la tabella
    mysql_query($query);
    $query="CREATE TABLE tabella_prova (id INT (5) UNSIGNED not null AUTO_INCREMENT, campo_1 TEXT not null, campo_2 TEXT not null, campo_3 TEXT not null, KEY (id))"; // crea la tabella con 3 campi oltre al campo ID
    mysql_query($query);
    mysql_close();
    ?>
    
    

    E poi, per inserire i dati:

    
    <?php
    $valore1='Lorem';
    $valore2='ipsum';
    $valore3='dolor...';
    require_once 'connect.inc.php';
    $query='INSERT INTO tabella_prova (campo_1, campo_2, campo_3) VALUES ("'.$valore1'", "'.$valore2.'", "'.$valore3.'")';
    mysql_query($query);
    mysql_close();
    ?>
    
    

    ... e per estrarli:

    
    <?php
    require_once 'connect.inc.php';
    $query='SELECT * FROM tabella_prova';
    $query=mysql_query($query, $dbconnect);
    while ($valori=mysql_fetch_assoc($query)) {
    echo '<p><strong>ID record: '.$valori['id'].'</strong> - '.$valori['campo_1'].' '.$valori['campo_2'].' '.$valori['campo_3'].'</p>';
    }
    mysql_close();
    ?>
    
    

    Dai... smanetta! :smile5:


  • User

    Ti ringrazio davvero per i codici che mi hai dato.. Ho preso un pochino spunto e sono quasi riuscita a risolvere..

    Vorrei*** sincronizzare*** i nomi delle immagini all'interno della cartella che contiene i file, con il campo "nome" nella tabella sul database.

    Praticamente voglio che quando aggiungo un file senza form, ma tramie ftp, nella cartella che contiene le immagini, il php che contiene la galleria faccia un **controllo del contenuto della cartella e SE un nome immagine manca nel database, lo aggiunga automaticamente.

    **In parte ci sono riuscita con questo codice:```

    if ($file == $valori['nome_img']) {
    break;
    }
    elseif ($file !== $valori['nome_img']) {

    $query2= "INSERT INTO img_gallery.galleria_1 (id, nome_img, descrizione, altro) VALUES (NULL, '$file', 'descrizione prova', '')";
    $query2=mysql_query($query2, $dbconnect);
    

    }

    
    dove $file è l'array dei nomi delle immagini contenute nella cartella.
    
    In parte funziona, perche quando il codice viene letto, i valori dei nomi dei file, vengono aggiunti tranquillamente nel db. 
    Il problema, è che se aggiorno la pagina che contiene il codice, questo mi aggiunge nuovamente tutti i nomi delle immagini un altra volta.
    
    Ho provato con degli if, o degli isset, ma non sn riuscita ancora a risolvere..
    
    Vorrei che il codice controllasse se i nomi della cartella sono all'interno del db, e qualora mancassero li aggiungesse, non che tutte le volte mi riaggiunge TUTTI i nomi dei file! 
    
    *Credo il problema principale sia che va sostituito "$file" nell'"INSERT INTO" in modo che mi aggiunga solo i valori che mancano al database, e non tutti, ma non so come fare!*
    
    Qualcuno è in grado di aiutarmi?

  • User Attivo

    @Wasp9 said:

    In parte ci sono riuscita con questo codice:
    Postalo completo altrimenti non si capisce.


  • User
    
    <?php
    
        // Includo la class
    include("classe.php");
    
    //definisco il percorso delle cartelle che contengono le immagini 
    $path = "galleria/gruppo/images";
    $newpath = "galleria/gruppo/thumb";
    
    //scandisco la cartella con le immagini
    $dir_handle = @opendir($path) or die("Unable to open folder");
    
    while (false !== ($file = readdir($dir_handle))) {
     
    if($file == "index.php")
    continue;
    if($file == ".DS_Store")
    continue;
    if($file == ".")
    continue;
    if($file == "..")
    continue;
    
    //inserisco i dati di connessione al db
    require_once 'connect.inc.php';
    
    //queste sono prove
    $nome_file_db = $valori['nome_img'];
    $nome_file = $file;
    $uguali = $nome_file_db == $nome_file;
    $nonuguali = $nome_file_db !== $nome_file;
    
    //
    if ($file == $valori['nome_img']) {
        continue;
        }
    
        else {
    
    //dico di inserire il nome dei file contenuti nella cartella, nel campo della tabella "nome_img"
            
        $query2= "INSERT INTO img_gallery.galleria_1 (id, nome_img, descrizione, altro) VALUES (NULL, '$file', 'descrizione prova', '')";
        $query2=mysql_query($query2, $dbconnect);
        
        }
    
    //questa parte di codice va bene, perchè mi riporta nella galleria le immagini che hanno la corrispondenza del nome sul database
    $query='SELECT * FROM galleria_1';
    $query=mysql_query($query, $dbconnect);
    while ($valori=mysql_fetch_assoc($query)) {
    
    if ($file == $valori['nome_img']) {
        
        echo '<li><a href="'.$path.'/'.$file.'" title="'.$valori['descrizione'].'"> <img src="'.$newpath.'/'.$file.'" width="130" /></a></li>';
        
    }
    
    }
    mysql_close();    
    
    //parametri che mi permettono il ridimenzionamento delle immagini per creare le miniature
        $resizeObj = new resize('galleria/gruppo/images/' . $file);
        $resizeObj -> resizeImage(130, 130, 'crop');
        $resizeObj -> saveImage('galleria/gruppo/thumb/' . $file, 100);
        
    }    
    
    //chiudo la directory
    closedir($dir_handle);    
    
    ?>
    
    

    L'ho commentato ora alla buona, spero si capisca..

    In sostanza cmq ho bisogno che lo script controlli se i nomi dei file nella cartella, sono presenti anche nel campo "nome_img" della tabella sul database, se si, non deve fare niente, se mancano dei nomi, di aggiungerli al database.. è possibile?

    Ricordo che attualmente ad ogni esecuzione dello script mi aggiunge al database TUTTI i nomi dei file presenti nella cartella, creando innumerevoli duplicati inutili.


  • User Attivo

    Te li aggiunge tutti perchè non effettua alcun controllo nel db...

    In particolare qui:

    
    //queste sono prove
    $nome_file_db = $valori['nome_img'];
    $nome_file = $file;
    $uguali = $nome_file_db == $nome_file;
    $nonuguali = $nome_file_db !== $nome_file;
    
    

    $valori['nome_img'] è nulla perchè non fai una query di estrapolazione dati prima...
    Guarda bene, tra i codici che ti ho postato ieri.


  • User
        
       $prova='SELECT * FROM galleria_1';
        $prova=mysql_query($prova, $dbconnect);
        while ($valori=mysql_fetch_assoc($prova)) {
            
            $nome_file_db = $valori['nome_img'];
    
    } //chiude while
    
    if ($file == $nome_file_db) {
        
        continue;
        
        }
        
        else {
    
        $query2= "INSERT INTO img_gallery.galleria_1 (id, nome_img, descrizione, altro) VALUES (NULL, '$file', 'descrizione prova', '')";
        $query2=mysql_query($query2, $dbconnect);
        
        }
    
    

    Non cambia praticamente niente.. mi duplica cmq le immagini se eseguo più volte lo script.
    Dove sbaglio?


  • User
    
    $query2= "INSERT INTO img_gallery.galleria_1 (id, nome_img, descrizione, altro) VALUES (NULL, '$file', 'descrizione prova', '')";
    $query2=mysql_query($query2, $dbconnect);
    
    

    ma il problema non è legato al fatto che nella stringa che ho riportanto qua sopra, ci sia la variabile $file (che è la lettura dei file nella directory)?

    In quel punto dovrebbe starci una variabile che indica i nomi dei file che mancano al database.. voglio dire, dovrei mettere a confronto in qualche modo i file nella cartella e i valori sul database.. poi dovrei inserire al posto di $file una variabile derivata dal confronto.. no?

    Non so più dove sbattere la testa.. :arrabbiato:


  • User Attivo

    Non vedi la soluzione perchè non applichi la logica...

    'SELECT * FROM galleria_1'
    

    che tradotto in italiano significa:

    Seleziona tutti i campi della tabella galleria_1

    Il ciclo while non fa altro che scorrere, uno per uno, tutti i record (righe) di quella tabella e la variabile $valori['nome_img'] assume il valore di quel campo ogni volta che cambia la riga...

    quindi?...

    Poi, selezioni una tabella ed inserisci i dati in un'altra? ($query2) :arrabbiato:


  • User Attivo

    Ciao tigrone,

    Credo di avere bisogno del tuo aiuto per le immagini. Vengo subito al dunque. inizio a dire che lavoro da un bel po (qualche mese) con il php e html, e devo dire che rispetto visual basic da cui venivo è tutto un'altro mondo. Premesso questo, mi piace anche presentarmi, mi chiamo Fabio da Roma. Piacere a tutto il forum. Fatte le dovute presentazioni, vengo subito al problema. Allora, vorrei realizare una specie di raccolta foto come in facebook per intenderci, ma con il database. Quindi, m'interessa la selezione multipla innanzi tutto, che posso selezionare una o più foto in contemporanea, e poi metterci ad ogni foto selezionata, il titolo e vederle in miniatura. In ultimo, una volta che si è creato chiamiamolo così album di miniature, dovrei avere la possibilità di cliccarci sopra e ingrandirle. Tutto ciò è fattibile ???? Mi potresti aiutare per favore ???? Ho provatop dei codici ed anche inventarmi qualcosa di mio mescolando le varie soluzioni, ma ho ottenuto solo cacate senza soluzione. I campi che m'interessano per la tabella sono i seguenti:

    Titolo (della foto)
    Nome della foto (credo corrisponda al link).

    Aspetto tue notisie, spero al più presto. Grazie.


  • User

    Propongo la mia idea...

    rinomini le immagini in descrizione_immagine(chiocciola)nome_originale.jpg
    separando la descrizione e il titolo da una chiocciola

    poi dividi le info in due con un $info_img = explode(@, $titolo_immagine);

    dove:

    $info_img[0]; <--- descrizione immagine
    $info_img[1]; <--- titolo immagine

    😄

    anche se faresti molto meglio ad utilizzare mysql per queste operazioni.
    Inoltre non so se carichi le immagini mantenendo il nome originale.


  • User Attivo

    Ciao,

    Il mio problema è il seguente, non so se hai letto bene cosa vorrei fare. Mi spiegherò meglio. Innanzi tutto, ho un form con diversi campi. Ti posto qui di seguito la tabella del db.

    [PHP]

    CREATE TABLE rivista (
    id INT(11) NOT NULL AUTO_INCREMENT,
    rivista VARCHAR(20) NOT NULL,
    anno VARCHAR(4) NOT NULL,
    numero VARCHAR(4) NOT NULL,
    pagina VARCHAR(3) NOT NULL,
    titolo VARCHAR(20) NOT NULL,
    categoria VARCHAR(15) NOT NULL,
    componenti VARCHAR(255) NOT NULL,
    immagine1 VARCHAR(255) NOT NULL,
    immagine2 VARCHAR(255) NOT NULL,
    immagine3 VARCHAR(255) NOT NULL,
    immagine4 VARCHAR(255) NOT NULL,
    immagine5 VARCHAR(255) NOT NULL,
    PRIMARY KEY (id)
    );

    [/PHP]

    Come potrai notare, ci sono i campi immagine che vanno da 1 a 5. Io vorrei fare in modo che, invece di avere un vincolo di 5 immagini, perchè la rivista potrebbe contenere più di 5 immagini, vorrei fare una selezione multipla delle immagini, e memorizzare il tutto nel db. In modo tale, che quando visualizzo le miniature, ho sotto i titoli delle foto, ci clicco sopra e poi vengono visualizzate nel loro formato. E' possibile fare ciò ???? Penso di si, perchè facebook fa na cosa del genere. Ovviamene, bisgogna in questo caso memorizzare il link della foto. In ultimo, fare un controllo assicurando a chi inserire l'immagine, che la stessa immagine non sia già inserita. Scusa il gioco di parole. Mi puoi fdare una mano ????? Grazie, aspeto vostri suggerimenti.