Davood
4 سال پیش توسط Davood مطرح شد
14 پاسخ

ذخیره همزمان چند عکس در دیتابیس با pdo

تو رکورد های جدول میشه چند تا عکس با همذخیره کرد مثلا 10 عکس
@hesammousavi
@ali.bayat


ثبت پرسش جدید
الیاس سخاوتی نیا
تخصص : علاقه‌مند به برنامه‌‎نویسی
@elyassir 4 سال پیش آپدیت شد
0

آپلود همزمان چند عکس بله میشه
ولی خب برای هر عکس یه رکورد جدا در نظر بگیرین بهتره (برای ویرایش و...)
البته کامل توضیح ندادین میخواین چیکار کنین

این کد رو نگاه بندازین
https://makitweb.com/upload-multiple-image-files-to-the-database-using-pdo-php


Davood
تخصص : PHP - Laravel
@dfardabasi 4 سال پیش آپدیت شد
0

نمیتونم تو چند تا رکورد بذارم چون من میخوام مث وب سایت های خبری گزارش تصویری بذارم تو سایت که مثلا 10 تصویر کنار هم میذارن ولی مربوط به یک خبره

اگه بخواد هر عکس تو یه سطر باشه خوب من خبرو چطوری ثبت کنم؟؟

یا مثلا چطوری همزمان تو تیبل news و photo جوری مطلب ثبت کنم که تو تیبل news مطلب یک بار ثبت شه و 10 تا تصویر توی تیبل photo

@elyasbeshkani


الیاس سخاوتی نیا
تخصص : علاقه‌مند به برنامه‌‎نویسی
@elyassir 4 سال پیش مطرح شد
0

@dfardabasi

آها اونجوری فکر کنکم از ویرایش گر هایی مثل ckeditor و یا tinymce استفاده میکنن که متن خبر رو به صورت یه کد html ذخیره میکنه
حالا این کد داخلش متن هست، عکس هست و...


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

جدول news رو که دارید
شما نیاز به یه جدول ساده دارید برای این کار. (photos)

جدول photos شما میتونه ۲ تا فیلد داشته باشه

  • Image Path
  • news_id

بعد در حین دریافت خبر id رو که داری کوئری میزنی و تمام عکس هایی که چنین news_id رو دارند، رو از دیتابیس میگیری


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
1

در کل به ازای هر عکس میتونید یه سطر به جدول photos اضافه کنید.

بعضی توسعه دهنده ها هم میاند و برای هر خبر، یک سطر اضافه میکنند و آدرس عکس ها رو با یه کاراکتر از هم جدا میکنند

photo1.jpg:photo2.png:photo3.bmp

و با توابعی مثل explode عکسها رو از هم جدا میکنند و میریزند توی یه آرایه

من روش اول رو ترجیح میدم


الیاس سخاوتی نیا
تخصص : علاقه‌مند به برنامه‌‎نویسی
@elyassir 4 سال پیش مطرح شد
0

@ali.bayat

یعنی اگه یه وبلاگ داشتیم باشه که داخل پست هاش عکس و متن هست
مثلا همین قسمت مقالات راکت
باید اینجوری ذخیره کنیم؟
متن1
عکس1
متن2
عکس2
و...
یا اینکه باید از ویرایش گرهایی مثل ckeditor و یا tinymce استفاده کنیم که متن خبر رو به صورت یه کد html ذخیره میکنه و ما همونو چاپ کنیم؟
روش اصولیش چیه؟


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 4 سال پیش آپدیت شد
1

@elyasbeshkani
این روشی که اقای بیات فرمودند مربوط به سوال اون دوستمون بود که درباره گالری برای خبر اشاره کردن، شما روشی که میفرمایید مربوط به ثبت مقاله یا خبر یا هرچیز دیگه ی هست و بهترینش هم استفاده از ckeditor و ادیتورهای دیگه هست که خودشون فایل ها رو اپلود میکنن روی هاست و اطلاعاتشون تویی دیتابیس بصورت html ذخیره میشه.


Davood
تخصص : PHP - Laravel
@dfardabasi 4 سال پیش مطرح شد
0

@ali.bayat
روش اولی که گفتید عالیه و خوب راحت هم میتونم تو سایت نمایش بدم
اما چطوری همزمان ثبت کنم تو دو تا تیبل
مثلا من من view 6 تا فیلد داره

عنوان نویسنده تصویر متن خبر دسته بندی که باید تو جدول نیوز ثبت بشن
یه فیلم multiimage هم تو همون فرمه که عکساش باید تتیبل photos بره
اینو چطوری ثبت کنم؟


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

@dfardabasi

بعد از ذخیره فیلدهای news میتونی به صفحه جدیدی ریدایرکت کنی و id خبر رو هم بفرستی
در اون صفحه id رو که داری .. کارهای مربوط به آپلود عکس رو انجام میدی.
نام فایل و id خبر رو در جدول photos ذخیره میکنی


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
1

@elyasbeshkani
همونطور که اقای موسوی هم گفتن .. پاسخ من برای اون سوال اول بود.

در مورد بلاگ بهتره که از ادیتورهایی مثل ckeditor و یا کلا از Markdown استفاده کرد.


Davood
تخصص : PHP - Laravel
@dfardabasi 4 سال پیش آپدیت شد
0

ببخشید یه سوال دیگه هم دارم این کد رو الان من دارم

public function multiupload($files,$dir){
        if(!empty($files['name'][0])){
            $allowed = array("jpg","png","jpeg","gif");

            foreach($files['name'] as $position=>$file_name){
                $file_tmp = $files['tmp_name'][$position];
                $file_size = $files['size'][$position];
                $file_ext = explode(".",$file_name);

                if(in_array($file_ext,$allowed)){
                    if($file_size <= 2097152){
                        $file_name_new = uniqid('',true) . '.' . $file_ext[1];
                        $path = "upload/" . $file_name_new;
                        if(move_uploaded_file($file_tmp,$path)){
                            echo  "yes";
                        }
                    }else{
                        echo "متن ارور";
                    }
                }else{
                    echo "متن ارور";
                }

            }
        }
    }

توی فایل هر چند تا عکسی که بخوام رو برام آپلود میکنه 5 10 15
اما نمیتونم آدرس فایل ها رو برگردونم به کنترلر که ثبتش کنم تو دیتابیس چکار باید بکنم؟

@ali.bayat
@hesammousavi
@elyasbeshkani
@juza66


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 4 سال پیش مطرح شد
0

ادرس فایل ها رو بصورت ارایه داری میتونی توش MAP کنی یا با حلقه اطلاعات ارایه رو دونه به دونه داشته باشی و جایی ذخیره کنی یا همون ارایه رو ذخیره کنی و موقع نمایش با حلقه ی اطلاعات رو چاپ کنی

$files['name']

Davood
تخصص : PHP - Laravel
@dfardabasi 4 سال پیش مطرح شد
0

@juza66

اینو تست کردم ارسال کنم به کنترلر میاد اما اسم ائلیه خودشون یعنی همون هش نشده میاد اگه از

$files['name'] 

استفاده کنم ممکنه اسم عکسا تکراری در بیاد و بزنه قبلیا رو پاک کنه من میخوام مثل متغییر file_name_new تک تک هش شده بیان ثبت کنم


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 4 سال پیش آپدیت شد
0

خب گفتم به دو صورت میتونی ارایه رو دونه به دونی بخونی، اولیش با متد map

$file = array("file1","file2","file3");

function myfunction($file_url)
{
    //کدهات رو اینجا بنویس
    return $file_url;
}

array_map("myfunction",$file)

یا با حلقه foreach

foreach($array as $i => $item) {
  //کدهات رو اینجا بنویس
    // $array[$i] is same as $item
}

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام