Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    32

    Problema uploading files da una form

    Buongiorno a tutti.
    Ho una form che al submit salva una serie di valori nel mio database

    Nome
    Cognome
    Indirizzo
    etc

    Vorrei anche poter fare l'upload di un file chiamato logo che mi rappresentera' l'utente in questione.

    Ho trovato molte funzioni che possono fare l'upload ma non riesco a capire come riuscire a salvare correttamente i dati della form nel database e fare l'upload allo stesso tempo. Inoltre devo salvare nel db anche il path per raggiungere l'immagine

    Se faccio cosi :
    <form enctype="multipart/form-data" action="controller/uploader.php" method="POST" id="frm_post" >

    la action non viene considerata e la form viene semplicemente postata
    Se tolgo l'id della form invece succede il contrario, l'immagine viene uploadata ma i valori della form non vengono salvati. Dove sbaglio?

    Questo e' il mio file upload.php

    $target_path = "uploads/";

    $target_path = $target_path . basename( $_FILES['uploadedfile']['name']);

    if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ". basename( $_FILES['uploadedfile']['name']).
    " has been uploaded";
    } else{
    echo "There was an error uploading the file, please try again!";
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    cosa intendi con "semplicemente postata"? stai accedendo correttamente ai dati con: $_POST per i campi di testo e $_FILES per quelli dell'upload?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    32
    Con "semlicemente postata" intendo che in quel caso i dati mi vengono salvati nel DB ma l'immagine non viene uploadata. In paratica sembra ignorare l'action.

    Se puoi aiutarmi ad accedere ai campi $_FILES dell'upload mi faresti un favore in quanto sono in confusione su come ottenerli e dove vengono salvati

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dici che se "togli l'id del form" l'upload avviene... come sono letti gli altri dati? metti un paio di righe (NON TROPPE) in cui si accede alle variabili ($_POST, $_FILES...) per vedere come sono scritte...

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    32
    Grazie allora questa e' la form nel file principale, qui puoi vedere un campo text e il campo logo per l'upload:


    <form enctype="multipart/form-data" action="action="controller/uploader.php"" method="POST" action=" id="frm_post">
    <table width="100%" border="0">
    <tr>
    <td>Company Name :</td>
    <td><input type="text" name="companyName" id="code" width="150" placeholder="Company Name"
    value="<?=stripslashes(str_replace('"', '',$row->companyName))?>" required="required" /></td>
    </tr>
    <tr>
    <td>
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    Choose a file to upload: <input name="uploadedfile" type="file" />

    <input type="submit" value="Upload File" />
    </td>
    </tr>
    </table>
    </form>


    In un include ho tutti i controlli e poi l'sql per salvare i dati
    public static function addNetwork($companyName,$logo) {
    return "insert into tbl_network set companyName='".$companyName."', logo='".$logo."' ";
    }

    Al momento tutti i campi vengono salvati correttamente ma non logo anche perch' non so bene come assegnargli il path dell'immagine ed inoltre come ho detto, l'immagine non viene uplodata

    Grazie per l'aiuto

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ma il primo pezzo di codice sembrava a posto (con move_uploaded_file): quella parte è presente o no nel php?

  7. #7
    codice:
    <form enctype="multipart/form-data" action="action="controller/uploader.php"" method="POST" action=" id="frm_post">

    Non è che forse volevi fare:
    codice:
    <form enctype="multipart/form-data" action="uploader.php" method="POST"  id="frm_post">
    Oppure:
    Codice PHP:
    <form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'?>" method="POST"  id="frm_post">
    Fare o non fare....non c'è provare!

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    32
    Eh he, hai ragione, scusa ma ho postato di fretta e ho incasinato tutto.

    La mia riga e' questa:
    <form enctype="multipart/form-data" action="controller/uploader.php" method="POST" id="frm_post">

    E' possibile che lo script php si avvii per primo per cui in pratica la form non viene postata e tutte le funzioni di salvataggio correlate non vengono chiamate?

    Al momento lo script mi mostra una pagina bianca col messaggio di upload o di errore.
    Ho provato a reindirizzarlo alla pagina di origine ma anche cosi non inserisce record nel DB (ma uploada sempre l'immagine.
    Come faccio a dire allo script di upload di non terminare gli altri processi ma di andare avanti a fare il POST una volta fatto l'upload del'immagine?

    Grazie

  9. #9
    Se non mostri il codice utile è anche difficile darci un occhio. Hai postato un form e ok, ma il resto sono 2 righe in cui fai vedere che cerchi uploadare un file, nulla di più. Hai del codice da mostrare o è tutto quello che hai?
    Fare o non fare....non c'è provare!

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    32
    ok, allora riposto i vari file:
    Ho una form con alcuni campi input e il campo logo per l'upload, ho il file upoloader.php che ho postato che contiene il codice per l'upload e per il resto ho il file con le funzioni php/sql che prendono i dati e li salvano nel DB.

    La form e il salvataggio dei dati funzionano e si basano su una struttura preesistente mentre il campo logo e' nuovo.

    Qui sotto riposto i vari file
    Grazie per l'aiuto

    Mia pagina php con la form (managenetwork.php)
    <form enctype="multipart/form-data" action="action="controller/uploader.php"" method="POST" action=" id="frm_post">
    <table width="100%" border="0">
    <tr>
    <td>Company Name :</td>
    <td><input type="text" name="companyName" id="code" width="150" placeholder="Company Name"
    value="<?=stripslashes(str_replace('"', '',$row->companyName))?>" required="required" /></td>
    </tr>
    <tr>
    <td>
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    Choose a file to upload: <input name="uploadedfile" type="file" />

    <input type="submit" value="Upload File" />
    </td>
    </tr>
    </table>
    </form>

    Files esterni con routine di salvataggio dati (service.php)

    public function addNetwork($companyName, $contactName, $website, $email, $phone, $logo, $note) {
    $query = sql::addNetwork($companyName, $contactName, $website, $email, $phone, $logo, $note);
    mysql_query($query);
    }

    File 2 (sql.php)

    public static function addNetwork($companyName,$contactName,$website,$ema il,$phone,$logo,$note) {
    return "insert into tbl_network set companyName='".$companyName."', contactName='".$contactName."',
    website='".$website."', email='".$email."', phone='".$phone."', logo='".$logo."', note='".$note."' ";
    }

    File uploader.php
    $target_path = "uploads/";

    $target_path = $target_path . basename( $_FILES['uploadedfile']['name']);

    if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ". basename( $_FILES['uploadedfile']['name']).
    " has been uploaded";
    } else{
    echo "There was an error uploading the file, please try again!";
    }

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.