Newsgroup: it.comp.www.php
Titolo: immagini e dati binari

salve a tutti,
non riesco a capire per quale motivo il browser mi mostri immagini in 
formato binario se nel ciclo while metto anche solo uno sputacchio di codica 
html.
Nel ciclo while ho una tabella:
?>
<TABLE>
  <td><td><?echo "ciao ciao";?></td><td><img src="<?echo "ciao 
ciao";?>"></td></tr>
</TABLE>
<?
se non la inserisco il browser mi visualizza le immagini una sull'altra (se 
ne vede solo una ma nel sorgente della pagina ci sono tutte e tutte 
sovrapposte (?))
se la inserisco il browser mi mostrA I dati binari...come mai?
perche senza la tab o un qualunque altro echo mi visualizza le immagini 
mentre con la tab o qualsiasi altro echo mi mostra tutto binario? Sembra 
come se l'inserimento del codice html si andasse a mescolare con il binario 
della immagine impedendo al browser di interpretarlo....
[..]
/* $lista2="select immagine from immagini";
 $query_lista2=@mysql_query($lista2) or die (mysql_error());
$row2 = @mysql_fetch_array($query_lista2);
$type=$row2[type];
$data = $row2["immagine"];
header("content-type: $type");
echo "$data";
while($row2 = mysql_fetch_array($query_lista2))
{
?>
<TABLE>
  <td><td><?echo "ciao ciao";?></td><td><img src="<?echo "ciao 
ciao";?>"></td></tr>
</TABLE>
<?
$type=$row2[type];
$data = $row2["immagine"];
header("content-type: $type");
   echo "$data";
//echo "$data";
}
    return true;
  }
}
?>
[..] 


Prima di tutto stai attento che hai inserito due volte <td> invece la
prima è <tr> e la seconda <td>
Non mi è mai capitato. Ma nel sorgente del browser vedi di dati binari?
Enrico

 binario della immagine impedendo al browser di interpretarlo....
[..]
non si inviano dati misti..
l'immagine sara' una richiesta al server che rispondera' con dati binari..
la pagina web sara' un'altra richiesta al server che rispondera' con
l'HTML..
per farti capire al volo (spero) con un esempio stupido..
in una pagina php o html puoi mettere..
<img src='img.php?id=img1' />
e nello script php di nome img.php ti preoccupi di recuperare i dati binari
che compongono l'immagine con id img1 e li invii al client con gli header
appropriati..
-- 
www.iuz-lab.info
 - 
www.php-faq.org

 
E poi ci attacchi un'altra immagine...
Bye.

 Nel ciclo while ho una tabella:
Grazie tante della risposta, credo di aver capito qual e' il problema. Ogni 
volta che faccio una richiesta per dei dati binari dovrei richiamare nello 
script php uno script esterno in cui richiedo i dati binari e specifico per 
essi il tipo, giusto?
In pratica dovrei creare uno script php che crea il codice html della 
tabella con un ciclo while (con una riga per ciascuna riga del db) e 
all'interno del ciclo while richiamo un altro script php che si occupi 
*esclusivamente* di specificare il tipo di dato e la query al db sulla 
colonna binaria della tabella del db.
Sono i primi passi che muovo con php e mysql, grazie per l'aiuto :-)
PS: sto cercando di realizzare una galleria aggiornabile da un utente 
tramite una semplice interfaccia di upload e immissione password. Ho 
pensato, per evitare di gestire il caricamento sul dominio delle immagini 
con ftp, di usare mysql immagazzinando le immagini in forma binaria. 
Ritenete che ci siano delle controindicazioni? Il db con immagini al massimo 
di 100kb ciascuna diventerebbe troppo pesante in breve tempo? Avete dei 
consigli?
Grazie ancora, ora correggo gli script... 

 
Si, la seconda pagina deve inviare solo dati binari con il Content type
del tipo dell'immagine.
Enrico

 Non mi è mai capitato. Ma nel sorgente del browser vedi di dati binari?
si vedo i dati binari..penso sia dovuto al fatto che alla pagina html non
viene passato il link alla directory contenente una immagine ma l'immagine
stessa in formato binario...

 appropriati..
Ho capito, ho provato e funziona.
Avrei bisogno di una ulteriore imbeccata...
dovrei creare div tabelle ecc in modo ricorsivo sul database che
contengano su ogni riga dati di diverso tipo. Diciamo che dovrei
realizzare una tabella html che rappresentasse la tabella del database.
non mi viene in mente come poter indicizzare la creazione della pagina
imgx.php che debbo schiaffare dentro alla tabella.
non riesco a capire come, durante la creazione (con un ciclo che mi
sfrutta il mysql_fetch_array()) della tabella, io possa separare l'output
testuale dall'output binario delle varie celle di ogni riga senza avere le
noie legate alla dichiarazione dell'header..
Mi date un'idea per favore?
questo e' il ciclo che mi produce l'output:
[..]
while($row2 = mysql_fetch_array($query_lista2))
{
?>
<TABLE>
  <td><td><?echo "$row2[id]";?></td><td><img src='image4.php?id=img1'/></td></tr>
</TABLE>
<?}
[..]
questa e' la pagina image4.php (che ovviamente mi mostra sempre la stessa
immagine):
[..]
<?@include 'config.inc3.php';
$query_lista3=@mysql_query ('select id, immagine from immagini order by
id desc limit 0,20')
$row3 = @mysql_fetch_array($query_lista3);
$type2=$row3[type];
$data2 = $row3["immagine"];
header("content-type: $type2");
echo "$data2";
return true;
?>
non capisco come realizzare un indice che mi generi img5.php img 6.php
img7.php  ecc oppure un altro modo che sfrutti mysql_fetch_array() ...
devo creare un array di pagine.php? non saprei...

 by id desc limit 0,20')
$query = "select immagine from immagini where id=" .intval($_GET["id"]);

 $query = "select immagine from immagini where id=" .intval($_GET["id"]);
Ho fatto qlc del genere:
$id_o=$_GET['id'];
$query_lista3=@mysql_query ("select id, immagine from immagini where 
id=$id_o")
Un' ultima cosa:
hai accorciato la stringa della query per il db. C'e' un motivo di 
"ridondanza" di informazione nella query oppure e' stato solo per un fatto 
pratico nel postare la soluzione?

 noie legate alla dichiarazione dell'header..
Non è una noia legata ad un header, la "pagina" con immagini che 
visualizzi in qualità di utente è composta da elementi diversi e 
separati mentre tu stai cercando di produrne una sola ma usando un solo 
elemento. Il fatto che venga caricata come un tutt'unico è solo una 
impressione che ti offre il browser.
Per capire meglio dove si trovi il problema ti suggerisco un'occhiata 
veloce ai reference di HTML e di HTTP.

 fatto pratico nel postare la soluzione?
Per chiarezza. In quella pagina l'id non ti serve a niente (e ce l'hai 
gia`), quindi tanto vale prendere solo i dati dell'immagine.
Bye.