PDA

View Full Version : سوال: راهنمایی در مورد تغییر ساختار دیتابیس و کد های php سایت



mokhtasatxyz
دوشنبه 14 دی 1394, 10:24 صبح
سلام
در سایتی کاربران می توانند در هنگام ثبت رکورد و داده خود یک عکس را هم به عنوان داده، ارائه و آپلود کنند و در ساختار db هم فیلد نام فایل جزء دیگر رکورد ها طراحی شده است
حال قصد دارم که در صورتی که کاربر در فرم ورود اطلاعات، گذینه خاصی را انتخاب کرد، کاربر بتواند به جای یک عکس ، چند عکس را ارائه دهد
برای چنین کاری
1 - بهینه ترین تغییر در ساختار db چیست؟
2 - در کد های فرم - php - دریافت و آپلود فایل چه تغییراتی باید بدهم؟
3 - لطفا اسکریپتی برای نمایش عکس های ارائه شده رکورد انتخابی در صفحه سایت معرفی کنید.(چیزی شبیه به فروشگاه ها و آگهی نامه ها در زمان انتخاب یک محصول آگهی)
ممنون

arash_fa
دوشنبه 14 دی 1394, 10:57 صبح
یک جدول از رکورد ها نیاز دارید که بخش عکس آن را int بگذارید
یک جدول هم مثلا به نام attachments درست کنید حاوی 3 بخش
id
parent_id
img

حال در هنگام ثبت رکورد شما باید مثلا این کار را بکنید


if( ($insert_id = mysql_query(' INSERT INTO `MY_RECORD_TABLE` SET name="'.$name.'",email="'.$email.'",........ ')) ){

foreach($imgs as $img){
mysql_query(' INSERT INTO `MY_ATTACHMENT_TABLE` SET img="'.$img.'",parent_id="'.$insert_id.'" ');
}

}

در بخش html کار هم اینپوت انتخاب فایل را آرایه ای قرار بدید یعنی:


<input type="file" name="imgs[]" />
در این روش ابتدا رکورد ثبت میشود و سپس عکس یا عکسها در جدولی وجزا ذخیره میشوند و parent_id معلوم میکند این عکس یا عکس ها مربوط به چه رکوردی است.


برای نمایش گالری وار تصاویر هم از colorbox jquery استفاده کنید

yeganemehr
دوشنبه 14 دی 1394, 11:38 صبح
سلام
1. ارسال فایل ها رو از طریق html بصورت آرایه کنید.

<input type="file" name="imgs[]" />

2. فایل ها رو دریافت، اعتبار سنجی و ذخیره کنید.


<?php
print_r($_FILES);
?>

3.
الف) اگر نیاز به جستجو و مدیریت اطلاعات بصورت حرفه ای دارید از روش دوستمون برید:
"ستون مربوط به نام فایل رو از جدول اطلاعاتتون حذف کنید، جدول جدیدی با ستون های id(Auto Increment) ,filename(varchar 100), parent(int) ایجاد کنید و بعد از اعتبار سنجی و ذخیره اطلاعات در دیتابیس،ID مربوط رو دریافت کنید(mysqli_insert_id (http://ir1.php.net/mysqli_insert_id))، سپس هر فایل رو در جدول جدید ذخیره کنید."
ب) اگر نیازی به جستجو حرفه ای ندارید وصرفا میخواید اطلاعات در دیتابیس ذخیره بشه، آرایه ای از نام فایل ها ایجاد کنید، نوع ستون نام فایل در جدول اطلاعاتتون رو از varchar به string تغییر بدید، سپس آرایه رو با ساختار json در ستون مربوط ذخیره کنید.(json_encode (http://ir1.php.net/json_encode)) و در زمان مورد نیاز با استفاده از json_decode (http://ir1.php.net/json_decode) اطلاعات رو بازیابی کنید.