Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Kahen
    Registrato dal
    Aug 2011
    Messaggi
    11

    [PHP] Problemi ISSET e modulo file

    Buongiorno a tutti, ho un problema riguardo un passaggio di dati ad un Database MySQL ma il problema in se sta nell'evitare che durante la modifica di una riga della tabella 'Clienti' perda i dati immessi precedentemente (in una modifica o nella creazione della riga).

    Mi spiego meglio. Ho una pagina di creazione composta da numerosi moduli (tra cui 5 "file"), rimandati tramite php (e SQL) ad un database. I file che passo li registro nel database con il nome e l'estensione del file caricato (ogni riga della tabella 'Clienti' ha da uno a cinque di questi file solitamente in formato '.pdf' caricati tramite $_FILES['filex']['name'] ). Fin qui tutto bene, quando seleziono la riga e la stampo a video i dati sono tutti inseriti correttamente e riesco ad aprire tutti i file.

    Il problema arriva al momento della modifica (in seguito al comando UPDATE in SQL).
    Per tutti i campi (tranne i campi "file") è facile: la pagina di modifica è uguale alla pagina di creazione ma con i moduli già compilati con le informazioni presenti sul DB della voce che voglio modificare. Il problema sta nei moduli "file". Quando eseguo il POST verso la pagina PHP dove sono presenti le istruzioni in SQL ovviamente se non ho inserito nulla nella pagina di modifica i campi:
    Codice PHP:
    $_FILES['filex'
    dovrebbero essere NULL, giusto? Invece a quanto pare se faccio:
    Codice PHP:
    echo isset($_FILES['filex']) 
    e il modulo nominato 'filex' nella pagina precedente non è stato inserito, mi viene stampato a video che è 1 e che quindi esiste e non è NULL!

    Insomma non capisco come mai anche se nel form così definito:
    Codice PHP:
    <input name="filex" type="file" /> 
    non viene inserito nulla, non sia NULL.

    Avete qualche idea da suggerirmi? Grazie mille anticipatamente

  2. #2

    Re: [PHP] Problemi ISSET e modulo file

    Originariamente inviato da Kahen
    Quando eseguo il POST verso la pagina PHP dove sono presenti le istruzioni in SQL ovviamente se non ho inserito nulla nella pagina di modifica i campi:
    Codice PHP:
    $_FILES['filex'
    dovrebbero essere NULL, giusto?
    No. Anche se non specifichi il file e lasci il campo vuoto, per la semplice presenza dell'input $_FILES['filex'] conterra' un array con 5 chiavi (name, type, tmp_name, error, size) che saranno vuote, ma comunque $_FILES['filex'] non e' vuoto.

  3. #3
    Utente di HTML.it L'avatar di Kahen
    Registrato dal
    Aug 2011
    Messaggi
    11
    Mh... capito. Quindi come posso controllare se ho passato qualcosa o meno da "file" evitando quindi di sovrascrivere ogni volta? Posso fare un controllo diverso?

    Grazie della dritta.

  4. #4
    Controlla uno qualunque dei valori dell'array $_FILES['filex'], ad esempio $_FILES['filex']['size'].

  5. #5
    Oppure, meglio, controlla "error". Se è 4 allora non c'è file da caricare.
    Oppure tmp_name. Se non c'è file, vale null.
    Volendo puoi usare anche is_uploaded_file...

    Eviterei il size, che se ricordo bene può essere manipolato (alterando le info del file)


  6. #6
    Utente di HTML.it L'avatar di Kahen
    Registrato dal
    Aug 2011
    Messaggi
    11
    assurdo, avevo provato con $_FILES['filex']['name']==NULL ma non sembrava aver funzionato, mentre ora funziona alla perfezione. Idem per $_FILES['filex']['error'], prossima volta farò un check da lì, è infinitamente più comodo

    Grazie infinite per l'aiuto!

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