18

كيف تحلها برمجياً ؟

لديك موضوع له id معين و فى داخل الموضوع يوجد تعليقات و إمكانية إدراج مرفقات أثناء كتابة التعليق

لا أريد إستخدام multipart لأقوم بالتحميل عبر Post

أقوم بعملية رفع المرفقات عن طريق iframe مخفى و jquery

لدى فى قاعدة البيانات جدول للمرفقات و به خانة attach_comment_id تحتوى رقم التعليق المرتبط بالمرفقات لتظهر أسفله عند عرضها

تتم عملية رفع المرفق قبل أن أضغط حفظ ال comment و بالتالى ال comment لم يأخذ بعد comment_id

هذه المشكلة كانت تواجهنى من قبل و كنت أحلها بطريقة أخرى وهى إضافة row فارغ أولاً فى قاعدة البيانات ليأخذ id و من ثم أقوم بتحويل المستخدم إلى صفحة Edit لهذا ال row مرسلاً فى العنوان id الموضوع لأستخدامه فى حفظ المرفقات و لكن ذلك فى حالة إنشاء موضوع جديد أو ما شابه , أما فى حالة التعليقات لا يمكن ذلك , فهل من حل ؟


15

يخطر ببالي في هذه اللحظة حل بسيط لهذه المشكلة, يمكنك ايجاد غيره اذا اعطيت المشكلة وقت أطول في التفكير

وهو قيامك بارجاع id للمرفق الذي قمت بتحميلة وحفظه في hidden field

وعند ادراجك للتعليق تقوم بارجاع قيمة id الخاصة بالتعليق وبعدها تبحث عن المرفقات عن طريق id الموجود في hidden field وتقوم بعمل update للقيمة

من ناحية اخرى اعتقد انه يمكنك عمل virtual directory للملفات التي يقوم المستخدمين برفعها ولم يتم ادراج التعليق الخاص بها حتى الان ليتم نسخة الى الملف المعني لاحقا مع انشاء text file يتضمن اسماء الملفات وال ip الخاص بكل ملف داخل virtual directory ليتم التعامل على اساسه لاحقا بعد ادراج التعليق, اعتقد ايضا ان هذه الطريقة ستحافظ على قاعدة البيانات لديك نظيفة اكثر من غيرها

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

لماذا ترفع قبل التعليق؟

على تويتر لا يتم ذلك.

لأنه من البديهى أنك تكتب الرد و تضع المرفق و تضغط حفظ , هذا ما تعودنا عليه :)

على تيوتير الجافا سكربت توحي لك بان الملف تم رفعه باظهار صورة مصغرة، لكنه فعليا لا يتم ذلك إلا بعد ادراج التعليق (التغريدة) استعمل حيلة.

HTML5 أظن , سأرى الحيل الممكنة :)

جرب الطريقة الاخرى Virtual Directory اذا كنت تبحث عن نظام نظيف, كما ذكرت مسبقا يمكنك عمل ملف سواء كان txt او xml تضع فيه بيانات كل ملف, ومن الممكن انشاء service للقيام بتنظيف محتويات المجلد بناء على المعلومات المتوفرة بالملف عن كل ملف

تقصد temporary directory . و لكن المشكلة التى أواجهها هنا هى نقل الموقع لسيرفر آخر و نسيان تفعيل service تنظيف محتويات المجلد و تراكم هذه الملفات لتزحم السيرفر و خاصة بعد تسليم الموقع للعميل , ولكن إلى الآن هذا هو أفضل حل ممكن

يمكنك اضافة Function ال Service كخيار اضافي في لوحة التحكم للمدير