مشكل php لمعالجة طلب عن طريق ajax

السلام عليكم ورحمة الله

اقوم ببرمجة سكريبت محتوى المشكل الدي واجهنني مثلا يوجد في الادارة الصفحات التالية

اضافة موضوع

تعديل موضوع

الرسائل وتنبيهات

التحكم بالاعضاء

اعدادات الموقع

اريد معالجة هده الصفحات عن طريق ajax هل يجب ان اعمل لكل صفحة صفحة لمعالجة البيانات القادمة منها ام هناك طريقة عملية

اخرى لا تحتاج عمل لكل صفحة صفحة اخرى لمعالجة البيانات


megasoft أضف ردا

تستطيع عمل صفحة واحدة تضع فيها كل المعالجات وذلك بوضع شرط switch case

للبيانات المرسلة لقراءة نوع المعالجة التي سيتم تنفيذها فمثلا

لديك تعديل مستخدم واضافة مستخدم .تستطيع وضعهم في ملف واحد وتضع شرط سواء باستخدام if او switch كما اسلفت الذكر

ثم في استعلام اجاكس ترسل متغير او قيمة لاخبار الملف بنوع المعالجة التي تريدها

يعني

الاستعلام سيحتوي على :

-بيانات المستخدم الجديدة او التعديلات

-متغير مثلا اسمه request تضع فيه نوع المعالجة

مثلا لاضافة مستخدم تضع request="add"

لتعديل مستخدم تضع request="edit"

بعدها الملف يستقبل القيم المرسلة بالاجاكس

ويقوم بقراءة request اولا لمعرفة نوع المعالجة التي سيقوم بعملها ثم يقوم بتنفيذها

هذه طريقة استعملتها وقد افادتني كثيرا ربما تجد هنا بعض الاخوة يعطيك طريقة افضل تكون عملية وتختصر عليك

يعني نفس المشكل لكل صفحة نعمل صفحة اخرى للمعالجة عندما جربت معالجة ب ajax في نفس الصفحة data التي تعود يوجد بها ايضا اكواد html وليس فقط php

كما قلت لك ادا كان مثلا عندي 4 صفحات فهل يجب وضع 4 صفحات اخرى لمعالجة عن طريق php نفترض اريد عمل صفحة اضافة عضو صفحة ستكون فيها اكواد html للفورم

وصفحة اخرى لمعالجة البيانات وارسالها الى القاعدة مشكل سيصبح عدد الصفحات كثيرة ادا كانو 10 صفحات يلزم 10 اخرى للمعالجة

يوسف سيد أضف ردا

لما لا تستخدم RESTful API؟ عندك أربعة أنواع للطلبات في HTTP [GET, POST, DELETE, UPDATE] يمكنك استخدامها بدلًا من ارسال حقلًا جديدًا، بالنسبة للتنبيهات لصاحب الموضوع إقراء هذا الموضوع عن SSE:

صحيح

في الحقيقة نسيتها

بالرغم اني استعملتها في فريمورك لارافيل قبل عدة ايام

شكرا لك اخي على مقال شرح تقنية sse

لكن هل لديك فكرة عن كيفية استعمالها في لارافيل؟

منذ مدّة طويلة لم أكتب مشروعًا بلغة PHP، وخصوصًا Laravel، أتذكر أني فعلتها مرة، عمومًا الفكرة لا تختلف كثيرًا عن دالة تكرار وإرسال بيانات متتابعة، ضع الشيفرة الخاصة بالتكرار في الموجه بدون إعادة قيمة:

function SSE() {
    header("Content-Type: text/event-stream");
    header("Cache-Control: no-cache");

    while(true) {
        echo "data: a notification".PHP_EOL;
        echo PHP_EOL;

        ob_flush();
        flush();

        sleep(1);

        // return لا ترجع قيمة
    }
}

عندما فعلت ذلك كنت بحثت ولم أجد دعمًا لSSE مبني بالإطار، إبحث وإن لم تجد استخدم شيء كالسابق.

شكرا جزيلا لك اخي

لكن ما رأيك باستخدام nodejs وsocketIO هل جربتها من قبل؟

يوسف سيد أضف ردا

ذكرت ذلك في المقال WebSocket، وsocketIO يستخدمها إن توّفر دعمها في المُتصفح. عمومًا استخدمتها من قبل في مشروعٍ ما لأحد العملاء في صندوق التواصل، أفضل في بعض النقاط مثلًا إن أردت إستلام رسائل من المستخدمين مع ارسالها. المشكلة في مشروع تجاري سيباع لعددًا من المستخدمين يجب أن تستخدم PHP لتعمل على الإستضافات المشتركة(مشاريع كقالب ووردبريس، سكربت ما) -وهي لغة مرقعة حقًا، لم أعد استخدم PHP في المشاريع التي أصنها للمستخدمين أفضل استخدام Go للBack-End API Server، وNodeJS للFront-End Server؛ -تفضيل شخصي- لكي استخدم React مثلًا والتقنيات الحديثة بحرية، مثلًا في الخادم أجعله يولد ملفات HTML ثابتة من أجل محركات البحث، والمستخدم إن عطل JavaScript، لكي استعملها بدون خوف من العمل بشكل غير صحيح.

وهل go مدعومة من طرف الاستضاافات المشتركة؟

لا، Go لغة مجمعة Native ليست لغة نصيّة، ترفع الملف النهائي التنفيذي .exe(مثلًا في ويندوز) إلى الخادوم.