Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

problema afisare imagini din blob
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Subiectul anterior :: Subiectul următor  
Autor Mesaj
starter



Data înscrierii: 20/Mai/2008
Mesaje: 3

Trimis: Mar Mai 20, 2008 11:35 am    Titlul subiectului: problema afisare imagini din blob  

salut!

Am reusit sa fac upload de imagini in baza de date(in mediumBlob,chiar daca stiu ca nu e cea mai buna solutie),dar nu reusesc sa le afisez.Mentionez ca as dori sa le afisez toate redimensionate.

Acesta este codul meu:

<?php
header("Content-type: image/jpg");
$conexiune=mysql_connect("localhost","root","xxx") or die("conex er");
mysql_select_db("bazameadedate",$conexiune) or die("bd er");
$interogare="select Image from images";
$rez=mysql_query($interogare,$conexiune) or die ("interog er");
$num_row=mysql_num_rows($rez);

//aici daca dau "echo $num_row" imi afiseaza imagine binara


$i=0;
while ($i<$num_row) {
$data = mysql_result($rez, $i, "Image");
$im = imagecreatefromstring($data);
$mini=imagecreatetruecolor(175,100);
imagecopyresized($mini,$im,0,0,0,0,175,100,imagesx($im),imagesy($im));

imagejpeg($mini);
++$i;
}

mysql_free_result($rez);



?>

in tabela images am 2 campuri:'PicNum'(primary key) si 'Image'

Doar o singura imagine imi afiseaza si anume $i=0. :?: [/code]
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1781
Locație: Sibiu

Trimis: Mar Mai 20, 2008 1:31 pm    Titlul subiectului:  

Ai 2 erori de conceptie:
1. mediumblob poate retine maxim 64kB, deci o imagine mai mare de atat va fi taiata si nu va putea fi afisata cum trebuie. Pune blob (2MB) sau longblob (4GB) daca vrei limite mai mari.
2. hai sa analizam putin codul tau:
<?php
header("Content-type: image/jpg"); //asta ar trebui sa fie ultimul lucru inainte de afisarea continutului imaginii, altfel erorile de conexiune sau de interogare vor fi afisate tot cu header image/jpeg, deci binar, deci aiurea.

$conexiune=mysql_connect("localhost","root","xxx") or die("conex er");
mysql_select_db("bazameadedate",$conexiune) or die("bd er");
$interogare="select Image from images";
$rez=mysql_query($interogare,$conexiune) or die ("interog er");
$num_row=mysql_num_rows($rez);

//aici daca dau "echo $num_row" imi afiseaza imagine binara - nu cred, iti afiseaza numarul de imagini din baza de date, cu header image/jpeg, deci binar, deci aiurea.

$i=0;
while ($i<$num_row) {
$data = mysql_result($rez, $i, "Image");
$im = imagecreatefromstring($data);
$mini=imagecreatetruecolor(175,100);
imagecopyresized($mini,$im,0,0,0,0,175,100,imagesx($im),imagesy($im));

imagejpeg($mini);
++$i;
}
// deci tu ciclezi prin rezultate si apelezi imagejpeg() pentru fiecare imagine din baza de date. Mai are rost sa iti spun ca e aiurea?

mysql_free_result($rez);
?>

Hai sa iti arat cum zic eu ca ar trebui sa arate codul tau:
getimage.php
<? if (isset($_GET['img'])) $img_nr = $_GET['img']; else die('No image ID provided !'); $conexiune=mysql_connect('localhost','root','xxx') or die(mysql_error()); mysql_select_db('bazameadedate',$conexiune) or die(mysql_error()); $interogare='select Image from images where PicNum = ' . $img_nr; $rez=mysql_query($interogare,$conexiune) or die (mysql_error()); if (mysql_num_rows($rez) == 0) die('Image ID not found !'); $data = mysql_result($rez, 0); $im = imagecreatefromstring($data); $mini=imagecreatetruecolor(175,100); imagecopyresized($mini,$im,0,0,0,0,175,100,imagesx($im),imagesy($im)); header('Content-type: image/jpeg'); imagejpeg($mini); ?>

iar apelul in html se face cu <img src='getimage.php?img=4' />

Sporuri.
Sus  
starter



Data înscrierii: 20/Mai/2008
Mesaje: 3

Trimis: Mar Mai 20, 2008 6:04 pm    Titlul subiectului:  

Uimit si si foarte recunoscator pentru promptitudine.Multumesc Mihaitha!!
Dar din pacate nu am reusit sa fac nimic .
Nu am inteles: if (isset($_GET['img'])) $img_nr = $_GET['img']; --adica verificam daca a fost completat formul,daca este atasam rezultatul variabilei $img_nr,dar ce repr "img"?

Apelind getimage.php nu imi afiseaza nimic. Cu codul scris de mine am reusit totusi sa afisez o imagine.Eu as dori toate imaginile din baza de date listate (oferta magazinului meu).



O mica rectificare Mediumblob retine 2M,iar Blob 64kilo....


Multumesc inca odata mihaitha
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1781
Locație: Sibiu

Trimis: Mie Mai 21, 2008 8:58 am    Titlul subiectului:  

OK, daca vrei toate imaginile din baza de date, va trebui sa parsezi id-urile (campul PicNum in cazul tau) si sa apelezi getimage.php pentru fiecare. Nu ai cum sa afisezi toate imaginile in acelasi apel.
Sus  
starter



Data înscrierii: 20/Mai/2008
Mesaje: 3

Trimis: Vin Mai 23, 2008 5:54 pm    Titlul subiectului: REZOLVAT  

Multumesc!
Rezolvat!
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community