Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194

    Invio di files multipli da form in array. L'array risulta vuoto

    Ciao a tutti, mi rivolgo ancora a voi perchè non vengo a capo di una situazione che dovrebbe essere semplice.
    Sto cercando di inviare da un form più files, immagini per la precisione, li metto in array ma dal momento di visualizzarlo il mio array è vuoto. Ho già fatto prima d'ora cose simili ma con dei testi, con i files mai.

    Vi posto i codici.

    Il form html: un campo file per aggiungere un'immagine (userFile) ed un campo per aggiornare quelle esistenti (modifica).

    codice HTML:
    <form method="post" enctype="multipart/form-data">              
                    
                    <?php 
                    $sql="SELECT * FROM `galleria` WHERE categoria='teatro'";
                    $dati=mysql_query($sql);
                    while($row=mysql_fetch_array($dati))
                    {
                    ?>
                    <div class="quadro">
                        <button class="cancella elimina" type="submit" formaction="db/delete.php?teatro&id=<?php echo $row["id"]; ?>"><img src="images/icone/chiudi.png" alt="elimina"></button>
                        <div class="cornice">
                            <div class="galleryimg" style="background:#000 url(images/thumbs/galleria/<?php echo $row['alt'] ;?>) center center no-repeat;  background-size: cover; ">
                                <a href="images/galleria/<?php echo $row['alt'] ;?>"><img src="images/mascherina.png" alt="clicca per ingrandire" title="clicca per ingrandire"></a>
                            </div>
                        </div>
                        <div class="clear"></div>
                        <input class="aggiungi bottom" type="file" name="modifica[]" placeholder="modifica" />
                        <input class="nascosto" type="text" name="id[]" value="<?php echo $row["id"]; ?>" />
                        <div class="clear"></div>
                    </div>
                    <?php
                    }
                    ?>
                    
                    <div class="quadro abbassa">
                        <div class="cornice">
                            <div class="galleryimg">
                            <img src="images/icone/add.jpg" alt="clicca per aggiungere un file" title="clicca per aggiungere un file">
                            <input class="add" type="file" name="userFile" />
                            </div>                        
                        </div>
                    </div>
                    
                        <input class="nascosto" type="text" name="key" value="<?php echo $key; ?>" />
                        <button class="salva" type="submit" formaction="db/teatroupload.php">Salva</button>
            </form>


    Chiaramente ho poi tutto un php per la gestione dei dati ma il problema sta a monte: con echo $_FILES['modifica']['name'] non ottengo nulla, solo il titolo Array. Non ho trovato nulla riguardo all'uso di immagini in array, mi chiedo quindi se sia fattibile.
    Grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Il campo di input file si chiama "userFile" non "modifica".

    Edit: avevo notato solo l'ultimo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Intanto sto provando anche con altri tipi di files ed il risultato è identico.
    Ok ammetto l'ignoranza di non saper come estrapolare un array di files

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    La cosa strana, almeno per me, è che se scrivo:

    Codice PHP:
    if (isset($_FILES['modifica']))
    {
    echo 
    'hai caricato il file ' $_FILES['modifica']['name'];
    } else echo 
    'nessun file caricato'
    Ottengo sempre "hai caricato Array", sia che abbia effettivamente scelto un file o no.

    Se invece scrivo

    Codice PHP:
    $modifica $_FILES['modifica'];
    if (isset(
    $modifica))
    {
    echo 
    'hai caricato il file ' $_FILES['modifica']['name'];
    } else echo 
    'nessun file caricato'
    Ottengo sempre "nessun file caricato".

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Hai provato un semplice
    print_r($_FILES);
    per vedere cosa stampa?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Sì, ho fatto una stampa e mi restituisce i dati corretti. Anche se non ho capito cosa non funzionasse prima ho fatto un passo oltre e sono riuscito a fare un array-combine tra id e files.
    Il problema che non avevo considerato è che un file ha diversi attributi mentre l'id solo uno.
    Mi si presenta quindi un problemino non indifferente. Per poter aprire e leggere il mio file (fopen, fread) ho bisogno di mettere in array $_FILES['modifica']['tmp_name'], in questa maniera mi perdo ad esempio il nome del file che diventa array (ecco perchè vedevo solo scritti array).
    Il problema è che ho basato la ricostruzione della mia immagine estrapolandone il nome e l'estensione.

    Vi viene in mente un modo per combinare ulteriormente gli array e ricavare i restanti attributi?
    Posto il codice interessato:

    Codice PHP:
    <!DOCTYPE html>
    <html lang="it">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    </head>
    <body onload="document.forms[0].submit();">

    <?php

    $key
    =$_POST['key'];
    if (
    $key==1)
    {
            include 
    '../db/connessione.php';
            
            
    $id $_POST['id'];
            
    $percorsothumb '../images/thumbs/galleria/';
            
    $percorsoimg '../images/galleria/';
            
    $nomeimg $_FILES['userFile']['name'];
            
    $estensione end((explode(".",$nomeimg)));
            
    $alt $_FILES['userFile']['name'];
            
    $categoria teatro;
            
            
            
            
            
    //se sto caricando una nuova foto
            
    if (!empty($_FILES['userFile']['type']))
            {
                        
    //controllo se l'estensione è supportata
                        
    if (!preg_match'/gif|png|jpeg|jpg/'$estensione))
                        {echo (
    '<h1>Errore</h1><br/><h3>estensione ' $_FILES['userFile']['type'] . ' non suportata</h3>');
                        die;}
                
                        
    $handle fopen ($_FILES['userFile']['tmp_name'], "r") or die ('<h1>Errore</h1><br/><h3>impossibile aprire il file</h3>');
                        
    $image fread ($handlefilesize($_FILES['userFile']['tmp_name'])) or die('<h1>Errore</h1><br/><h3>impossibile leggere il file</h3>');
                        
    fclose ($handle);
            
                        
    //ridimensiono l'immagine
                        
    include'../db/resize2.php';
            
                        
    $handle fopen ("$percorsothumb$nomeimg""r") or die ('impossibile aprire il file thumb');
                        
    $thumb fread ($handlefilesize("$percorsothumb$nomeimg")) or die('impossibile leggere il file');
                        
    fclose ($handle);
            
                        
    $image mysql_real_escape_string($image);
                        
    $thumb mysql_real_escape_string($thumb);
                        
                        
    //inserisco la foto nel database
                        
    $query 'INSERT INTO galleria (immagine,alt,type,thumb,categoria) VALUES ("' $image '","' $alt '","' $_FILES['userFile']['type'] . '","' $thumb '","' $categoria '")';
                        
    $result mysql_query($query);
                        
                        
    //se ci sono errori mi fermo se no..
                        
    if (!$result) {die("Errore:" mysql_error());}
                        else { 
                                
    //se si stanno aggiornano
                                
    if (isset($_FILES['modifica']))
                                {
                                    
    //creo un array
                                    
    $array array_combine($id$_FILES['modifica']['tmp_name']);
                                    
                                    
    ///faccio un ciclo delle immagini presenti
                                    
    foreach ($array as $id => $_FILES['modifica']['tmp_name'])
                                    {
                                
                                        if (!empty(
    $_FILES['modifica']['tmp_name']))
                                        {
                                            
    $handle fopen ($_FILES['modifica']['tmp_name'], "r") or die ('<h1>Errore</h1><br/><h3>impossibile aprire il file</h3>');
                                            
    $modifica fread ($handlefilesize($_FILES['modifica']['tmp_name'])) or die('<h1>Errore</h1><br/><h3>impossibile leggere il file</h3>');
                                            
    fclose ($handle);
                                            
    $modifica mysql_real_escape_string($modifica);
                                        
                                            
    $altmod $_FILES['modifica']['name'];
                                            
    $type $_FILES['modifica']['type'];
                                            
    $nomeimgmod $_FILES['modifica']['name'];
                                            
    $estensionemod end((explode(".",$nomeimgmod)));
                                        
                                        
                                    
                                            
    //ridimensiono l'immagine
                                            
    include'../db/resizemod.php';
            
                                            
    $handle fopen ("$percorsothumb$nomeimgmod""r") or die ('impossibile aprire il file thumb');
                                            
    $thumb fread ($handlefilesize("$percorsothumb$nomeimgmod")) or die('impossibile leggere il file thumb');
                                            
    fclose ($handle);
            
                                            
    $image mysql_real_escape_string($image);
                                            
    $thumb mysql_real_escape_string($thumb);
                                        
                                            
    //..aggiorno il database
                                            
    $query "UPDATE galleria SET
                                            immagine = '" 
    $image "',
                                            alt = '" 
    $altmod "',
                                            type = '" 
    $type "',
                                            thumb = '" 
    $thumb "',
                                            categoria = '" 
    $categoria "'
                                            WHERE id=
    $id";
                                            
    $result mysql_query($query);
                                            if (!
    $result) {die("Errore:" mysql_error());}
                                            else{
                                                    
    ?>
                                                    <form action="../teatro.php?modifica" method="post">
                                                    <input type="hidden" name="var1" value="entra">
                                                    </form>
                                                    <?php
                                                
    };
                                    
                                        } else {
                                                    
    ?>
                                                    <form action="../teatro.php?modifica" method="post">
                                                    <input type="hidden" name="var1" value="entra">
                                                    </form>
                                                    <?php
                                                
    };
                                    };
                                }    else{
                                            
    ?>
                                            <form action="../teatro.php?modifica" method="post">
                                            <input type="hidden" name="var1" value="entra">
                                            </form>
                                            <?php
                                        
    };
                            };    
                                    

            
    //se non sto caricando una nuova foto
            
    } else echo 'da continuare...';
                exit;
            
            
            
            
            
            
            
    //controllo se ci sono aggiornamenti
            
            //se ci sono..
            
            //..aggiorno il database
            
            
            
            
            
        
                    
                                    
                        
                    
    } else {header("location: ../amministra.php?errore=1");}
    ?>

    </body>
    </html>
    Mi rimangono fuori queste variabili che non so come ricavare:

    $altmod = $_FILES['modifica']['name'];
    $type = $_FILES['modifica']['type'];
    $nomeimgmod = $_FILES['modifica']['name'];
    $estensionemod = end((explode(".",$nomeimgmod)));

    Grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.