Visualizza foto da un db mysql

  • Creatore Discussione Creatore Discussione gracito
  • Data di inizio Data di inizio
Stato
Chiusa ad ulteriori risposte.
Ciao
è possibile inserire nella scr

<td><a href=\"".$myrow['Foto']."\"><img scr=\"".$myrow['Foto']."\"/></a></td>

width="111" e height="111" come in html ?



Ciao
 
ciao
intanto farei (o modifichrei) una tabella del tipo

`id` INT( 15 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nome` VARCHAR( 50 ) NOT NULL ,
`cognome` VARCHAR( 50 ) NOT NULL ,
`anni` INT( 3 ) NOT NULL ,
`percorso` VARCHAR( 50 ) NOT NULL ,
`foto` VARCHAR(50) NOT NULL ,

dove (ti indico solo i campi che ti servono)

id ... .... percorso foto
1 immagini/sotto/ foto1.jpg
2 immagini/sotto/ foto2.jpg
3 immagini/sopra/ foto3.jpj
.. ... .... ....
n immagini/altra/ fotoN.jpg

cioè farei un campo che contiene il percorso ed uno per il nome della foto (pulito senza alcun'altra cosa!!!!)

poi nell pagina php
HTML:
//...................
$result =mysql_query("SELECT * FROM mia Where ID=$ID" );
while($myrow=mysql_fetch_array($result))
echo "<tr>
<td>$myrow[Id]</td>
<td>$myrow[Cognome]</td>
<td>$myrow[Nome]</td>
<td>$myrow[Anni]</td>
<td><a href=\"".$myrow['percorso'].$myrow['Foto']."\"><img scr=\"".$myrow['percorso']."tumb_".$myrow['Foto']."\"/></a></td>";
}
//...................


p.s.
poi un consiglio nei nomi delle variabili e dei campi cerca di evitare di dare maiscole/minuscole, usare le maiscole/minuscole è uno dei sistemi migliori per impazzire a trovare l'eventuale errore.
usa solo minuscole
ps al ps
verifica gli apici

certo che avendo 3000 foto hai da fare un lavoro piuttosto lunghetto:)
 
Ultima modifica:
Ciao e grazie

Inizio a lavorare, quando ho qualche difficoltà di ridisturbo.
Ho provato ad avere l'anteprima delle foto così

<td><a href=\"".$myrow['Foto']."\"><img src =\"".$myrow['Foto']."\"
width="200" heigth="250"/></a></td>

ma nulla mi compare l'errore
Parse error: syntax error, unexpected T_LNUMBER, expecting ',' or ';' in C:\Mio\xampp\htdocs\apri_dettagli.php on line 146

Ciao
 
Ciao

Visto che il db come ti dicevo l'ho già fatto in access qundi i percorsi sono già caricati,
ho convertito il db con Mdb to Mysql mi ha generato un file di testo Sql dove i dati del percorso
sono ok ..cioe 'C:\Foto\A\17-01-2008\EPSN0137.JPG' importando la tabella con php myadmin
il percorso mi compare così C:FotoA17-01-2008EPSN0006.JPG senza backslash
ha bisogno di particolari settaggi per importarlo corretamente?

Ciao
 
ciao
se come ti ho gia detto non togli quel benedetto C: ecc...non riesci a fare nulla
dentro il campo foto deve essere solo

EPSN0137.JPG

dimenticavo.
e dentro il campo percorso devi avere
Foto/A/17-01-2008/

ho la vaga impressione che, manina manina, devi rifare il tutto
 
Ultima modifica:
Ciao
forse non mi sono spiegato bene.
Sto creando come mi hai detto un campo percorso e uno foto.
Visto che ho i dati in access volevo farlo col db di access pechè mi sembra più veloce.
Fare il campo percorso Foto/A/17-01-2008/ e quello foto 1.jpg.
Modificato il db sempre in access convertirlo in formato mysql e poi importarlo con
php myadmin. Ho fatto alcune prove e quando lo importo, nel campo percorso mi toglie gli
slash e mi da il campo testp del percorso così FotoA17-01-2008 mentre nel db sql convertito gli slash ci sono e quando lo importa myadmin che me li toglie, ha bisogno di qualche settaggio per evitare che tolga gli slash?
Percaso conosci una soluzione più veloce?

Grazie
 
ciao
conosco molto (ma molto poco) acces.
l'unico suggerimento, ma non se è valido, e di "ibrogliare" acces/mysql
non so se è possibile ma in un colpo solo in acces trasforma gli / in un'altra cosa es. | o *
fai importalo in mysql
poi puslisci mysql uppando il percorso

$riga['foto']= str_replace("|", "/", $riga['foto']);
a questo punto dovresti avere nel campo foto, se non ho capito male,
C:/Foto/A/17-01-2008/EPSN0137.JPG
fai un'altra pulizia togliendo C:/ e lo metti in $riga['percorso']

$riga['percorso']= str_replace("C:/", "", $riga['foto']);

rifai l'estrazione e uppi togliendo il nome della foto da percorso

$riga['foto']=basename($riga['percorso']);

$riga['percorso']= str_replace($riga['foto'], "",$riga['percorso']);

guarda che è più difficile a spiegarsi che a farsi

alla fine di tutto l'ambaradan "dovresti" avere tutto a posto, l'unica cosa da ricordarsi è di mettere le tumb nella stassa cartella/sottocartella della foto originale.

p.s.
da quanto ho inoltre capito non vorresti crerti le tumb ma fissare la misura con <src=..... width ...hegth/>

il problema che se le foto sono di parecchi kb hai un rallentamento notevole nel caricamento della pagina (per questo si fanno le tum piccole)
 
ciao
forse mi è venuta un’idea che potrebbe semplificarti il lavoro.
però dovresti sapermi dire:
come hai organizzato il db acces: nome, cognome, anni e poi?
come sono legate le foto a nome cognome anni? ad ogni nome/cognome è dedicata una sottocartella?
Esempio:
ho visto che il percorso delle foto è
C:\Foto\A\17-01-2008\EPSN0137.JPG

Quindi all’utente pinco pallo di anni 99 è collegata la sottocartella A? o la sottocartella a/17-012008/?
 
Ciao

Sono riuscito a modificare il db ora il percorso è corretto Foto/A/...... non più Foto|A|.....con replace sono riuscito a modificare la tabella. Ora devo creare le tumb_ esiste un programmino che mi permette di inserire tumb_ davanti al nome di tutte le foto?
Ho provato come avevi intuito a visualizzare le anteprime con width e higth però mi sembra come mi dicevi un po pesantuccio.

O bisogno di un'altra informazione.
Ho creato la pagina principale con alcune funzioni di ricerca in base al nome cognome.
Seleziono per cognome "Bianchi" e mi compaiono 10 persone è possibile vedere le righe
colorate alternativamente di due colori es grigio e bianco?
Questo è il codice della pagina

$db = mysql_connect("localhost","root","");
mysql_select_db("prova", $db);
if ($Cognome !=""){

$result =mysql_query("SELECT * FROM mia Where Cognome LIKE '$Cognome'" );
} else {
$result =mysql_query("SELECT * FROM mia Where Nome LIKE '$Nome'" );
}
?>
<table border= "1" width="650" align="center">
<tr>
<td width="50"> <b>Id </b></td>
<td width="150"><b>Cognome </b></td>
<td width="150"><b>Nome</b></td>
<td width="150"><b>Anni</b></td>
<td width="150"><b>Foto</b>
</td>

<?php


while($myrow=mysql_fetch_array($result))

echo "<tr>
<td><a href=\"Apri_Foto.php?Id=$myrow[Id]\">$myrow[Id]</a></td>
<td>$myrow[Cognome]</td>
<td>$myrow[Nome]</td>
<td>$myrow[Anni]</td>
<td>$myrow[Foto]</td>
</tr>";


Le cartelle sono organizzate cosi:
cartella Foto all'interno ci sono diverse sottocartelle A B C .....
all'interno di ogni sottocartella vi sono una o più sottocartelle esempio 17-01-2008 che sono le date
che sono state scattate le foto.

Grazie
 
Ciao
sono riuscito a visualizzare le righe con colore alternato grigio bianco, pero quando
clicco sull'id per aprirmi la pagina apri_dettagli.php mi apre la pagina ma non mi compare la scritta
acesso negato e nella pagina degli indirizza http://localhost/%22apri_dettagli.php?ID=1\"
cosa vuole???

<?php

$i = 0;
while($myrow=mysql_fetch_array($result))

{

$bgcolor = ($i % 2 == 0 ? '#dddddd' : 'white');
$bgcolor = ($myrow['data_mod'] > $myrow['data_ins'] ? 'green' : $bgcolor);


echo <<<EOF
<tr bgcolor="{$bgcolor}">

<td><a href=\"apri_dettagli.php?ID=$myrow[Id]\">$myrow[Id]</a></td>
<td>$myrow[Allevamento]</td>
<td>$myrow[Data]</td>
<td>$myrow[Comune]</td>
<td>$myrow[Cod_Asl]</td>
<td>$myrow[Id_Animale]</td>
<td>$myrow[Sex]</td>
</tr>

EOF;

$i++;
}
?>

Grazie
 
ciao
usando l'eredoc tprova a togliere gli slash

PHP:
echo <<<EOF
<tr bgcolor="{$bgcolor}">
<td><a href="apri_dettagli.php?ID=$myrow[Id]">$myrow[Id]</a></td>
<td>$myrow[Allevamento]</td>
<td>$myrow[Data]</td>
<td>$myrow[Comune]</td>
<td>$myrow[Cod_Asl]</td>
<td>$myrow[Id_Animale]</td>
<td>$myrow[Sex]</td>
</tr>
EOF;
 
Ciao
Come faccio a fare la ricerca su più campi?
Ho creato tre campi di ricerca nome,cognome,id che funzionano separatamente,
come posso fare se voglio creare tre funzioni di ricerca che mi faccia la selezione su tutti e tre i campi
es, tutti i giovanni bianchi come l'ho fatta io mi trova o solo i giovanni o solo i bianchi.

<?php

$db = mysql_connect("localhost","root","");
mysql_select_db("mia", $db);

if ($nome !="")
{
$result =mysql_query("SELECT * FROM mia Where nome LIKE '$nome' " );

} else if ($cognome !=""){

$result =mysql_query("SELECT * FROM mia Where cognome LIKE '$cognome'" );
}
else {

$result =mysql_query("SELECT * FROM mia Where Id LIKE '$Id'" );
}

?>

Grazie
 
ciao
premetto che è un po' un assurdo cercare lid con LIKE, comunque vedi tu.
fai un form in cui inserisci
nome
cognome
id
e in funzione di quello che immetti esegui la ricerca

PHP:
//............
$nome=trim($_POST['nome']);
$cognome=trim($_POST['cognome']);
$Id=trim($_POST['id']);
$ricerca="";//metto la variabile a stringa vuota
//poi faccio tutte le combinazioni possibili
if($nome !="" && $cognome =="" && $Id==""){
	$ricerca="WHERE nome LIKE '$nome'";//cerco solo per nome
}elseif($nome =="" && $cognome !="" && $Id==""){
	$ricerca="WHERE cognome LIKE '$cognome'";//cerco solo per cognome
}elseif($nome =="" && $cognome =="" && $Id!=""){
	$ricerca="WHERE Id LIKE '$Id'";//cerco solo per id
}elseif($nome !="" && $cognome !="" && $Id==""){
	$ricerca="WHERE nome LIKE '$nome' AND cognome LIKE '$cognome'";//cerco per nome e cognome
}elseif($nome !="" && $cognome =="" && $Id!=""){
	$ricerca="WHERE nome LIKE '$nome' AND Id LIKE '$Id'";//cerco per nome e id
}elseif($nome =="" && $cognome !="" && $Id!=""){
	$ricerca="WHERE cognome LIKE '$cognome' AND Id LIKE '$Id'";//cerco per cognome e id
}elseif($nome !="" && $cognome !="" && $Id!=""){
	$ricerca="WHERE nome LIKE $nome AND cognome LIKE '$cognome' AND Id LIKE '$Id'";//cerco per tutti e tr i parametei
}else{//non servirebbe
	$ricerca="";//cerco tutti
}
//dati connessione
$query="SELECT mia $ricerca";
//ecc....

prova e guarda se è quello che pensavi (e se funzia)
 
Puoi risparmiare un bel po' di controlli utilizzando la seguente funzione che ricevuti in input i valori id, nome e cognome restituisce la query giusta:

PHP:
<?php
function getQuery($id, $nome, $cognome) {
	$query = "SELECT * FROM mia WHERE ";
	
	if (isset($id) && $id != "") {
		$query .= "id = $id AND ";
	} 
	if (isset($nome) && $nome != "") {
		$query .= "nome = '$nome' AND ";
	} 
	if (isset($cognome) && $cognome != "") {
		$query .= "cognome = '$cognome' AND ";
	} 
	$query .= "1 = 1";
	
	return $query;
}
?>
 
Beh, però in questa maniera si cerca ID, nome e cognome esatti, non approssimati. Potrebbe dare qualche problemino. Basta sbagliare un carattere e smette di funzionare :D

Hai ragione, ma secondo me era questo il funzionamento desiderato. In ogni caso basta sostituire l'= con LIKE per riottenere il funzionamento precedente.
 
Stato
Chiusa ad ulteriori risposte.

Discussioni simili