Premetto che ho recentemente aperto un post uguale a questo però ho un problema e quindi provo a postare tutto:
- Ho costruito un database costituito da
id INT
nome VARCHAR
tipo VARCHAR
dati BLOB
-ho costruito una index (con vari controllo sull'inserimento di img):
	
	
	
		
- ho costruito un file elenco.php che contiene l'elenco di tutti i file estratti dal db:
	
	
	
		
- Ho costruito (o meglio fatto copia/incolla grazie ad un codice di Ale97) un file image.php
	
	
	
		
e infine ho un file mostra.php che dovrebbe mostrare l'img cliccata su elenco.php
	
	
	
		
Lo scopo principale è quello di poter mischiare l'img con tag <html ... senza inciappare in problmei con gli header; effettivamente tutto sembra funzionare ma al momento di andare a visualizzare l'img questa non viene trovata (compare la classica x rossa). potete darmi nuovamente una mano?
				
			- Ho costruito un database costituito da
id INT
nome VARCHAR
tipo VARCHAR
dati BLOB
-ho costruito una index (con vari controllo sull'inserimento di img):
		PHP:
	
	<html>
<head>
</head>
<body>
<?php 
// se è stato inviato il file...
if(isset($_POST['invia']))
{
	// se ci sono stati problemi nell'upload del file
	if(!isset($_FILES['image']) OR $_FILES['image']['error'] != UPLOAD_ERR_OK)
	mostra_form("errore nell'invio del file. Riprova");
 
	// connessione e selezione del database
// connessione e selezione del database
include_once('connettti.php');
 
	// recupero alcune informazioni sul file inviato
	$nome_file_temporaneo = $_FILES['image']['tmp_name'];
	$nome_file_vero = $_FILES['image']['name'];
	$tipo_file = $_FILES['image']['type'];
 
	// leggo il contenuto del file
	$dati_file = file_get_contents($nome_file_temporaneo);
 
	// preparo il contenuto del file per la query
	$dati_file = addslashes($dati_file);
	
	$msg='';
	
	if ($_FILES['image']['size'] > 61440) {
      $msg .="<br /> - Il file non deve superare i 60 KB!<br />";
	  
    }
	
	// Ottengo le informazioni sull'immagine
    list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);
    // Controllo che le dimensioni (in pixel) non superino 160x180
    if (($width > 160) || ($height > 180)) {
      $msg .= "<br /> - Il file può avere un massimo di 150 px di larghezza per 70 px di altezza (consigliata 70px x 150px)!<br /> Se le dimensioni non
	  rientrano utilizzare un programma per il ritocco fotografico<br />";      
    }
	
	
	//recupero i nomi dei file
	
	if(!@mysql_select_db('img')){echo "<br />Impossibile selezionare il database delle Immagini in questo momento, se il problmema persiste contattare
	l'amministratore del sistema<br />". mysql_error();}
	$sql=mysql_query("SELECT nome FROM tabella_files");
	
	//preparo l'array che andrà compilato
	$array=array();
	while($row=mysql_fetch_array($sql)){
		$array[]=$row['nome'];
	}
	
	$err=0;
	foreach ($array as $array_confr){
		
		if($_FILES['image']['name']==$array_confr){
		$err += 1;
		}
	
	}
	
	if($err>0){$msg .= "<br /> - File già esistente sul server. Rinominarlo e riprovare<br />";}
	
	
	
    
	
	if($msg==''){
		 
				// query per inserire il file nel DB
				$query = "INSERT INTO tabella_files SET
							nome = '$nome_file_vero', 
							tipo = '$tipo_file', 
							dati = '$dati_file'"; 
			 
				mysql_query($query)
				OR die('Query non valida: ' . mysql_error());
				 
				// mostro nuovamente il form ed un messaggio di successo
				mostra_form("Memorizzazione del file <b>$nome_file_vero</b> nel database eseguita correttamente.");
	}else{echo "<font color='red'>".$msg. "</font><br /><br />torna <a href='index.php'> indietro </a>";}
}
else
{
	mostra_form();
}
 
/**
* Mostra il form per l'upload del file 
* 
*/ 
function mostra_form($messaggio = '')
{
	?> 
 
	<head> 
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
	<title>Carica file nel database</title> 
	</head> 
 
	<p><?php echo $messaggio?> <br /> Seleziona un file da memorizzare nel database: <p></p> 
	<form name="form1" enctype="multipart/form-data" method="post" action=""> 
	<p> 
	<input type="file" name="image"> 
	<p></p> 
	<p> 
	<input type="submit" name="invia" value="Invia file"> 
	<p></p> 
	</form> 
 
 
	<?php 
	exit();
}
?>
</body>
</html>
	- ho costruito un file elenco.php che contiene l'elenco di tutti i file estratti dal db:
		PHP:
	
	<html>
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>Carica file nel database</title> 
</head> 
 
<p><b>Clicca su uno dei seguenti file</b><p><p></p> 
<?php 
// connessione e selezione del database
include_once('connettti.php');
 
// query per ottenere l'elenco dei files nel DB
$query = "SELECT * FROM tabella_files";
 
$risultato = mysql_query($query)
or die('Query non valida: ' . mysql_error());
 
// se ci sono files nel DB
if(mysql_numrows($risultato))
{
	// estrazione dei risultati e stampa dei links ai files
	while ($tmp = mysql_fetch_array($risultato))
	{
		echo "<p><a href=\"mostra.php?id=$tmp[id]\">$tmp[nome]</a></p>\n";
	}
}
else
{
	echo '<p>Nessun file presente nel database</p>';
}
?>
</html>
	- Ho costruito (o meglio fatto copia/incolla grazie ad un codice di Ale97) un file image.php
		PHP:
	
	<?php 
// connessione e selezione del database
include_once('connettti.php');
// query per recuperare il file 
$id = isset($_GET['id']) ? mysql_real_escape_string($_GET['id']) : 0; 
$query = "SELECT * FROM tabella_files WHERE id = {$_GET['id']}"; 
$risultato = mysql_query($query) or die('Query non valida: ' . mysql_error()); 
$tmp = mysql_fetch_array($risultato); 
// se il file non esiste mostra un errore 404 
if(!mysql_num_rows($query)) 
{ 
    header('HTTP/1.1 404 Not Found'); 
    exit(); 
} 
// invio una intestazione contenente il tipo MIME 
header('Content-type: '. $tmp['tipo']); 
// invio il contenuto del file 
echo $tmp['dati']; 
?>
	e infine ho un file mostra.php che dovrebbe mostrare l'img cliccata su elenco.php
		PHP:
	
	<html>
<head>
</head>
<body>
ciao
<?php 
include_once('connetti.php');
 
// visualizza l'immagine normalmente 
echo "<img src=\"image.php?id={$_GET['id']}\" />"; 
?> 
</body>
</html>
	Lo scopo principale è quello di poter mischiare l'img con tag <html ... senza inciappare in problmei con gli header; effettivamente tutto sembra funzionare ma al momento di andare a visualizzare l'img questa non viene trovata (compare la classica x rossa). potete darmi nuovamente una mano?
			
				Ultima modifica: