visualizzare un immagine

Salve ho scritto questo codice, dovrei visualizzare una thumbnail (che chiamo thumb) presa da un database mysql. Quando stampo la pagina esco segni incomprensibili credo che il browser non riesca a ricono scere che ciò che gli do in pasto è un immagina nonostante faccia stampare il tab <img src= ..... ecc. in browser non capisce che si tratta di una foto. qualcuno può aiutarmi ??

Il codice della pagina è il seguente:

<?php 
include("top_foot.inc.php"); 
include("config.inc.php"); 
top();

$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

$query = "SELECT testo,testo FROM testo ";

$result = mysql_query($query, $db);
$row = mysql_fetch_array($result);

echo "<b>$row[titolo]</b><br><br>";
echo "$row[testo]<br><br>";

$query = "SELECT thumb, image FROM immagini ";

$result = mysql_query($query, $db);
$row = mysql_fetch_array($result);
//echo"<img src = \"$row[thumb]\"";

echo "<br><a href=index.php>Torna alla pagina iniziale</a><br>";
echo "<a href=all.php>Visualizza tutti gli articoli</a><br>";

mysql_close($db);
foot();
?>
inviato 11 anni fa
gohan079
modificato 11 anni fa
X 0 X

Hai letto questo articolo?

http://www.phpnews.it/content/view/213/80/

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

ciao gianni, ti ringrazio, l'articolo è molto interessante, volevo però segnalarti un errore o almeno a me da errore la pagina mostra.php, il codice lo trovi sull'articolo che mi hai segnalato, l'errore che mi da è:

Query non valida: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

per quanto riguarda l'inserimento della foto e la visualizzazione dei link tutto ok, mi manca l'ultima parte che è appunto il file mostra.php che dovrebbe mostrare la foto ma che a me restituisce questo errore. Potresti darmi una mano ?  :'(

risposto 11 anni fa
gohan079
X 0 X

probabilmente ricevi quell'errore perché la pagina varichiamata con un URL del tipo "mostra.php?id=32" doce quel "32" è solo un ipotetico ID di immagine presente nell DB.

Se non viene passato questo ID via URL allora la query non funziona.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

quindi per quanto riguarda l'id devo prendere l'id della foto del database, per la chiamata tramite url devo usare il metodo get giusto

risposto 11 anni fa
gohan079
X 0 X

Si, basta usare degli URL tipo quello che ti ho mostrato.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ciao gianni,  mi sembra che il codice che richiama la pagina è buono, ma non ne sono sicuro, cmq l'errore permane:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>Carica file nel database</title> 
</head> 
<body> 
<p><b>Clicca su uno dei seguenti file</b></p> 
<?php 
// connessione e selezione del database 
mysql_connect('localhost', 'root', 'rubber') 
    or die('Connessione non riuscita: ' . mysql_error()); 

if(!mysql_select_db('wood')) 
    die('Selezione database fallita!'); 

// 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_file]\">$tmp[nome_file]</a></p>\n"; 
    } 
} 
else 
{ 
    echo '<p>Nessun file presente nel database</p>'; 
} 
?> 
</body> 
</html>
risposto 11 anni fa
gohan079
X 0 X

Ad occhio non trovo problemi nel codice. Che errore ricevi?

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Per questa pagina non ottengo errori ma è questa che chiama la pagina mostra.php che mi restituisce l'errore

Query non valida: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

e poichè la questione è sul link che richiama tale pagina ti ho postato il codice che la richiama

risposto 11 anni fa
gohan079
X 0 X

Allora controlla l'HTML generato dalla pagina (dal browser, tasto destro, HTML o "mostra sorgente pagina") e verifica che i link sono nel formato che ti ho detto.

Poi metti un "echo $query" vicino alla query che da problemi così da vedere cosa stai inviando al DB

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

L'HTML Della pagina che crea il link è:

<p><a href="mostra.php?id=">Giappone026.jpg</a></p>

Poi ho inserito l'istruzione nel codice che visualizza la foto l'istruzione che mi hai sugg. appena dopo la query:

$query = 'SELECT * FROM tabella_files WHERE id_file = '.$_GET['id'];

echo $query

ed ottendo questo errore:

Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';' in G:\Programmi\Apache Group\Apache2\htdocs\Wood\mostra.php on line 12

Il odice completo della pagina mostra.php è:

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

if(!mysql_select_db('wood')) 
die('Selezione database fallita!'); 

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

// invio una intestazione contenente il tipo MIME 
header('Content-Type: '.$tmp['tipo_file']); 

// invio il contenuto del file 
echo $tmp['dati_file']; 
?>
risposto 11 anni fa
gohan079
X 0 X

Beh, pernso che la prima cosa che si impara del PHP è che a fine istruzione si mette un punto e virgola...a quando uno studio di PHP?

Comunque dall'HTML è evidente che è lo script che genera i link ad avere problemi. La riga che non funziona è

echo "<p><a href=\"mostra.php?id=$tmp[id_file]\">$tmp[nome_file]</a></p>\n";

probabilemente perché $tmp[id_file] non restituisce l'ID del file, e questo può capitare se la colonna del DB che contiene l'ID del file non si chiama id_file. Pertanto verifica il nome di questa colonna e sostituiscilo al posto di id_file

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Gianni, potrebbe essere un problema di questa sintassi:

$query = 'SELECT * FROM tabella_files WHERE id_file = '.$_GET['id'];

già altre volte WHERE id = ......

mi ha causato dei problemi, può essere che nuove versione di mysql accettano un tipo diverso di sintassi.

risposto 11 anni fa
gohan079
X 0 X

Come ti ho detto prima il problema è che $tmp[id_file] non ti fornisce l'ID, e questo si vede dal fatto che nell'HTML i link sono privi dell'ID.

Come si chiama il campo della tabella che conserva gli ID delle immagini?

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

ciao gianni, ho modificato il nome dell'id e l'ho rinominato in id_file (forse prima non lo ha accettatato), ora però mi sa che c'è qualche errore nell'header che mando all'html perhcè la foto non viene visualizzata ma vengono visualizzati dei caratteri strani.

 Warning: Cannot modify header information - headers already sent by (output started at G:\Programmi\Apache Group\Apache2\htdocs\Wood\mostra.php:11) in G:\Programmi\Apache Group\Apache2\htdocs\Wood\mostra.php on line 16

dopo questo manda ia video caratteri strani

 ho provato a stampare il contenuto della tabella alla colonna tipo_file ed ho ottenuto

image/pjpeg

questo dovrebbe essere l'header

risposto 11 anni fa
gohan079
modificato 11 anni fa
X 0 X

Cosa sta alla riga 11 di mostra.php?

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Questo è il file mostra.php

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

if(!mysql_select_db('wood')) 
die('Selezione database fallita!'); 

// query per recuperare il file 
$query = 'SELECT * FROM tabella_files WHERE id_file = '.$_GET['id']; 
echo "$query";
$risultato = mysql_query($query) or die('Query non valida: ' . mysql_error()); 
$tmp = mysql_fetch_array($risultato); 
echo "<br>".$tmp['tipo_file'];
// invio una intestazione contenente il tipo MIME 
header('Content-Type: '.$tmp['tipo_file']); 

// invio il contenuto del file 
echo $tmp['dati_file']; 
?>
risposto 11 anni fa
gohan079
X 0 X

togli echo "$query"; e echo "<br>".$tmp['tipo_file'];

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ti ringrazio gianni, adesso funziona, ora cercherò di realizzare quel progetto di cui ti ho accennato. Ti volevo chiedere dove posso trovare altre info. riguardo ai metodi get e post, ho problemi a gestire i dati proveniente da questi array

risposto 11 anni fa
gohan079
X 0 X

Io ti consiglio di studiarti tutta la guida che abbiamo pubblicato. Li si parla anche di array GET e POST

http://www.phpnews.it/content/view/224/107/

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Già stampata e studiata, solo non mi è chiaro il concetto di come vengono prelevati i dati

risposto 11 anni fa
gohan079
X 0 X

per approfondire POST e GET vedi qui:

http://www.phpnews.it/content/view/216/80/

inizio di pagina 2 e 3

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

grazie gianni, ti volevo chiedere se mi puoi aiutare alla realizzazione della struttura del database.

Devo creare una tabella principale in cui ho i dati

id_principale, titolo, descrizione

per ogni titolo sono presenti più immagini da visualizzare quando accedo al link (il titolo appunto) e quindi mi serve una seconda tabella dove per ogni id della tabella principale ottengo 5 o + id della tabella secondaria, devo fare in modo che per gli ellementi che appartengono al primo titolo siano associati all'id del primo titolo.

Come posso risolvere, non riesco a capire come creare la relazione tra le tabelle.

Poi volevo anche chiederti se l'informazioni MiMe possono essere utilizzate sia per la thumbnail che per la foto, cioè memorizzando una sola volta il MIME e utilizzandolo per entrame le immagini.

risposto 11 anni fa
gohan079
X 0 X

Stiamo andando in OT. E poi hai già aperto un'altra discussione in merito.

Per quanto riguarda il Mime, se la thumbnail è dello stesso formato dell'immagine principale (es.: JPG) allora puoi tenerne una sola.

risposto 11 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda