Newsgroup: it.comp.www.php
Titolo: Foto da query

Eseguo una query e il risultato viene evidenziato in una pagina php.
Nel caso specifico il risultato è una serie di foto.
La mia necessità è fare in modo che, ciccando su ogni una di dette foto si
possa aprire un'ulteriore pagina che descriva in modo dettagliato i dati
relativi alla foto selezionata.

 relativi alla foto selezionata.
fai un ciclo per tutti i valori del recordset e per ognuno di questi fai:
<a href="details.php?id=$photoID">
	<img src="$pathPhoto" border="1" ...>
</a>
In pratica chiami una pagina detail.php passandogli come parametro un ID 
che identifica univocamente la foto in questione in modo che ti sia 
possibile da quella pagina eseguire una o più query per reperire tutti i 
dettagli che ti occorrono.
Dovrai anche controllare la validità di $photoID nella pagina 
details.php essendo un parametro sulal querystring che è soggetto ad 
alterazioni manuali.
ciao!

 soltanto il riferimento ( path relativo ) ai file sul silesystem.
su questo ci sarebbe da discutere.
Un utente di ICWP aveva eseguito una serie di test comparativi tra 
memorizzazione nel DB vs memorizzazione nel filesystem e i risultati 
erano per lo più a favore del DB.
Purtroppo non trovo più il collegamento a quel documento (era nelle FAQ).
ciao
Alesi_27

 erano per lo più a favore del DB.
Ma poi come "tiri" fuori la foto dal db, per inserirla nelle pagine??
Sergej
-- 
http://www.ildeposito.org
Canti di protesta politica e sociale
Archivio di testi e accordi

 Ma poi come "tiri" fuori la foto dal db, per inserirla nelle pagine??
mi sembra ovvio: con una query
nell'HTML:
<img src="immagine.php?id=1">
----
immagine.php
<?php
  header ("Content-type: image/jpeg");
  $conn = mysql_connect( $host, $user, $pass) or die ("Connessione 
fallita");
  mysql_select_db( $dbname, $conn) or die ("Impossibile selezionare il 
database $db_name");
  $sql="select immagine from tabella where id=".$_GET['id'];
  $result=mysql_query($sql,$conn);
  $riga=mysql_fetch_row($result);
  print $riga[0];
  mysql_close($conn);
?>

 mi sembra ovvio: con una query
Beh, a quello ci ero arrivato ;)
Grazie della risposta, appena posso provo un po' a mettere in pratica.



Ma non rischi di appesantire il database?
E' una scelta che sinceramente non ho mai preso in considerazione perchè 
non mi sembra per niente pulita e chiara, anche se la velocità fosse 
uguale o persino migliore, opterei cmq per tenere le immagini e 
qualsiasi altro tipo di formato simile sul filesystem ed usare il db per 
l'indicizzazione (che è quello a cui serve).
Sarei curioso di sapere come ed in quale contesto è stato fatto quel 
test, i sono molti fattori da considerare, tipo di filesystem, dbms, 
carico del dbms etc etc.
Cmq, per chiarezza, pulizia e manutenzione non mi sembra, al di là delle 
eventuali performance migliori, per altro non facili da stimare, una 
scelta corretta da un punto di vista di progettazione software.
grazie cmq della precisazione, se torvi il test postalo cosi ci facciamo 
un idea più precisa ;)
ciao!

 ciao!
caso vuole che l'ho trovato ;)
http://www.altropc.it/modules/mydownloads/visit.php?lid=30
buona lettura, fammi sapere le tue impressioni :)
ciao
Alesi_27

Per quanto riguarda la memorizzazione dei dati:
e' buona norma creare un tablespace ad hoc per dati blob (mi riferisco
ad Oracle) ma non e' il default e questo vuol dire che se il database
non viene creato da un dba esperto e' normale che ti ritrovi il blob
assieme al resto del record (di cui comunque fa parte)
gestire inoltre un record di dimensione molto variabile porta ad una
grossa frammentazione del tablespace con un deciso rallentamento
nell'accesso dopo vari update/cancellazioni.
Per le applicazioni web c'e' inoltre da considerare che lo spazio
database costa molto di piu' dello spazio su disco ed onestamente
utilizzarlo per memorizzare files mi sembrano soldi buttati.
Tornando ad Oracle, c'e' un buon compromesso nell'utilizzo di DIRECTORY
e FILE in maniera tale da avere BLOB accessibili da db che
corrispondono a files fisici nel file system (vedi CREATE DIRECTORY e
documentazione collegata)

 Per quanto riguarda la memorizzazione dei dati:
grazie per le precisazioni.
Tuttavia credo che alcuni DBMS usino spazi separati per i blob rispetto 
ai dati senza specifico intervento dell'utente. Non ne sono sicuro, 
dovrei documentarmi.
Il vantaggio, secondo me importante, di utilizzare blob anzichè 
filesystem è principalmente dovuto alla consistenza dei dati. Nel FS 
questa consistenza, semplicemente, non esiste. Puoi inventarti qualsiasi 
tecnica, ma il risultato sarà solo di limitare la probabilità di 
inconsistenza al costo di appesantire (imvho) inutilmente l'applicazione.
Per quanto riguarda i costi in linea di principio è vero, gli spazi su 
DB costano di più, ma in una applicazione intranet, ad esempio, vedo 
solo vantaggi nell'utilizzo dei blob. Il grosso svantaggio dei blob è un 
aumento di difficoltà nella manipolazione delle immagini una volta che 
sono state memorizzate nel blob.
La mia conclusione in ogni caso è che dipende dall'utilizzo. In alcuni 
casi conviene usare FS, in altri conviene usare i blob. Non c'è una 
regola vera a priori.
La discussione infatti nasceva dal voler negare ad ogni costo l'utilizzo 
dei blob, che invece secondo me spesso sono una soluzione migliore in 
termini di performance (indubbiamente), pulizia della logica di 
programmazione, consistenza dei dati.
ciao
Alesi_27