Ciao a tutti.
Come ho gia detto in un altro topic (qui) salvo nel db un'immagine in un campo blob. Salvo l'immagine e non il link di dove andarla a pescare nel db.
Ora le immagini le vedo, quindi quel problema è risolto. Ma le immagini che vedo sono quelle che ho caricato con phpmyadmin dritto in tabella.
Ora invece mi son fatto un form per l'upload, quindi devo gestirmi l'upload dell'immagine (più altri campi descrittivi) e quando visualizzo l'elenco, chiaramente voglio vedere l'immagine.
Il mio problema sta nel fatto che le immagini che carico con il form che ho fatto non le vedo.
Non penso che il problema sia nella visualizzazione delle immagini, quando stia quando salvo l'immagine nel db.
Vi posto il codice:
pagina che visualizza tutte le immagini e gli altri campi:
Codice PHP:
$query="SELECT id, ext, descrizione, rif FROM centrale_file WHERE flag=0 ORDER BY ext ASC";
if (!$result= mysql_db_query($db_name, $query, $db_link))
print("non funziona la $query".mysql_error());
while (list($id_ext, $ext, $descrizione, $rif) = mysql_fetch_array($result))
{
echo("<tr id=\"$id_ext\" class=\"elenco\">");
echo("<td align=\"left\">".$ext."</td>");
echo("<td align=\"left\">".$descrizione."</td>");
echo("<td align=\"center\"><img src=\"planner/img.php?id=$rif\" $img_mod></td>");
echo("</tr>");
}
pagina form di upload:
Codice PHP:
echo("<tr>");
echo("<td>[b]Estensione*[/b]</td>");
echo("<td><input class=obbligatorio type=text name=ext id=ext value=\"$ext\"></td>");
echo("</tr>");
echo("<tr>");
echo("<td>[b]Tipo[/b]</td>");
echo("<td><input class=text type=text name=\"descrizione\" value=\"$descrizione\"></td>");
echo("</tr>");
echo("<tr>");
echo("<td>[b]Immagine[/b]</td>");
echo("<td><input class=\"text_box\" type=\"file\" name=\"immagine\" size=\"40\"></td>");
echo("</tr>");
pagina che salva nel db (ed è qui che per me sta il problema
Codice PHP:
$filesize = 0;
$error = 0;
$maxfilesize = upload_max_filesize();
if(is_uploaded_file($_FILES['immagine']['tmp_name']))
{
$filetype = $_FILES["immagine"]["type"];
$filename = $_FILES["immagine"]["name"];
$tmpname = $_FILES["immagine"]["tmp_name"];
$filesize = $_FILES["immagine"]["size"];
$error = $_FILES["immagine"]["error"];
}
if($filesize <= $maxfilesize AND $error == 0)
{
if(is_uploaded_file($_FILES['immagine']['tmp_name']))
{
$buffer = '';
$fp = fopen($tmpname,"r");
if($fp != false)
{
$buffer = fread($fp, $filesize);
fclose($fp);
}
//ecco la riga che per me crea il problema
$filecontent= "CAST(0x".bin2hex($buffer)." AS BINARY)";
}
}
$insert = "INSERT INTO centrale_file_tipo (mime, img_name, img) VALUES ('".$filetype."', '".$filename."', '".$filecontent."')";
if(!$result = mysql_db_query($db_name, $insert, $db_link))
print ("non funziona la $insert".mysql_error());
$insert = "INSERT INTO centrale_file (ext, descrizione, rif) VALUES ('$ext', '$descrizione', '".mysql_insert_id()."')";
if(!$result = mysql_db_query($db_name, $insert, $db_link))
print ("non funziona la $insert".mysql_error());
pagina che va a prendere l'immagine per poi visualizzarla:
Codice PHP:
include "../include/connection.php";
$id= $_GET['id'];
$query="SELECT mime, img FROM centrale_file_tipo WHERE id = $id";
if (!$result= mysql_db_query($db_name, $query, $db_link))
print("non funziona la $query".mysql_error());
$row = mysql_fetch_assoc($result);
$img = $row['img'];
if ($img=="")
{
$query="SELECT img FROM centrale_file_tipo WHERE id = 2";
if (!$result= mysql_db_query($db_name, $query, $db_link))
print("non funziona la $query".mysql_error());
$row = mysql_fetch_assoc($result);
$img = $row['img'];
}
header('Content-Type: '.$row['mime'].'');
echo $img;
Inoltre, se carico un'immagine di 10kbyte usando questo form, se vado in phpmyadmin la vedo di almeno 20kbyte