Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313

    problema upload immagini da form php a db mysql

    Buongiorno a tutti,

    premetto che sono un avventuriero e un novellino del php ma sto provando a fare un mio progetto personale per sostenere un esame in grazie del signore
    Ho un problema di questo tipo:
    ho creato un form per l'inserimento di 4 dati VARCHAR e un dato LONGBLOB (ecco il form):


    codice:
    <html>
    <head>
    <title>Registrazione polizza</title>
    </head>
    <body>
    <h2>Aggiungi nuova polizza</h2>
    
    <form action="prova01.php" enctype="multipart/form-data" method="post">
    
    Identificativo Polizza:
    <input type="text" name="idpolizza">
    
    
    
    Numero polizza:
    <input type="text" name="numeropolizza">
    
    
    
    <input name="MAX_FILE_SIZE" type="hidden" value="10240000" />
    File da caricare:
    <input id="file" name="file" type="file" />
    
    
    
    Compagnia:
    <input type="text" name="compagnia">
    
    
    
    Note:
    <input type="text" name="note">
    
    
    
    <input name="submit" type="submit" value="Carica" />
    
    
    </form>
    
    </body>
    </html>
    il quale è collegato alla pagina prova01.php:

    Codice PHP:
    <?php
    //Connessione al Database
    $connmysql_connect("localhost""root""") or die ("impossibile connettersi");
    //selezione del DB
    mysql_select_db("archiviottico"$conn) or die ("impossibile selezionare il db");

    $nome$_FILES["file"]["name"];

    $percorso"http://localhost/polizza/";

    if(
    $_FILES["file"]["size"]<10240000){

    if(
    $_FILES["file"]["size"]>0){

    echo 
    "Codice Errore: " $_FILES["file"]["error"]."";

    }else{

    if(
    file_exists("$percorso$nome)){

    echo 
    "il file" $nome "è già presente sul server";

    }else{

    $idpolizza$_POST['idpolizza'];
    $polizzamove_uploaded_file($_FILE["file"]["tmp_name"], "$percorso$nome);
    $polizza01addslashes($polizza);
    $numeropolizza$_POST['numeropolizza'];
    $compagnia$_POST['compagnia'];
    $note$_POST['note'];

    $query"INSERT INTO polizza SET
    idpolizza= '
    $idpolizza';
    polizza= '
    $polizza01';
    numeropolizza= '
    $numeropolizza';
    compagnia= '
    $compagnia';
    note= '
    $note'";
    mysql_query($query) or die ("Query non valida: " mysql_error());
    echo 
    "File caricato in: " "$percorso$nome;

    }
    }

    }else{

    echo 
    "File troppo grande!!!";

    }
    ?>
    Se mando in esecuzione questo codice una volta cliccato su "salva" mi carica una pagina con scritto "Codice Errore: 0" e nient'altro e ovviamente non carica nemmeno un dato nel db di mysql.

    (le immagini da caricare sono in formato .pdf)

    Cosa posso fare? ho commesso grandi errori nel codice php?

    Grazie a tutti in anticipo e Buon lavoro

  2. #2
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Codice PHP:
    if($_FILES["file"]["size"]>0){ 
    echo 
    "Codice Errore: " $_FILES["file"]["error"].""

    Credo tu abbia usato l'operatore sbagliato (maggiore al posto di minore o uguale); la condizione if viene soddisfatta se la dimensione è maggiore di zero, il che non è un errore (e difatti la variabile $_FILES["file"]["error"] contiene zero, ossia nessun errore.
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  3. #3
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    ciao sky,

    ho fatto il cambiamento che mi hai detto e ora mi da questi messeggi di errore:

    codice:
    Warning: move_uploaded_file(http://localhost/polizza/nome.pdf) [function.move-uploaded-file]:failed to open stream: HTTP wrapper does not support writeable does not support writeable connections in C:\xampp\htdocs\prova01.php on line 27.
    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\phpDD36.tmp' to 'http://localhost/polizza/nome.pdf' in C:\xampp\htdocs\prova01.php on line 27
    Query non valida: You have an error in your SQL syntax; check the maual that corresponds to your MySQL server version for the right to use near 'polizza="; numeropolizza='numpol'; compagnia='compagnia'; at line 3
    cosa posso fare???
    anche perchè la sintassi della query mi sembra esatta... credo ...

  4. #4
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Ciao. La query che è hai scritto è errata. Tu hai usato la sintassi che si usa per UPDATE (anche se ci vorrebbe la virgola e non il punto e virgola in quel caso) ma per INSERT è diversa. Devi fare così:
    Codice PHP:
    $query "INSERT INTO polizza (idpolizza, polizza, numeropolizza, compagnia, note) VALUES ('$idpolizza', '$polizza01', '$numeropolizza',  '$compagnia', '$note')"
    Per l'upload invece forse è un problema dovuto ai permessi di scrittura delle cartelle in cui vuoi spostare i file.


  5. #5
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    CIAO COSTI31,

    codice:
    Per l'upload invece forse è un problema dovuto ai permessi di scrittura delle cartelle in cui vuoi spostare i file.
    COME FACCIO AD ABILITARE I PERMESSI???

    N.B.= CON LA TUA QUERY MI SI CARICANO TUTTI I DATI SUL DB TRANNE IL PDF CHE MI RISULTA PARI A 0 BYTE.

    COME POSSO RISOLVERE QUESTO FASTIDIOSO PROBLEMA?

    GRAZIE ANCORA

  6. #6
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Per quanto riguarda l'upload, tu vuoi caricare il file pdf nel database oppure vuoi caricarlo in una cartella e nel database salvi il nome e il percorso?
    Invece per quanto riguarda i permessi se sei in locale su windows non devi settarli, controlla solo che la cartella non sia impostata su "Nascosta" o "Sola lettura", se invece sei su linux allora devi impostarli.
    Il problema potrebbe essere dovuto anche alla configurazione del php.ini o di apache. Non sono molto pratico su quanto riguarda la gestione di server.
    Prova a usare lo stesso script su un tuo sito online e vedi se hai gli stessi errori.

  7. #7
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    vorrei salvarli solo nel database, ma non so cos'è meglio per il mio lavoro... te cosa ne pensi?

  8. #8
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Io personalmente non li ho mai salvati nel database i file caricati ma sul server, salvo solo il nome. Però è solo un mio gusto personale, non so quale sia il metodo migliore e più sicuro sinceramente, perchè non mi sono mai interessato al primo.

    Comunque se vuoi caricarlo nel database hai sbagliato alcune cose. Non devi spostare il file caricato in una cartella con move_uploaded_file ma devi leggere il suo contenuto e salvarlo nel campo "polizza" del db. Però devi anche creare un altro campo nel database per memorizzare il nome del file, per esempio "nomepolizza". Ecco il codice modificato:
    Codice PHP:
    <?php
    //Connessione al Database
    $connmysql_connect("localhost""root""") or die ("impossibile connettersi");
    //selezione del DB
    mysql_select_db("archiviottico"$conn) or die ("impossibile selezionare il db");

    $nome$_FILES["file"]["name"];

    $percorso"http://localhost/polizza/";

    if(
    $_FILES["file"]["size"]<10240000){

    if(
    $_FILES["file"]["size"]>0){

    echo 
    "Codice Errore: " $_FILES["file"]["error"]."";

    }else{

    if(
    file_exists("$percorso$nome)){

    echo 
    "il file" $nome "è già presente sul server";

    }else{

    $idpolizza$_POST['idpolizza'];
    $polizzafile_get_contents($_FILE['file']['tmp_name']);
    $polizza mysql_real_escape_string($polizza);
    $numeropolizza$_POST['numeropolizza'];
    $compagnia$_POST['compagnia'];
    $note$_POST['note'];

    $query "INSERT INTO polizza (idpolizza, polizza, nomepolizza, numeropolizza, compagnia, note) VALUES ('$idpolizza', '$polizza', '$nome', '$numeropolizza',  '$compagnia', '$note')";

    }
    }

    }else{

    echo 
    "File troppo grande!!!";

    }
    ?>

  9. #9
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    Ho modificato la pagina prova01.php come mi hai consigliato e inserito il campo "nomepolizza" nella tabella "polizza" del db.

    Ora risulta un errore sulla query:
    codice:
    $query = "INSERT INTO polizza (idpolizza, nomepolizza, polizza, numeropolizza, compagnia, note) VALUES ('$idpolizza', , '$nome', '$polizza', '$numeropolizza',  '$compagnia', '$note')";
    Errore:
    codice:
    Query non valida: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'nome.pdf', '%PDF-1.3\n%Ç쏢\n5 0 obj\n<
    ?.?.? a cosa può essere dovuto??? la sintassi del tuo codice mi sembra corretta.

  10. #10
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Io la query lo scritta in un modo e tu invece l'hai riscritta diversamente ma hai fatto un errore. Hai scritto:
    $query = "INSERT INTO polizza (idpolizza, nomepolizza, polizza, numeropolizza, compagnia, note) VALUES ('$idpolizza', , '$nome', '$polizza', '$numeropolizza', '$compagnia', '$note')";

    Così invece è corretta:
    $query = "INSERT INTO polizza (idpolizza, nomepolizza, polizza, numeropolizza, compagnia, note) VALUES ('$idpolizza', '$nome', '$polizza', '$numeropolizza', '$compagnia', '$note')";

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.