[PHP]Gestione immagini da DB Access

Ho un db in Access da mettere in rete. Sono riuscita a fare il collegamento e a interrogare il DB, sembra funzionare tutto perfettamente tranne per un importantissimo particolare...non riesco a visualizzare le immagini. Queste sono in formato jpg e sono state inserite nel DB tramite collegamento ipertestuale.

Qualcuno riesce a darmi una mano?

Grazie

Codice della pagina che contiene la query per la ricerca sul DB

<?php

// Connessione al DataBase

$Connessione = odbc_connect("","","");

// Se $connessione esiste...

if($Connessione)

{

// .. query per richiamare tutto

// il contenuto della tabella

$Query="SELECT* FROM ... WHERE ... LIKE '%$_POST[...]%'

AND ... LIKE '%$_POST[...]%'

AND ...LIKE '%$_POST[...]%' ";

// eseguo la query

$Risultato=odbc_exec($Connessione,$Query);

// ricavo tutti i dati contenuti in ogni riga (PENSAVO CHE L'IMMAGINE VENISSE RECUPERATA AUTOMATICAMENTE DAL DB COME IL CONTENUTO DI TUTTI GLI ALTRI CAMPI)

odbc_result_all($Risultato);

odbc_free_result($Risultato);

# Chiudo la connessione al dns

odbc_close($Connessione);

}

else

{

echo "Impossibile connettersi al DB";

}

?>

inviato 10 anni fa
alice1
X 0 X

Non mi è chiaro se il DB conserva l'immagine vera e propria o solo il suo URL.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Il Database conserva solo il percorso dell'immagine.

risposto 10 anni fa
alice1
X 0 X

Allora per mostrare l'immagine ti basta "impacchettarla" in un classico tag IMG:

echo '<img src="http://www.tuosito.it/cartella_immagini/' . $nome_immagine .'">';

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ti ringrazio...provo e poi ti faccio sapere

Ciao

risposto 10 anni fa
alice1
X 0 X

Non funziona, scusa se sono noiosa ma non sono ancora molto esperta di PHP...

ho inserito ciò che mi avevi suggerito:

echo '<img src="http://www.tuosito.it/cartella_immagini/' . $nome_immagine .'">';

inserendo il mio percorso ?http://.....", e al posto di $nome_foto     $foto (il nome del mio campo foto),

poi ho pensato che avrei dovuto indicargli il valore della variabile $foto, e allora ho scritto (e qui  c'è l'errore!!)

$foto=$_POST[foto];

mi da questi due errori

Notice: Use of undefined constant foto - assumed 'foto' in c:\programmi\easyphp1-8\www\testsurvey.php on line 39

Notice: Undefined index: foto in c:\programmi\easyphp1-8\www\testsurvey.php on line 39

(line 39:

$foto=$_POST[foto];)

se elimino la line 39 invece mi dice:

Notice: Undefined variable: foto in c:\programmi\easyphp1-8\www\testsurvey.php on line 40

(line 40:

echo'<img src="http://127.0.0.1/qqq/' .$foto .'">';)

 Che mi dici?

Ti ringrazio per la disponibilità

risposto 10 anni fa
alice1
X 0 X

Riporta lo script completo.  :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Eccolo...ti prego di essere clemente...

<?php

$Connessione = odbc_connect("testsurveyaereo","frezza","frezza");

if($Connessione)

{

$Query="SELECT Provincia, Comune, Toponimo, Sito, Definizione, Volo, Scatto, GPS  FROM Dettagli WHERE Comune LIKE '%$_POST[Comune]%'

AND Provincia LIKE '%$_POST[Provincia]%'

AND Sito LIKE '%$_POST[Sito]%'

AND Definizione LIKE '%$_POST[Definizione]%'

AND Toponimo LIKE '%$_POST[Toponimo]%' ";

$Risultato= odbc_prepare($Connessione,$Query);

odbc_execute($Risultato);

odbc_result_all($Risultato);

$foto=$_POST[foto]

echo'<img src="http://127.0.0.1/qqq/' .$foto .'">';

#lo inserito qui ma sicuramente non è la posizione corretta e manca qualcos'altro

odbc_close($Connessione);

}

else

{

echo "Impossibile connettersi al DB";

}

?>

risposto 10 anni fa
alice1
X 0 X

C'è un errore nell'approccio che stai usando. La funzione odbc_result_all ti restituisce TUTTI i risultati della query, formattati in una tabella HTML.

Invece a te serve poter accedere ai singoli risultati in modo da poter comporre con essi la pagina da visualizzare.

Per vedere come fare leggi questo articolo, in particolare l'ultimo esempio:

http://www.zend.com/zend/tut/odbc.php

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ho letto l'articolo, e ho provato l'esempio che mi hai indicato....ma in questo modo  perdo delle informazioni perchè mi estrae solo una riga.

In realtà a me serve visualizzare tutti i risultati della query con relativa immagine. Quindi io voglio vedere tutti i records che rispondono ai requisiti della ricerca (per questo ho usato obdc_resul_all(...)) compreso il campo foto. Per quanto riguarda l'impaginazione dei risultati ci penserò dopo, quello che mi preme risolvere in questo momento è la questione relativa alle foto inserite con collegamento ipertestuale nel DB.

Infatti utilizzando il codice che ti avevo inviato nel primo post riesco a vedere tutti i campi formato testo e non le immagini (al loro posto ho la scritta del percorso inserito nel database)

Ti posto nuovamente il codice

<?php

$Connessione = odbc_connect("","","");

if($Connessione)

{

$Query="SELECT* FROM ... WHERE ... LIKE '%$_POST[...]%'

AND ... LIKE '%$_POST[...]%'

AND ...LIKE '%$_POST[...]%' ";

$Risultato=odbc_exec($Connessione,$Query);

// ricavo tutti i dati contenuti in ogni riga (TRA I QUALI IL CAMPO IMMAGINE CHE PENSAVO CHE FOSSE RECUPERATO AUTOMATICAMENTE DAL DB COME QUELLI IN FORMATO TESTO)

odbc_result_all($Risultato);

odbc_free_result($Risultato);

odbc_close($Connessione);

}

else

{

echo "Impossibile connettersi al DB";

}

?>

risposto 10 anni fa
alice1
X 0 X

prova così:

$foto=$_POST['foto'];

echo "<img src=\"http://127.0.0.1/qqq/$foto\">";

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Forse non sono stato chiaro  :(

La funzione obdc_resul_all ti vomita tutto il risultato della query senza che tu possa intervenire su di esso. Certo, vedi tutto i dati ma come fai a prendere l'URL dell'immagine ed impacchettarlo nel tag IMG? Ecco perché NON devi usare obdc_resul_all.

Purtroppo lo script da realizzare è più complesso perché devi estrarre i risultati riga per riga, mostrare i testi, recuperare l'URL ed inserirlo nel tag IMG.

Per fare ciò devi prendere spunto da questo script, riportato nel link che ti ho segnalato:

<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<table width="75%" border="1" cellspacing="1" cellpadding="1" bgcolor="#FFFFFF">
  <tr bgcolor="#CCFFFF"> 
    <td height="22"><b>First Name</b></td>
    <td height="22"><b>Last Name</b></td>
    <td height="22"><b>Telephone</b></td>
  </tr>
  
<?php
    
    //connect to the database
    $connectionstring = odbc_connect("PHPPUBS", "Sa", "emma");
    
    //SQL query
    $Query = "SELECT au_lname, au_fname, phone FROM authors WHERE (au_lname LIKE '%Ringer%')";
    
    //execute query
    $queryexe = odbc_do($connectionstring, $Query);
    
    //query database
    while(odbc_fetch_row($queryexe))
    {
    $lname = odbc_result($queryexe, 1);
    $fname = odbc_result($queryexe, 2);
    $phone = odbc_result($queryexe, 3);
    
    //format results
    print ("<tr>");
    print ("<td>$fname</td>");
    print ("<td>$lname</td>");
    print ("<td>$phone</td>");
    print ("</tr>");
    }
    
    //disconnect from database
    odbc_close($connectionstring);

    ?>
    
  
</table>
</body>
</html>

Nota il ciclo while(odbc_fetch_row($queryexe)), serve ad estrarre un'unica riga (una per volta). Per prendere i singoli elementi di una riga viene usata la funzione odbc_result.

Nota come le funzioni print che seguono riescono ad impacchettare i dati nei tag <td>

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
modificato 10 anni fa
X 0 X

Rispondo a Lore

continua a darmi l'errore

Notice: Undefined index: foto in c:\programmi\easyphp1-8\www\testsurvey.php on line 36

Per Gianni

ora ho capito quello che volevi dire, proverò a prendere spunto dallo script e a concludere qualcosa, se ci riesco (missione quasi impossibile) ti faccio sapere

grazie a tutti e due per la disponibilità

ciao

risposto 10 anni fa
alice1
X 0 X

Rispondo a Lore

continua a darmi l'errore

Notice: Undefined index: foto in c:\programmi\easyphp1-8\www\testsurvey.php on line 36

Stai lavorando con error_reporting(E_ALL)?

Se sì, fai:

if(isset($_POST['foto']))
  $foto=$_POST['foto'];

echo "<img src=\"http://127.0.0.1/qqq/$foto\">";

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Ho fatto un tentativo.....(dopo il quale prometto di lasciarvi in pace)

<html>
<head>
</head>
<body>
<table >
  <tr> 
    <td Provincia</td>
    <td >Comune</td>
    <td>Toponimo</td>
<td>foto></td>
  </tr>
<?php 
$Connessione = odbc_connect("testsurveyaereo","frezza","frezza"); 
 if($Connessione) 
{ 
$Query="SELECT Provincia, Comune, Toponimo, foto FROM Dettagli WHERE Comune LIKE '%$_POST[Comune]%'
AND Provincia LIKE '%$_POST[Provincia]%'
AND Sito LIKE '%$_POST[Sito]%'
AND Definizione LIKE '%$_POST[Definizione]%'
AND Toponimo LIKE '%$_POST[Toponimo]%' ";

$Risultato=odbc_do($Connessione,$Query); 
while(odbc_fetch_row($Risultato))
{
$Provincia=odbc_result($Risultato, 1);
$Comune=odbc_result($Risultato, 2);
$Toponimo=odbc_result($Risultato, 3);
$foto=odbc_result($Risultato, 4);

echo("<tr>");
echo ("<td>$Provincia</td>");
echo ("<td>$Comune</td>");
echo ("<td>$Toponimo</td>");
echo ("<td><img src=\"http://127.0.0.1/qqq/$foto\">");
echo ("</tr>");
} 
odbc_free_result($Risultato); 
odbc_close($Connessione); 
} 
else 
{ 
echo "Impossibile connettersi al DB"; 
} 
?> 
</table>
</body>
</html>

RISULTATO:

Visualizzazione in tabella di tutti i records che rispondono alla query...ma non delle relative immagini (al loro posto c'è la solita icona con la x)

A questo punto, avrò sbagliato a digitare il percorso?

Io ho inserito l'indirizzo di host locale dove conservo tutte le pagine di prova in php e dove ho messo la cartella qqq con le immagini del DB

QUASI, QUASI CI RINUNCIO

risposto 10 anni fa
alice1
X 0 X

Stampa il percorso, ex:

$img = "http://127.0.0.1/qqq/$foto";

echo $img;

Ti dovrebbe uscire:

http://127.0.0.1/qqq/nomeFoto.jpg

magari non gli passi correttamente il valore di $foto

prova a fare l'echo che ti ho detto e vedi se il percorso è corretto...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

E infatti mi esce solo

http://127.0.0.1/qqq/

scusami non capisco dov'è il mio errore

risposto 10 anni fa
alice1
X 0 X

E infatti mi esce solo

http://127.0.0.1/qqq/

scusami non capisco dov'è il mio errore

Dato che non ti visualizza $foto, probabilmente sbaglia a passargli il dato...

Lo recuperi facendo:

$foto=$_POST['foto'];

ed è giusto ( se il form ha method="post")

se avesse method="get"

$foto=$_GET['foto'];

Se non è quello devi controllare che dal form in cui passi i valori, quello sia settato, se no è giusto che non passi nulla...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Siccome $foto è l'unico valore estratto dalla query ho il sospetto che la query non funziona...

prova a mettere un:

echo odbc_errormsg();

appena dopo odbc_do e controlla se ti viene mostrato qualche messaggio di errore.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Aiuto....non mi da uno ma tantissimi mess di errore:

Notice: Undefined index: Comune in c:\programmi\easyphp1-8\www\testsurvey.php on line 35

Notice: Undefined index: Provincia in c:\programmi\easyphp1-8\www\testsurvey.php on line 36

Notice: Undefined index: Sito in c:\programmi\easyphp1-8\www\testsurvey.php on line 37

Notice: Undefined index: Definizione in c:\programmi\easyphp1-8\www\testsurvey.php on line 38

Notice: Undefined index: Toponimo in c:\programmi\easyphp1-8\www\testsurvey.php on line 39

Eppure mi sembrava che la query funzionasse, i risultati che visualizzavo corrispondevano perfettamente ai records del DB....si vede che non ci ho proprio capito niente !

risposto 10 anni fa
alice1
X 0 X

Aiuto....non mi da uno ma tantissimi mess di errore:

Notice: Undefined index: Comune in c:\programmi\easyphp1-8\www\testsurvey.php on line 35

Notice: Undefined index: Provincia in c:\programmi\easyphp1-8\www\testsurvey.php on line 36

Notice: Undefined index: Sito in c:\programmi\easyphp1-8\www\testsurvey.php on line 37

Notice: Undefined index: Definizione in c:\programmi\easyphp1-8\www\testsurvey.php on line 38

Notice: Undefined index: Toponimo in c:\programmi\easyphp1-8\www\testsurvey.php on line 39

Eppure mi sembrava che la query funzionasse, i risultati che visualizzavo corrispondevano perfettamente ai records del DB....si vede che non ci ho proprio capito niente !

if(isset($_POST['Comune']))

 $comune = $_POST['Comune'];

if(isset($_POST['Provincia']))

 $comune = $_POST['Provincia'];

ecc ecc...

e dove prima usavi $_POST['nome'] ora userai il corrispettivo $nome ex:

$Query="SELECT* FROM ... WHERE ... LIKE '%$Comune%'

AND ... LIKE '%$Provincia%'

.............";

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Ho provato a fare come mi hai suggerito ma ora mi da:

Notice: Undefined variable: Comune in c:\programmi\easyphp1-8\www\testsurvey.php on line 48

Notice: Undefined variable: Provincia in c:\programmi\easyphp1-8\www\testsurvey.php on line 49

Notice: Undefined variable: Sito in c:\programmi\easyphp1-8\www\testsurvey.php on line 50

Notice: Undefined variable: foto in c:\programmi\easyphp1-8\www\testsurvey.php on line 51

Notice: Undefined variable: Toponimo in c:\programmi\easyphp1-8\www\testsurvey.php on line 51

Non riesco proprio a capire cosa c'è che non va, e come mai non mi riconosce nessuna variabile nonostante la query di ricerca dia ( per i campo testo) i risultati esatti

risposto 10 anni fa
alice1
X 0 X

Ho provato a fare come mi hai suggerito ma ora mi da:

Notice: Undefined variable: Comune in c:\programmi\easyphp1-8\www\testsurvey.php on line 48

Notice: Undefined variable: Provincia in c:\programmi\easyphp1-8\www\testsurvey.php on line 49

Notice: Undefined variable: Sito in c:\programmi\easyphp1-8\www\testsurvey.php on line 50

Notice: Undefined variable: foto in c:\programmi\easyphp1-8\www\testsurvey.php on line 51

Notice: Undefined variable: Toponimo in c:\programmi\easyphp1-8\www\testsurvey.php on line 51

Non riesco proprio a capire cosa c'è che non va, e come mai non mi riconosce nessuna variabile nonostante la query di ricerca dia ( per i campo testo) i risultati esatti

prima di utilizzare le variabili

$Sito, $foto ecc ecc...

se lavori con E_ALL devi dichiararle:

$Sito = "";

$foto = "";

$Toponimo = "";

ecc ecc.....

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Ho letto manuali cartacei, mi sono documentata sulla rete, mi illudevo di aver capito ma evidentemente non sono ancora entrata nel meccanismo. Ho un db (di una sola tabella) che devo rendere consultabile in rete, ho creato una pagina con un form costituito dai campi della tabella(Provincia, Comune....) attraverso il quale l'utente può effettuare una ricerca. Questo form richiama la pagina (quella che più volte ho postato) nella quale è inserita la query. A questo punto tu mi dici che devo dichiarare le variabili....ma in che modo? Qual'è il valore che devo attribuire loro? Il collegamento al db non dovrebbere rendere automatico questo procedimento?

Non voglio ulteriormente annoiarti con i miei quesiti, so che dovrei risolverli da sola, ti chiedo di consigliarmi un tutorial o qualche articolo che illustri l'argomento in maniera comprensibile anche per chi come me si è da poco approcciato alla materia.

Ti ringrazio

risposto 10 anni fa
alice1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda