راکت

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

14 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

14
الیاس سخاوتی نیا
الیاس سخاوتی نیا
@elyassir

تخصص: علاقه‌مند به برنامه‌‎نویسی

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

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

Davood
Davood
@dfardabasi

تخصص: PHP - Laravel

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

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

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

@elyasbeshkani

شاید پاسخ شما همین‌جا باشد

الیاس سخاوتی نیا
الیاس سخاوتی نیا
@elyassir

تخصص: علاقه‌مند به برنامه‌‎نویسی

@dfardabasi

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

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

  • Image Path
  • news_id

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

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

photo1.jpg:photo2.png:photo3.bmp

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

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

الیاس سخاوتی نیا
الیاس سخاوتی نیا
@elyassir

تخصص: علاقه‌مند به برنامه‌‎نویسی

@ali.bayat

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

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

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

Davood
Davood
@dfardabasi

تخصص: PHP - Laravel

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

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

@dfardabasi

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

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

Davood
Davood
@dfardabasi

تخصص: PHP - Laravel

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

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

تخصص: سی شارپ و پی اچ پی

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

$files['name']
Davood
Davood
@dfardabasi

تخصص: PHP - Laravel

@juza66

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

$files['name'] 

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

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

خب گفتم به دو صورت میتونی ارایه رو دونه به دونی بخونی، اولیش با متد 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
}

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

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