PDA

View Full Version : [PHP] upload foto fallito


kelmer0
24-02-2010, 16:42
ciao a tutti..avrei un problema con il mio codice php, e in pratica sul fatto che non riesco a caricare le immagini sul DB e quindi a visualizzarle poi in una tabella sotto il form di inserimento..vi prego aiutatemi che nn riesco ad uscirne..
<?php

//richiamo il file di configurazione
include './pagina_delle_gestioni.php';
//richiamo il link per applicare il css alla pagina in corso
$CSS = '<link rel="stylesheet" type="text/css" href="./CSS/foglio.css">';

get_header('Aggiungi Componente','',$CSS,''); //contenuta in libs.php, stampa il nome nell'header di ogni pagina in automatico
get_menu(); //contenuta in libs.php, stampa il menù, sulla base dei permessi, diverso ad ogni utenza
auth_block(); //contenuta in libs, serve a caricare il blocco di autenticazione utile per loggare l'utente


if($_POST) {

inserisci_record();
}
function inserisci_record()
{
$nome= trim($_POST['nome']); // recupero il campo di tipo stringa
$tipo= trim($_POST['tipo']); // recupero il campo di tipo stringa
$foto= trim($_POST['foto']); // recupero il campo di tipo stringa
$quantità= trim($_POST['quantità']); // recupero il campo di tipo stringa
$prezzo_unitario= trim($_POST['prezzo_unitario']); // recupero il campo di tipo stringa

$db_connection = mysql_connect(DB_HOST, DB_USR, DB_PWD);
mysql_select_db(DB_NAME, $db_connection);
//preparo la query
$db_query = "INSERT INTO componente (nome, tipo, quantità, prezzo_unitario, foto) VALUES ('$nome','$tipo','$quantità','$prezzo_unitario','$foto')";
//invio la query e controllo l'esito
mysql_query($db_query) or die ("Query non valida: ". mysql_error());
//chiudo la query
mysql_close();
$messaggio = urlencode("Inserimento effettuato con successo ");
header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
}





if(isset($_GET['op']) == "cancella"){
cancella_record();
}

function cancella_record ()
{
$db_connection = mysql_connect(DB_HOST, DB_USR, DB_PWD);
mysql_select_db(DB_NAME, $db_connection);
$db_query = "DELETE FROM componente WHERE cod_componente =".$_GET['cod_componente'];
mysql_query($db_query) or die ("Query1 non valida: ". mysql_error());
mysql_close();

}
echo '<div class="corpo_pezzi">';
echo " <form name=\"inserimento_pezzo\" method=\"post\" action=\"aggiungi_pezzo.php\">
<table border =\"1\">
<tr>
<td class=\"td_form\">NOME: <input type=\"text\" name=\"nome\"/></td>
<td class=\"td_form\">TIPO: <select name=\"tipo\">
<option value=\"seleziona\">seleziona</option>
<option value=\"lente\">lente</option>
<option value=\"nasello\">nasello</option>
<option value=\"montatura\">montatura</option>
<option value=\"stanghetta\">stanghetta</option>
</select></td>
</tr>
<tr>
<td colspan=\"2\" class=\"td_form\">INSERIRE FOTO: <input id=\"foto\" type=\"file\" name=\"foto\"/></td>
</tr>
<tr>
<td class=\"td_form\">QUANTITA': <input type=\"text\" name=\"quantità\" /></td>
<td class=\"td_form\">PREZZO UNITARIO: <input type=\"text\" name=\"prezzo_unitario\" /></td>

</tr>
<tr>
<td class=\"td_form\"><input type=\"submit\" name=\"inserisci\" value =\"inserisci\"/></td>
<td class=\"td_form\"><input type=\"reset\" name=\"annulla\" value =\"annulla\"/></td>
</tr>

</table>
</form>";
echo'<br>';
echo'<br>';

echo '<table class="tabella_componenti">';
echo'<caption>TABELLA COMPONENTI</caption>';

$db_connection = mysql_connect(DB_HOST, DB_USR, DB_PWD);
mysql_select_db(DB_NAME, $db_connection);
$db_query = "SELECT `cod_componente`,`nome`,`tipo`,`quantità`,`prezzo_unitario`,`foto` FROM `componente` ORDER BY `cod_componente` ASC";
$recordcomponenti = mysql_query($db_query)
or die ("Query2 non valida: ". mysql_error());


$row1 = "<tr class=\"trtabella_componenti\">
<th class=\"thtabella_componenti\">Codice</th>
<th class=\"thtabella_componenti\">Nome</th>
<th class=\"thtabella_componenti\">Tipo</th>
<th class=\"thtabella_componenti\">Quantità</th>
<th class=\"thtabella_componenti\">Prezzo unitario</th>
<th class=\"thtabella_componenti\">Foto</th>
</th></tr>";
echo $row1;
while($pezzo = mysql_fetch_array($recordcomponenti, MYSQL_ASSOC)) {
$row2 = "<tr class=\"trtabella_componenti\">\n";
$row2 .= "\t<td class=\"tdtabella_componenti\">".$pezzo['cod_componente']."</td>\n";
$row2 .= "\t<td class=\"tdtabella_componenti\">".$pezzo['nome']."</td>\n";
$row2 .= "\t<td class=\"tdtabella_componenti\">".$pezzo['tipo']."</td>\n";
$row2 .= "\t<td class=\"tdtabella_componenti\">".$pezzo['quantità']."</td>\n";
$row2 .= "\t<td class=\"tdtabella_componenti\">".$pezzo['prezzo_unitario']."</td>\n";
$row2 .= "\t<td class=\"tdtabella_componenti\"><img src=".$pezzo['foto']." align='center'></td>\n";
$row2 .= "\t<td class=\"tdtabella_componenti\">\n";
$row2 .= "<a href='".$_SERVER['PHP_SELF']."?op=cancella&cod_componente=".$pezzo['cod_componente']."' onclick='return confirm(\"Sei sicuro? Tutti i dati andranno persi\")'>Cancella</a></td>\n";
echo $row2;
}
mysql_free_result($recordcomponenti);
mysql_close();

echo '</table>';
echo '</div>';


?>

Sgurbat
24-02-2010, 18:51
1) il tag form deve avere l'attributo enctype="multipart/form-data"
2) il file lo devi leggere con l'array superglobale $_FILES e non $_POST
3) assicurati di aver definito come BLOB il campo della tabella a DB in cui vuoi memorizzare la foto.

N.B.
Ti consiglio vivamente di memorizzare foto ed allegati nel filesystem del server piuttosto che direttamente a DB, ne è più facile la gestione.

Ciao.