PDA

View Full Version : مشکل با این کد insert و select کردن عکس از دیتابیس



djscsi
یک شنبه 24 مرداد 1389, 00:16 صبح
دوستان من برا insert این کد

$img = chunk_split(base64_encode(file_get_contents(@$_FIL ES["img"]['tmp_name'])));
$sql = "INSERT INTO `user` (`img`) VALUES ('$img')";
$result = mysql_query($sql) or die(mysql_error());
if (!$result)
return ' cannot insert.';

برای select این کد رو نوشتم ممنون میشم ایرادم رو بگیرید

$res=mysql_query("SELECT * FROM `user`");
if(!$res) echo "can not";
$n=mysql_num_rows($res);

echo "<center><table width=70% >";
echo "<tr bgcolor=gray><td>id</td><td>image</td></tr>";
for($i=0;$i<$n;$i++)
{
$d=mysql_fetch_row($res);
echo "<tr><td>$d[0]</td>";
echo "<td><img src=img.php?id=$d[0] width=30 height=30></td></tr>";
}
echo "</table></center>";
و در صفحه img.php


<?php

header('Content-type: image/jpg');
$query = "CONVERT(`user`.`img` USING utf8) where id=". $_GET['id'];
$rs = mysql_fetch_array(mysql_query($query));
return base64_decode($rs["img"]);
?>
ممنون

bestirani2
یک شنبه 24 مرداد 1389, 04:37 صبح
دوستان من برا insert این کد

$img = chunk_split(base64_encode(file_get_contents(@$_FIL ES["img"]['tmp_name'])));
$sql = "INSERT INTO `user` (`img`) VALUES ('$img')";
$result = mysql_query($sql) or die(mysql_error());
if (!$result)
return ' cannot insert.'; برای select این کد رو نوشتم ممنون میشم ایرادم رو بگیرید

و در صفحه img.php


<?php

header('Content-type: image/jpg');
$query = "CONVERT(`user`.`img` USING utf8) where id=". $_GET['id'];
$rs = mysql_fetch_array(mysql_query($query));
return base64_decode($rs["img"]);
?>ممنون
ایرادت از چه نظر؟

mojtaba00
یک شنبه 24 مرداد 1389, 11:22 صبح
دوست عزیز . اول اینکه ذخیره عکس تو دیتابیس کلا کار اشتباهیه. تو می تونی آدرس عکس رو ذخیره کنی. ولی سیاست کارت به خودت مربوطه. تو نباید از Convert استفاده کنی. چون که از base6_encode استفاده کردی و تابع base64_decode اطلاعات رو به شکل اولش بر میگردونه .

بعدشم اینکه تو از header که نوع نمایش رو عکش نشون می ده استفاده کردی، تو که اطلاعات رو retrurn کردی . استفاده از header هم اینجا نیاز نیست . header رو جایی استفاده می کنن که بخوان عکس رو در مرورگر نشون بده.

برای نشون دادن عکس هم تو مرورگر با استفاده از اطلاعات دیتابیس نباید مستقیم اونو بفرستی به مرورگر ( حتی با استفاده از header) تو باید یه فایل ایجاد کنی که با استفاده از header عکس رو به عنوان خروجی می فرسته . ولی جایی که می خوای عکس خروجی اون فایل نمایش داده بشه باید بنویسی

<img src="somfile.php" alt="" />

یعنی خروجی اون فایل تو عکس نمایش داده بشه . نه مستقیم تو مرورگر .
امیدوارم تونسته باشم کمکت کنم.

djscsi
یک شنبه 24 مرداد 1389, 15:11 عصر
ممنون از راهنماییت ولی هر کاتری کردم نشد.
ممنون میشم لطف کنی و این تغییرات رو خودت روی کد انجاام بدی و بزاری اینجا
البته در مورد این قسمت حرفت فکر کنم منمم همین کار رو کردم
...................
برای نشون دادن عکس هم تو مرورگر با استفاده از اطلاعات دیتابیس نباید مستقیم اونو بفرستی به مرورگر ( حتی با استفاده از header) تو باید یه فایل ایجاد کنی که با استفاده از header عکس رو به عنوان خروجی می فرسته . ولی جایی که می خوای عکس خروجی اون فایل نمایش داده بشه باید بنویسی
کد PHP:
<img src="somfile.php" alt="" />
یعنی خروجی اون فایل تو عکس نمایش داده بشه . نه مستقیم تو مرورگر .
..................
به جای somfile.php صفحه من اسمش img.php و تمام کدی که تو این صفحه نوشتم همون چند خطیست که اینجا گذاشتم

bestirani2
یک شنبه 24 مرداد 1389, 15:40 عصر
اگه از mysqli استفاده کنی یک تابع mysqli_stmt_send_long_data() داره که با کمک این میتونی اطلاعات blob را وارد کنی