recupero e stampa a video di immagini da database

  • Creatore Discussione Creatore Discussione zehena
  • Data di inizio Data di inizio

zehena

Nuovo Utente
29 Mar 2015
7
0
0
ciao a tutti, per favore mi servirebbe un consiglio su un errore a cui non riesco a rimediare;
ho creato una tabella all'interno del db NEGOZIO per immagini un modulo per inserirle, un file php per scriverle all'interno e fin qui tutto ok, ho dei problemi a recuperarle e stamparle a video;
ho creato un file per estrarle e uno per visualizzarle view2.php ma mi ritorna questo errore sul file di visualizzazione open2.php:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampplite\htdocs\open2.php:14) in C:\xampplite\htdocs\open2.php on line 17

file di creazione tabella:
PHP:
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$query = 'CREATE TABLE `immagini` ('
. ' `id` int(11) NOT NULL auto_increment,'
. ' `nome` varchar(50) NOT NULL default "",'
. ' `size` varchar(25) NOT NULL default "",'
. ' `type` varchar(25) NOT NULL default "",'
. ' `immagine` blob NOT NULL,'
. ' PRIMARY KEY (`id`)'
. ' )';
$con = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db("negozio", $con);
mysql_query($query,$con);
mysql_close($con);
?>

pagina view2.php per estrarre i file

PHP:
<?php 
$cfg['DBhost'] = 'localhost'; 
$cfg['DBuser'] = 'root'; 
$cfg['DBpass'] = ''; 

function connectDB($DBnegozio) 
{ 
  global $cfg; 
  $DBlink = @mysql_connect($cfg['DBhost'], $cfg['DBuser'], $cfg['DBpass']) or die(mysql_error()); 
  return !mysql_select_db($DBnegozio) ? die(mysql_error()) : $DBlink; 
}
?>

file open2.php che mi da errore in 17 riga, a cui non riesco a rimediare

PHP:
<?php 
$cfg['DBhost'] = 'localhost'; 
$cfg['DBuser'] = 'root'; 
$cfg['DBpass'] = ''; 

function connectDB($DBnegozio) 
{ 
  global $cfg; 
  $DBlink = @mysql_connect($cfg['DBhost'], $cfg['DBuser'], $cfg['DBpass']) or die(mysql_error()); 
  return !mysql_select_db($DBnegozio) ? die(mysql_error()) : $DBlink; 
}
?>

qualcuno puo darmi un consiglio,per indirizzarmi sulla soluzione? grazie tante per l'aiuto Antonella
 
Ciao,
La causa dell’errore risiede nell’utilizzo della funzione headers(): infatti questa funzione non permette che prima della sua chiamata sia presente un qualsiasi genere di output. Che significa? Per esempio non puoi inserire un ‘echo’ o un ‘print’ o anche solo dei caratteri vuoti.
Di soluzioni ce ne sono diverse puoi utilizzare ad esempio la funzione Ob_Start, come da manuale: http://it2.php.net/manual/en/ref.outcontrol.php
 
ok

vado subito a mettere in pratica i tuoi consigli, grazie :byebye: :mavieni:
 
riporto le pagine che ho rifatto senza riportare i dati del db che rimangono quelli del primo post:

pagina view.php che estrae la stringa delle foto

PHP:
<?php
// Connessione e selezione del database
mysql_connect("localhost", "root", "")
or die("Connessione non riuscita: " . mysql_error());

if(!mysql_select_db("negozio"))
die("Selezione database fallita!");

// Query per ottenere l'elenco dei files
$query = "SELECT * FROM immagini";

$risultato = mysql_query($query)
or die("Query non valida: " . mysql_error());

// Se ci sono file nel DB
if(mysql_numrows($risultato))
{
    // Estrazione dei risultati e stampa dei links
    while ($tmp = mysql_fetch_array($risultato))
    {
        echo "<p><a href=\"open.php?id=$tmp[id]\">$tmp[nome]</a></p>\n";
    }
}
else
{
    echo "<p>Nessun file presente nel database</p>";
}  
?>

pagina open.php che dovrebbe riaprire la foto, ma purtroppo mi rinderizza alla pagina view.php senza stampare nulla a video

PHP:
<?php
   if($_GET['id'] == "")
    header("Location: view.php");

// Connessione e selezione del database
mysql_connect("localhost", "root", "")
or die("Connessione non riuscita: " . mysql_error());

if(!mysql_select_db("negozio"))
die("Selezione database fallita!");

// Query per recuperare il file
$query = "SELECT * FROM immagini WHERE id_file = " . $_GET["id"];
$risultato = mysql_query($query)
or die("Query non valida: " . mysql_error());
$tmp = mysql_fetch_array($risultato);

// Invio l'intestazione contenente il tipo MIME del file
header("Content-Type: " . $tmp["type"]);

// Invio il contenuto del file
echo $tmp["dati"]; 
?>

ho provato la guida php ma non è in italiano, ho cercato di tradurre un po' dallo spagnolo ma dopo vari tentativi andati a vuoto, ho provato a scrivere queste due pagine, ma non ci siamo ancora, secondo voi dov'è l'errore?
Aggiungo: la pagina view.php funziona e a video vedo la stringa con i nomi dei file .jpg in ordine numerico di caricamento

grazie ancora Antonella
 
Ultima modifica:

Discussioni simili