PDA

View Full Version : نشان دادن تصاویر



jalaladdin
چهارشنبه 28 دی 1390, 10:39 صبح
چگونه میتوان عکسهای که در پایگاه داده ذخیره کردم رابیرون بکشم و با tumbnail نشان بدم
البته آدرس عکسه در پایگاه داده ذخیره کردم و خود عکسها در یک پوشه میباشد

MMSHFE
چهارشنبه 28 دی 1390, 11:08 صبح
دو راه حل دارین:
1- خود تصاویر رو با اندازه کوچکتر نمایش بدین
2- واقعاً برای تصاویر، فایل thumbnail بسازید
راه اول، سرعت اجرای اسکریپت شما رو بیشتر میکنه ولی درعوض، سرعت بارگذاری صفحه کاهش خواهد یافت چون همون تصاویر اصلی با حجم بالا باید بارگذاری بشن و فقط با اندازه های کوچکتر نشون داده میشن.
در هر حال، من فرض کردم تصاویر در پوشه images هستن و جدولی به نام gallery دارین که آدرس تصاویر (درواقع نام فایل تصاویر) توی فیلد filename اون ذخیره شده. ضمناً نام دیتابیس، نام سرور، نام کاربری و رمز عبور هم فرضی هست.
کد راه اول:


mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query('SET NAMES \'utf8\');
$images = mysql_query('SELECT * FROM `gallery` ORDER BY `id`');
if($images && mysql_num_rows($images) > 0) {
while($image = mysql_fetch_assoc($images)) {
echo '<a href="images/'.$image['filename'].'" target="_blank">';
echo '<img src="images/'.$image['filename'].'" style="height: 240px; width: 320px;"/>';
echo '</a><br/>'."\n";
}
mysql_free_result($images);
}

کد راه دوم (ابتدا یک پوشه بنام thumbs در کنار پوشه images بسازید) :


mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query('SET NAMES \'utf8\');
$images = mysql_query('SELECT * FROM `gallery` ORDER BY `id`');
if($images && mysql_num_rows($images) > 0) {
while($image = mysql_fetch_assoc($images)) {
$src = imagecreatefromjpeg('images/'.$image['filename']);
$dst = imagecreatetruecolor(320, 240);
imagecopyresized($dst, $src, 0, 0, 0, 0, 320, 240, imagesx($src), imagesy($src));
if(file_exists('thumbs/'.$image['filename']) {
unlink('thumbs'/.$image['filename']);
}
imagejpeg($dst, 'thumbs/'.$image['filename'], 100);
imagedestroy($src);
imagedestroy($dst);
echo '<a href="images/'.$image['filename'].'" target="_blank">';
echo '<img src="thumbs/'.$image['filename'].'"/>';
echo '</a><br/>'."\n";
}
mysql_free_result($images);
}

نکته اصلی اینه که در راه دوم، باید توسعه GD2 فعال باشه. برای اینکار، php.ini رو باز کنید و خط زیر رو توش پیدا کنید:
extension=php_gd2.dll
و اگه اول خط ; داشت، اون رو حذف کنید و فایل رو ذخیره کنید و یک بار Apache رو Restart کنید.
موفق باشید.

jalaladdin
پنج شنبه 29 دی 1390, 11:09 صبح
چگونه میتوان عکسهای که در پایگاه داده ذخیره کردم اولویت بندی کنم

jalaladdin
پنج شنبه 29 دی 1390, 11:23 صبح
بر فرض 5 تا عکس در پایگاه داده ذخیره کردم برای جابجایی عکس چگونه کد بنویسم

MMSHFE
پنج شنبه 29 دی 1390, 12:17 عصر
یک فیلد order به جدول تصاویر اضافه کنید و بعد، قسمتی از کد که نوشته:

SELECT * FROM `gallery` ORDER BY `id`

رو بصورت:

SELECT * FROM `gallery` ORDER BY `order`

تغییر بدین. حالا کافیه توی فیلد order ترتیب رو مشخص کنید.
موفق باشید.

jalaladdin
دوشنبه 03 بهمن 1390, 07:40 صبح
با این دستور نمیتوان ترتیب عکسها بصورت دستی مشخص کرد

MMSHFE
دوشنبه 03 بهمن 1390, 07:56 صبح
چطور نمیشه؟ کافیه توی فیلد order که گفتم، ترتیب دلخواه رو مشخص کنیم. موفق باشید.

jalaladdin
پنج شنبه 06 بهمن 1390, 08:54 صبح
با این توضیحات شما فقط تصویر بهمراه شماره آن از پایگاه داده بیرون کشیدم
وقتی آدرس عکس تصویر در پایگاه داده ذخیره میکنم فیلد order خالی است
برای فیلد order هم باید مقدار پیش فرض داد؟

tux-world
پنج شنبه 06 بهمن 1390, 09:13 صبح
بلی باید برای اون مقدار بدید اگه می خوایید بر اساس چیزی که تو دیتابیس ذخیره شده عمل کنید

jalaladdin
پنج شنبه 06 بهمن 1390, 10:58 صبح
حالا برای فیلد order=1 مقدارپیش فرض قرار دادم چگونه این مقدار تغییر و در پایگاه داده ذخیره کنم تا تصاویر جابجا شود من میخوام جای عکس 1و2 تغییر بدم

jalaladdin
جمعه 07 بهمن 1390, 09:18 صبح
لطفا راهنمای کنید

mbf5923
جمعه 07 بهمن 1390, 10:15 صبح
این Order که دوستان گفتن برای عوض کردن جای 2تا عکس نیست
فرض کنید شما 10تا عکس توی دیتابیس دارین در نتیجه Order عکس اول شما 1 و آخرین 10 هستش حالا شما اگه بخواین عکس ها را از آخر به اول نمایش بدین میتونید از فیلد Order کمک بگیرین

MMSHFE
جمعه 07 بهمن 1390, 11:05 صبح
دوست عزیز، فیلد order که گفتم، مقدار پیشفرض و... نداره. باید توی این فیلد، ترتیب عناصر رو مرتب کنید. مثلاً اگه ده تا رکورد دارین و توی فیلد order اینطور مقداردهی کنید:
1
5
4
3
8
9
10
7
6
2
تصاویر به این ترتیب ظاهر میشن:
1- رکورد اول
2- رکورد دهم
3- رکورد چهارم
4- رکورد سوم
5- رکورد دوم
6- رکورد نهم
7- رکورد هشتم
8- رکورد پنجم
9- رکورد ششم
10- رکورد هفتم
البته به شرطی که از `ORDER BY `order استفاده کنید.
موفق باشید.