كيف يمكن حفظ مجموعة من البيانات في حقل واحد مع إمكانية التعديل على هذه المجموعة لاحقا كالحذف أو الزيادة ؟


التعليقات

ابسط طريقة ماقاله لك اخي khashabawy مع توضيح اكثر

أن تحفظها بصيغة JSON OBJECTS مثل كذا:

    {
        "name": "Products",
        "img_path": "default.jpg"
    }

ويكون الحقل في قاعدة البيانات من نوع TEXT

كذلك عند جلبها تستخدم تحولها الى array (مصفوفة) من دالة موجودة في PHP

مثال: نفترض انك استدعيت بيانات الحقل من قاعدة البيات وحفظتها في متغير اسميته

         $products

فتستخدم دالة json_decode لتحويلها الى مصفوفة

    $converted_to_array = json_decode($products, true);

احفظها على شكل json encoded array مثل هذه

سأذكر لك طريقة أتبعها في سي شارب وأنت قس على ذلك إن كان يوجد ما يقابلها في PHP

أنا عادة أستخدم فئة معدلة عن الفئة Dictionary واسمها SerializableDictionary وذلك لأن الفئة القياسية ليست قابلة للتحويل إلى سلسلة

أما المعدلة فقد تم إضافة هذه الإمكانية

ثم أتعامل مع المتغير من النوع الأخير لكونه يحوي مصفوفة أزواج (مفتاح ، قيمة) وعند الحاجة لاستخدامها كقيمة واحدة سواء للحفظ في الإعدادات أو أي مكان أقوم بتحويلها من خلال العملية Serialize فتتحول إما لسلسة نصية String أو XML حسب المراد

وعند القراءة أقوم بالعملية المعاكسة فيقرأ القيمة الواحدة ويحولها إلى مصفوفة أزواج

احفظها داخل مصفوفة ومن ثم استخدام serialize وخزنها داخل قاعدة البيانات مثال :

$arr = array(1,2,3);
$string = serialize($arr);
$newarr = unserialize($string);

استخدام دالة unserialize لإعادتها كمصفوفة من جديد.

احفظها بمصفوفة

يمكنك ادخالها كجمله و احده و ان تفصل بين كل كلمه باي رمز تريد ( , او / او & )

وعند استخراجها من قاعده البيانات قم بحفظها في متغير و ليكن $data

ثم قم باستخدام داله explode لتقطيعها في مصفوفه

explode ( ',' , $data ) ;

اتمني ان تكون قد وصلتك الفكرة . هناك اكثر من طريقة اخي الفاضل

للحفظ حول مصفوفة البيانات الي json عبر الجمله التاليه:

$data = json_encode($_POST)

للبحث في البيانات : $data = json_decode($_sql_col_data) foreach($data as $d) { if(preg_match('//',$d) { return true; } return false; }

لماذا تريد ان تفعل هذا ؟

هذه طريقة خاطئة لفعل اي شيء

ليست خاطئة. تستخدم بالفعل. وسؤاله جيّد. قد تكون لم تصل الى مرحلة احتياجها بعد (لذا تعتقد انها خاطئة) هي تستخدم بالفعل وليست خاطئة.

ما هي أسباب إستخدامها ؟

أو ما سبب الذي يدعو لذلك ؟

لما حكمت عليها خاطئة فقد تضطر لها في أماكن معينة

أنا أحتاجها مثلا في سي شارب لحفظ مجموعة قيم في سجل الإعدادات وهو لا يقبل إلى فئات قابلة للتحويل إلى قيمة وحيدة إما نصية أو XML

نعم طريقة خاطئه لأن ال Delimiter المستخدم لفصل العناصر قد يكون يحتوى على نفس الرمز المستخدم لعملية ال Explode و ال join و هو ما يربك النواتج و يجعلها غير صحيحه

حتى لو استخدمت delimiter صعب تكراره كأن يكون @%& مثلاً و لكن هناك احتمال ولو 0.00001% لحدوث ذلك

إلا إذا كنت تقوم بتخزين بيانات تعرف نوعها مسبقاً كأرقام مثلاً و تقوم بعمل check على كل منها قبل عملية تمريرها إلى المصفوفه التى ستقوم بعمل Join لها

فأنا أستخدم هذه الطريقة مثلاً عند تخزين قيمة ال ids الخاصة بعناصر أقوم بترتيبها بال Drag and drop و ال ids هنا قيمة رقمية و قبل اعتمادها يجب أن أمررها على دالة للتأكد أنها رقمية

اشكركم جميعا على ردودكم ، لقد استفدت منها أيما استفادة جزاكم الله خيرا