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

    Upload immagini in una cartella e mysql

    Ciao

    Ho questo semplice script con il quale inserisco i dati
    in una tabella di un database mysql opportunamente creata con i campi di cui nello script sotto:


    codice:
    <?php
    
    include("dati.php");
    $link=mysql_connect("$db_host","$db_login","$db_pass")
    or die ("Non riesco a connettermi a [b]$db_host");
    
    @mysql_select_db ($database, $link)
    or die ("Non riesco a selezionare il db $database
    ");
    
    if (isset($_REQUEST['nome'])){
    $dati=" INSERT INTO rubrica VALUES (NULL,
    '".$_REQUEST['nome']."',
    '".$_REQUEST['cognome']."',
    '".$_REQUEST['reparto']."',
    '".$_REQUEST['stipendio']."'
    )";
    
    
    mysql_query ($dati, $link)
    or die ("Non riesco ad eseguire la query $dati");
    Echo "I Dati sono stati archiviati con successo nel DataBase $database";
    mysql_close ($link);
    echo "<meta http-equiv=refresh content=3;url=$PATH_INFO>";
    }
    ?>
    <html>
    <head>
    <title>Form dati</title>
    </head>
    <body>
    <TABLE border=0 width=100% cellpadding=3>
    <tr>
    <td width=100% colspan=2>
    <p align=center>Inserisci i dati del nuovo utente
    <form method=POST action=<? $PATH_INFO ?>>
    </td>
    </tr>
    <tr>
    <td width=18%>Nome</td>
    <td width=82%><input type=text name=nome size=20></td>
    </tr>
    <tr>
    <td width=18%>Cognome</td>
    <td width=82%><input type=text name=cognome size=20></td>
    </tr>
    <tr>
    <td width=18%>Reparto</td>
    <td width=82%><input type=text name=reparto size=20></td>
    </tr>
    <tr>
    <td width=18%>Stipendio</td>
    <td width=82%><input type=text name=stipendio size=20></td>
    </tr>
    
    <tr>
    <td width=18%><input type=submit value=Inserisci nuovi dati></td>
    <td width=82%></form></td>
    </tr>
    </table>
    </body>
    </html>
    Adesso vorrei implementare il codice inserendo la possibilità di
    caricare anche un'immagine relativa ad ogni nome (e quindi ID) e dovrei aggiungere un modulo dal quale
    scegliere e caricare l'immagine.
    Penso di dover anche inserire un nuovo campo, per il nome dell'immagine, nella tabella.
    Tutte le immagini dovrebbero essere inserite in una cartella sul server
    Potete aiutarmi a capire come si fa?

    qual'è il codice con il form e il bottone sfoglia per caricare l'immagine?
    E quale quello poi per richiamarla per singolo utente (iD)?
    Grazie anticipatamente.

  2. #2
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592

    Re: Upload immagini in una cartella e mysql

    dovresti implementare questo codice, all'ncirca...

    codice:
    <?php
    
    include("dati.php");
    $link=mysql_connect("$db_host","$db_login","$db_pass")
    or die ("Non riesco a connettermi a [b]$db_host");
    
    @mysql_select_db ($database, $link)
    or die ("Non riesco a selezionare il db $database
    ");
    
    if (isset($_REQUEST['nome'])){
    
    // upload dell'immagine di sfondo
    $abpath = "percorso assoluto senza slash alla fine"; 
    if(!is_dir($abpath))
    	{
    		mkdir($abpath, 0755);
    		$dir_ID=$abpath."
    ";
    	}
    $sizelim = "yes"; // qui puoi dare un limite alla grandezza dell'immagine..
    $size = "66560";
    $tipo1 = "image/pjpeg"; //Jpeg tipo 1
    $tipo2 = "image/jpeg"; //Jpeg tipo 2 puoi aggiungerne altri ma sotto devi mettere gli if relativi
    	if ($_FILES['image']['name'] != "") 
    	{
    		$uploadfile = $abpath."/".$_FILES['image']['name'];
    		move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile);
    	}
    if ($_FILES['image']['name'] == "") {
    	
    	$logfoto1= "<td colspan=\"3\" class=\"style5\"></td>";
    	
    	}
    	
    	if ($_FILES['image']['name'] != "") 
    	{
    	if ($sizelim == "yes") 
    		{
    			if ($_FILES['image']['size'] > $size) 
    			{
    			$logfoto1= "<td colspan=\"3\"  class=\"warnings\">The file size is too big</td>";
    			}else{
    	if (($_FILES['image']['type'] == $tipo1)or ($_FILES['image']['type'] == $tipo2)) 
    	{
    		$uploadfile = $abpath."/". $_FILES['image']['name'];
    		if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile))
            {
    $logfoto1=  "<td colspan=\"3\" class=\"style5\">file uploaded succesfully</td>";
    } 
    else {$logfoto1=  "<td colspan=\"3\" class=\"style5\">file not uploaded </td>";}
              
    } else {$logfoto1="<td colspan=\"3\" class=\"warnings\">The file doesn't seems to be an image</td>";}
    	}}}
    
    $dati=" INSERT INTO rubrica VALUES (NULL,
    '".$_REQUEST['nome']."',
    '".$_REQUEST['cognome']."',
    '".$_REQUEST['reparto']."',
    '".$_REQUEST['stipendio']."',
    '".$_FILES['image']['name']."'
    )";
    
    
    mysql_query ($dati, $link)
    or die ("Non riesco ad eseguire la query $dati");
    Echo "I Dati sono stati archiviati con successo nel DataBase $database";
    mysql_close ($link);
    echo "<meta http-equiv=refresh content=3;url=$PATH_INFO>";
    }
    ?>
    <?php echo  $logfoto1 ?>
    devi creare un campo di tipo file chiamato image
    prova perchè l'ho corretto a mano...

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    provo, anche se in parte avevo risolto (ho solo un inspiegabile messaggio di errore con
    la mia soluzione..ma funziona)

    Grazie

    ps: era da un pezzo che avevo posto la domanda, non mi aspettavo più risposta

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536

    Re: Re: Upload immagini in una cartella e mysql

    Originariamente inviato da telegio

    devi creare un campo di tipo file chiamato image
    prova perchè l'ho corretto a mano...
    Non va!

    I dati vengono inviati tutti tranne l'immagine.
    Non c'è nessun riferimento nel campo del DB ne
    il file nella cartella images (quella dove dovrebbe essere spostata).
    Questo è il codice completo della pagina.

    Codice PHP:
    <?php

    include("dati.php");
    $link=mysql_connect("$db_host","$db_login","$db_pass")
    or die (
    "Non riesco a connettermi a [b]$db_host");

    @
    mysql_select_db ($database$link)
    or die (
    "Non riesco a selezionare il db $database
    "
    );

    if (isset(
    $_REQUEST['nome'])){

    // upload dell'immagine di sfondo
    $abpath "C:\Programmi\EasyPHP1-7\www\provalez\images";
    if(!
    is_dir($abpath))
        {
            
    mkdir($abpath0755);
            
    $dir_ID=$abpath."
    "
    ;
        }
    $sizelim "yes"// qui puoi dare un limite alla grandezza dell'immagine..
    $size "66560";
    $tipo1 "image/pjpeg"//Jpeg tipo 1
    $tipo2 "image/jpeg"//Jpeg tipo 2 puoi aggiungerne altri ma sotto devi mettere gli if relativi
        
    if ($_FILES['image']['name'] != "")
        {
            
    $uploadfile $abpath."/".$_FILES['image']['name'];
            
    move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile);
        }
    if (
    $_FILES['image']['name'] == "") {
        
        
    $logfoto1"<td colspan=\"3\" class=\"style5\"> </td>";
        
        }
        
        if (
    $_FILES['image']['name'] != "")
        {
        if (
    $sizelim == "yes")
            {
                if (
    $_FILES['image']['size'] > $size)
                {
                
    $logfoto1"<td colspan=\"3\"  class=\"warnings\">The file size is too big</td>";
                }else{
        if ((
    $_FILES['image']['type'] == $tipo1)or ($_FILES['image']['type'] == $tipo2))
        {
            
    $uploadfile $abpath."/"$_FILES['image']['name'];
            if (
    move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile))
            {
    $logfoto1=  "<td colspan=\"3\" class=\"style5\">file uploaded succesfully</td>";
    }
    else {
    $logfoto1=  "<td colspan=\"3\" class=\"style5\">file not uploaded </td>";}

    } else {
    $logfoto1="<td colspan=\"3\" class=\"warnings\">The file doesn't seems to be an image</td>";}
        }}}

    $dati=" INSERT INTO rubrica VALUES (NULL,
    '"
    .$_REQUEST['nome']."',
    '"
    .$_REQUEST['cognome']."',
    '"
    .$_REQUEST['reparto']."',
    '"
    .$_REQUEST['stipendio']."',
    '"
    .$_FILES['image']['name']."'
    )"
    ;


    mysql_query ($dati$link)
    or die (
    "Non riesco ad eseguire la query $dati");
    Echo 
    "I Dati sono stati archiviati con successo nel DataBase $database";
    mysql_close ($link);
    echo 
    "<meta http-equiv=refresh content=3;url=$PATH_INFO>";
    }
    ?>
    <?php 
    echo  $logfoto1 ?>

    <html>
    <head>
    <title>Form dati</title>
    </head>
    <body>
    <TABLE border=0 width=100% cellpadding=3>
    <tr>
    <td width=100% colspan=2>
    <p align=center>[b]Inserisci i dati del nuovo utente
    <form method=POST action=<? $PATH_INFO ?>>
    [/b]</td>
    </tr>
    <tr>
    <td width=18%>[b]Nome[/b]</td>
    <td width=82%><input type=text name=nome size=20></td>
    </tr>
    <tr>
    <td width=18%>[b]Cognome[/b]</td>
    <td width=82%><input type=text name=cognome size=20></td>
    </tr>
    <tr>
    <td width=18%>[b]Reparto[/b]</td>
    <td width=82%><input type=text name=reparto size=20></td>
    </tr>
    <tr>
    <td width=18%>[b]Stipendio[/b]</td>
    <td width=82%><input type=text name=stipendio size=20></td>
    </tr>
    <tr>
    <td width=18%>[b]Foto[/b]</td>
    <td width=82%><input type=file name=image size=20></td>
    </tr>
    <tr>
    <td width=18%>[b]<input type=submit value=Inserisci nuovi dati>[/b]</td>
    <td width=82%></form></td>
    </tr>
    </table>
    </body>
    </html>
    Fammi sapere, ok? Grazie.

    Ps: io ho un altro codice che funziona ma ricevo alla fine dei messaggi warning che
    non ho capito a cosa si riferiscono e come risolvere la cosa..magari se ti, ti va sottopongo
    quello.

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    hai ragione...
    credo l'errrore sia che nel tag della form devi mettere
    enctype="multipart/form-data"

    ..non funzionava nemmeno a me senza...

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    Originariamente inviato da telegio
    hai ragione...
    credo l'errrore sia che nel tag della form devi mettere
    enctype="multipart/form-data"

    ..non funzionava nemmeno a me senza...
    ok riprovo e ti faccio sapere.
    Dovrei aggiungere anche una funzioni che ridimensioni l'immagine
    nella pagina php.
    Sono indeciso se uploadare l'immagine nelle dimensioni originali
    e creare le thumb da salvare in una cartella a parte e richiamare queste
    nella pagina php oppure
    visualizzare nella pagina php l'immagine ridimensionata ma
    senza ridimensionarla "realmente" cioè senza creare la miniatura da salvare.
    In ogni caso mi serve aiuto.
    Tu cosa mi consigli?
    Grazie ancora

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    se devi complicare parecchio le cose ti consiglio questo... è gallery...
    http://gallery.menalto.com/

    ma DEVI avere le GD library installate sul server.. niente di che però non tutti i provider ne sono muniti... c'è il ridimensionamento, il commento alle immagini, gli utenti...
    le ultime versiioni sono appoggiate su MySql quindi si sono sbizzarriti..

    tra l'altro devi saperne anche meno di php di quanto non ne sai ora che smanetti..
    dacci una occhiata... è molto potente...

    fammi sapere se decidi per altro..

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    ok grazie

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    allora,
    la soluzione del link che hai postato è interessante ma mi sembra eccessiva
    per quel che devo fare.
    In ogni caso volevo sottoporti anche un'altra soluzione:

    Codice PHP:
    <?php
    include("dati.php");
    $link=mysql_connect("$db_host","$db_login","$db_pass")
    or die (
    "Non riesco a connettermi a [b]$db_host");

    @
    mysql_select_db ($database$link)
    or die (
    "Non riesco a selezionare il db $database
    "
    );

    if (isset(
    $_REQUEST['nome'])){
    $dati=" INSERT INTO rubrica VALUES (NULL,
    '"
    .$_REQUEST['nome']."',
    '"
    .$_REQUEST['cognome']."',
    '"
    .$_REQUEST['reparto']."',
    '"
    .$_REQUEST['stipendio']."',
    '"
    .$_FILES['foto']['name']."'
    )"
    ;


    mysql_query ($dati$link)
    or die (
    "Non riesco ad eseguire la query $dati");
    Echo 
    "I Dati sono stati archiviati con successo nel DataBase $database";
    mysql_close ($link);
    echo 
    "<meta http-equiv=refresh content=3;url=$PATH_INFO>";
    }
    ?>

     <?php
    $uploaddir 
    'images/';
    $uploadfile $uploaddir basename($_FILES['foto']['name']);

    echo 
    "<pre>";
    if (
    move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile)) {
       echo 
    "File is valid, and was successfully uploaded.\n";
    } else {
       echo 
    "Possibile attacco tramite file upload!\n";
    }

    echo 
    'Alcune informazioni di debug:';
    print_r($_FILES);
    print 
    "</pre>";

    $fileName $_FILES['foto']['name'];

    // Ottengo le informazioni sull'immagine originale
    list($width$height$type$attr) = getimagesize("images/$fileName");

    // Creo la versione 120*90 dell'immagine (thumbnail)
    $thumb imagecreatetruecolor(160150);
    $source imagecreatefromjpeg("images/$fileName");
    imagecopyresized($thumb$source0000160150$width$height);

    // Salvo l'immagine ridimensionata
    imagejpeg($thumb"thum/$fileName"100);
    ?>
    <html>
    <head>
    <title>Form dati</title>
    </head>
    <body>
    <TABLE border=0 width=100% cellpadding=3>
    <tr>
    <td width=100% colspan=2>
    <p align=center>[b]Inserisci i dati del nuovo utente
    <form method="POST" enctype="multipart/form-data" action=<? $PATH_INFO ?>>
    [/b]</td>
    </tr>
    <tr>
    <td width=18%>[b]Nome[/b]</td>
    <td width=82%><input type=text name=nome size=20></td>
    </tr>
    <tr>
    <td width=18%>[b]Cognome[/b]</td>
    <td width=82%><input type=text name=cognome size=20></td>
    </tr>
    <tr>
    <td width=18%>[b]Reparto[/b]</td>
    <td width=82%><input type=text name=reparto size=20></td>
    </tr>
    <tr>
    <td width=18%>[b]Stipendio[/b]</td>
    <td width=82%><input type=text name=stipendio size=20></td>
    </tr>
    <tr>
    <td width=18%>[b]Foto[/b]</td>
    <td width=82%><input type=file name=foto size=20></td>
    </tr>
    <tr>
    <td width=18%>[b]<input type=submit value=Inserisci nuovi dati>[/b]</td>
    <td width=82%></form></td>
    </tr>
    </table>
    </body>
    </html>

    Questa un po' è opera mia un po' me l'hanno suggerita.
    In effetti funziona ma il browser mi restituisce dei messaggi di errori dei quali
    non ho capito la causa.
    Eccoli:

    Possibile attacco tramite file upload!
    Alcune informazioni di debug:Array
    (
    )


    Warning: getimagesize(images/): failed to open stream: Permission denied in c:\programmi\easyphp1-7\www\provalez\inserisci_dati.php on line 45

    Warning: imagecreatefromjpeg(images/): failed to open stream: Permission denied in c:\programmi\easyphp1-7\www\provalez\inserisci_dati.php on line 49

    Warning: imagecopyresized(): supplied argument is not a valid Image resource in c:\programmi\easyphp1-7\www\provalez\inserisci_dati.php on line 50

    Warning: imagejpeg(): Unable to open 'thum/' for writing in c:\programmi\easyphp1-7\www\provalez\inserisci_dati.php on line 53


    Potresti aiutarmi a risolvere il problema?
    Grazie

  10. #10
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    immmmh... non so se posso esserti di aiuto...
    quello che so è che sembra tu stia facendo tutto ciò in locale...
    l'unica cosa che posso consigliarti è basarti sul server web che ospiterà il dominio in quanto le condizioni reali le trovi solo là...
    vado a nanna che è tardi...
    magari qualcun altro più bravo di me potrà aiutarti meglio..

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.