 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| 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: 1383
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: 1383
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 |
|
| |
|