Visualizzazione risultati 1 fino 7 di 7

Discussione: Caricare più files contemporaneamente

  1. #1
    tiuz1990 non è connesso Neofita
    Data registrazione
    04-11-2010
    Messaggi
    13

    Predefinito Caricare più files contemporaneamente

    Salve a tutti, premetto che è la prima volta che mi avvicino a questo aspetto dei siti perciò scusate se scriverò qualche castroneria...

    Ho provato a dare un'aspetto pressoché sensato a quello che volevo fare e ve lo sottopongo qui
    Codice HTML:
    <form action="addgallery.php?type=appendix" method="post" enctype="multipart/form-data">
                 <table width="550px" height="300px" cellpadding="20px">
                         <tr>
                            <td colspan=2>
                                <div id="allegato" style="float: left;">
    	                        <input type="file" name="FOTO[0]">
                                    <input type="file" name="FOTO[1]">
                                    <input type="file" name="FOTO[2]">
                                    <input type="file" name="FOTO[3]">
                                    <input type="hidden" name="cartella_add" value="<?php echo $_GET['idf']; ?>">   
                                </div>
                            </td>
                         </tr>
                         <tr>
                             <td colspan=2 align=center><input type="submit" value="Aggiungi Foto"></td>
                         </tr>
                     </table>
            </form>
    e questa la parte php

    Codice PHP:
    if( (isset($_FILES['FOTO']['tmp_name']) && ($_FILES['FOTO']['tmp_name'] != "")))
    {
    $ifiles=0;
    while(
    $_FILES['FOTO']['$ifiles'])
    {
    $EXT = findexts($_FILES['FOTO']['name']['$ifiles']);
    $ultimo_id = mysql_fetch_array(mysql_query("SELECT MAX( id_file ) FROM Files;"), MYSQL_NUM);
    $numfoto = $ultimo_id[0]+1;
    $UPLOAD = "slide-".$numfoto.".".$EXT;
    move_uploaded_file($_FILES['FOTO']['tmp_name']['$ifiles'], "../images/$UPLOAD");
    mysql_query("INSERT INTO Files (nome_file, visibile, slider, id_cartella_ext) VALUES ('$UPLOAD', '1', '0', '$CARTELLA')") or die(mysql_error());
    $ifiles++;
    }
    }
    a voi i commenti :) quante bestemmie ho scritto? xD

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,684

    Predefinito

    Il codice (sia lato html, sia PHP) è obsoleto.

    In ogni caso,
    Codice PHP:
    if( (isset($_FILES['FOTO']['tmp_name']) && ($_FILES['FOTO']['tmp_name'] != "")))
    ricordati che hai più file, quindi io controllerei dentro il ciclo (nel tuo caso while) se ogni foto è "settata", e il nome non vuoto: invece di $_FILES['FOTO']['tmp_name'] penso che sia $_FILES['FOTO'][$files]['tmp_name']

    Inoltre:
    Codice PHP:
    while($_FILES['FOTO']['$ifiles'])
    Codice PHP:
    $EXT = findexts($_FILES['FOTO']['name']['$ifiles']);
    Codice PHP:
    move_uploaded_file($_FILES['FOTO']['tmp_name']['$ifiles'], "../images/$UPLOAD");
    Il valore $files non viene sostituito con il valore contenuto, perché hai usato i singoli apici. Lo avrebbe sostituito invece se tu avessi usato i doppi apici, quindi del tipo:
    Codice PHP:
    while($_FILES['FOTO']["$ifiles"])

    ...
    etc per gli altri
    Anche se sarebbe meglio non mettere nessun apice, visto che è una singola variabile.
    Comunque, anche qui penso che l'indice del file sia prima di [tmp_name], quindi $_FILES['FOTO'][$files][...]

    Invece, sono corretti:
    Codice PHP:
    "../images/$UPLOAD"
    Codice PHP:
    "INSERT INTO Files (nome_file, visibile, slider, id_cartella_ext) VALUES ('$UPLOAD', '1', '0', '$CARTELLA')"
    Perché lo hai messo tra i doppi apici, quindi le variabili vengono sostituite con i valori contenuti.

    Ciao!
    Ultima modifica di alemoppo : 18-10-2013 alle ore 20.50.14

  3. #3
    tiuz1990 non è connesso Neofita
    Data registrazione
    04-11-2010
    Messaggi
    13

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Il codice (sia lato html, sia PHP) è obsoleto.
    Come mi consiglieresti di modificarlo quindi per renderlo più "contemporaneo" e magari più veloce nell'esecuzione?

    Grazie mille per la risposta :)

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,684

    Predefinito

    La velocità dipende essenzialmente dalla velocità di upload dell'utente che utilizza lo script.
    Per rendere il codice più "attuale", nell'html dovresti essenzialmente eliminare le tabelle (servono per creare tabelle, e non per impaginare i contenuti della pagina). Lato PHP, invece, stai utilizzando le funzioni mysql_* che sono deprecate. Dovresti usare mysqli_* oppure PDO.

    Ciao!

  5. #5
    tiuz1990 non è connesso Neofita
    Data registrazione
    04-11-2010
    Messaggi
    13

    Predefinito

    ok grazie ancora! :) vedrò di aggiornare il tutto e verificare se funziona ;)

    EDIT:

    non funziona... non mi da errori ma non carica nulla su db né su host
    Ultima modifica di alemoppo : 19-10-2013 alle ore 20.18.02 Motivo: Non fare messaggi consecutivi: usa il tasto "Edita" per modificare i messaggi

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,684

    Predefinito

    Devi fare un po' di debug: aggiungi delle echo per vedere dove arriva l'esecuzione delle istruzioni. Magari fai stampare a video qualcosa di utile per il debug (ad esempio inizierei a controllare se è corretto $_FILES['FOTO'][0]['tmp_name']).

    Comunque, di solito nei name dei form trattati come array, si fa:
    Codice HTML:
    <input name="foto[]">
    <input name="foto[]">
    <input name="foto[]">
    e non:

    Codice HTML:
    <input name="foto[0]">
    <input name="foto[1]">
    <input name="foto[2]">
    Ciao!
    Ultima modifica di alemoppo : 19-10-2013 alle ore 20.22.49

  7. #7
    tiuz1990 non è connesso Neofita
    Data registrazione
    04-11-2010
    Messaggi
    13

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Devi fare un po' di debug: aggiungi delle echo per vedere dove arriva l'esecuzione delle istruzioni. Magari fai stampare a video qualcosa di utile per il debug (ad esempio inizierei a controllare se è corretto $_FILES['FOTO'][0]['tmp_name']).

    Comunque, di solito nei name dei form trattati come array, si fa:
    Codice HTML:
    <input name="foto[]">
    <input name="foto[]">
    <input name="foto[]">
    Si questo l'avevo visto e l'avevo corretto ma ancora nulla... proverò a fare il debug della parte php mi sa che è lì il problema :)

Regole di scrittura

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