اذهب إلى المحتوى

Adnane Kadri

الأعضاء
  • المساهمات

    5232
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    52

كل منشورات العضو Adnane Kadri

  1. استعمال أحد الحقول radio وcheckbox و select يحدده في الغالب نوع البيانات المتعامل معه ومنطقنا في تبسيط هاته البيانات له. يختلف طبعا تعاملك مع هاته البيانات او طريقة هيكلتك لها، ولكن عموما نعتمد كل نوع من أنواع هاته الحقول: radio عند التعامل مع بيانات من نوع enum، فعند تحديد جنس المستخدم مثلا نعتمد هذا النوع checkbox عند التعامل مع بيانات من نوع boolean، فعند التحقق من موافقة المستخدم على شروط الاستخدام نعتمد هذا النوع حقل select يستعمل عند التعامل مع بيانات من نوع enum أو عند تحديد قيم لمفاتيح اجنبية. مثال: عند تحديد فئة المنتج نعرض قائمة select بها خيارات الفئات التي نريد الاختيار من بينها طبعا فإن هذا هو الاستعمال العام لها، قد يختلف بحسب حاجات المستخدم أو حالات الاستخدام.
  2. يحدث هذا في الغالب بسبب التقاط ملفات العروض كملفات مؤقتة خصوصا في بيئة انتاجية، أظنك ستحتاج كل مرة تقوم فيها بتعديل ما بمحو التخزين المؤقت لملفات العروض لكي يتم طلب vite manifest جديد عليه مسارات الملفات الجديدة. و vite manifest هو ملف جيسون يتم توليده بداخل مجلد build يصف كل مسار فرعي. نفذ الأمر التالي لذلك: php artisan view:clear
  3. يتم ذلك وفق نفس الفكرة تقريبا، لا اختلاف مع التعامل مع اي حقل مدخلات آخر، اذ ستحتاج: قراءة قيمة حقل select المعني باستعمال اسمها كمفتاح لمصفوفة متغيرات الطلب POST_$ خزنها الى متغير محلي او عام التعامل مع قيمتها بشكل مباشر مثال عملي: $mySelectOption = $_POST['select_field_name']; exho $mySelectOption; سيمكن بعد هذا حقن هاته البيانات الى قاعدة البيانات بشكل مباشر: $sql = "INSERT INTO my_table(my_column) VALUES ('$mySelectedOption')"; طبعا فإن هذا يقتضي أن يتم ارسال الباينات من الواجهة الامامية بصورة صحيحة، اذ يجب أن يوافق اسم الحقل الاسم المتعرف عليه من الواجهة الخلفية، وكما يجب ان يكون الحقل في نموذج استمارة form طبعا.
  4. هاته ليست الطريقة الصحيحة لاستعراض مشروع لارافيل، كما أن تشغيل خادم vite لا يغني عن تشغيل خادم artisan أو تشغيل التطبيق من على xampp عموما. قم بتشغيل الامر: php artisan serve مع الأمر: npm run dev ثم قم باستعراض المشروع من على الرابط المتحصل عليه من تشغيل الأمر الأول، هو عادة ما يكون: http://127.0.0.1:8000/ يفترض أن يعمل معك الآن.
  5. هاته ليست الطريقة الصحيحة لتشخيص المشكلة، قم أولا بتفعيل وضع التصحيح DEBUG MODE أو باستعراض رسائل ونصوص المشاكل التي تظهر. وعموما، يكون هنالك ملف logs على الخادم يقوم بالتقاط كل هاته الاستثناءات exceptions مفصلة، قم بالبحث في خادمك المستضيف عن ملف السجل واعرف المشكلة، رغم أن كل شيء كان يعمل بشكل صحيح، إلا أن هذا لا يعني أي شيء لدلالة الخطأ 500 فهو حتما بالخادم. يحتمل ان تكون المشكلة ايضا متعلقة بتعطل استعمال برمجيات طرف ثالث من جانب الخادم، كأن تقوم بالاستعانة بواجهة برمجية خارجية مثلا.
  6. مرحبا حمزة وعليكم السلام ورحمة الله، ينبغي فهم أن اتمام اربع مسارات هو ليس إلا شرطا لإجتياز الامتحان غرض الحصول على الشهادة، ولا يتم بطبيعة الحال امتحان الطلبة في هاته الأربع مسارات فقط، اذ سيتم اختبارهم في المادة العلمية المقدمة في الدورة ككل وليس في الاربع مسارات فقط. فالشهادة ستكون بصيغة "أتم وبنجاح دورة كذا" وليس "أتم وبنجاح المسارات كذا وكذا من الدورة كذا".
  7. github في الأصل ليس إلا خدمة استضافة تستعمل نظام git في ادارة البرمجيات، وgit هو نظام للتحكم في النسخ version control system ويتم استعماله عادة للتنسيق بين شركاء التطوير في إدارة المشروع وتطويره. فالمشاريع البرمجية الكبيرة عادة ما يتم العمل عليها من قبل أكثر من شخص في نفس الوقت، وفي هاته الحالة سوف يحتاج كل من المشتغلين على المشروع، في مثل هاته الحالة سوف لن يكون من العملي نقل النسخ المحدثة وتبادلها بين الأعضاء. سوف يكون هنا استعمال غيت عمليا جدا، اذ سيقوم كل من الأعضاء بالعمل على جزءه من المشروع بشكل مستقل ثم في آخر كل يوم مثلا يقوم كل من الأعضاء باستخدام غيت لرفع التحديثات التي قاموا بها. في هاته المرحلة سيقوم مشرف المشروع أو قائد الفريق بمقارنة أي تعارضات ودمج هاته الفروع في مشروع واحد، وأخيرا يقوم كل من الأعضاء باستخدام غيت مرة أخرى لسحب هاته التغييرات. ويتم العمل هكذا .. من المهم أيضا استعماله بشكل شخصي، فقد تحتاج استضافة مشاريعك البرمجية وتخزينها بمكان ما يسهل الوصول إليه. كل هذا بجانب استعماله في غرضه الاساسي وهو التحكم في النسخ، فقد تحتاج مستقبلا استعراض نسخة سابقة من مشروع برمجي قمت بتحديثه. غيت يحتفظ بكل هذا.
  8. ما المشكلة التي تواجهها على وجه التحديد؟ انتبه أنك لا تقوم أصلا باستعراض الملف على المتصفح في قوقل كروم، تأكد من فتح الملف Untitled-1.html بإستعمال متصفح الويب الخاص بك. أيضا لا تنسى حفظ محتويات ملفي Untitled-1.html وindex.js، في VS code يمكن ذلك عن طريق: الضغط على CTRL + S سيمكنك بعد هذا استعراض محتوى الملف بشكل سليم.
  9. طبعا فإن هذا يعتمد على اجابة السؤال: "ما مدى اطلاعك على ما ستقوم بتخطيه؟" ، هل تقوم بتخطيه لأنك مطلع بالفعل على ما سيقدم أم أنك تستعجل التطبيق العملي وتجد المحتوى النظري مملا مثلا؟ مبدئيا، لا ينصح بذلك إذ أن تسلسل الدروس في الأكاديمية ليس موضوعا اعتباطا فهو يخضع للتسلسل في التعقيد وكذلك في طرح المادة العلمية والتعرض لها .. فقد يتم مثلا في مسار بناء صفحات الهبوط الاعتماد على جزئية تم شرحها بإسهاب في مسار سابق. وقد يكون هذا مشكلة وتشتيتا لبعض الطلبة. ولكن، مثلما أشار مصطفى، فإنه قد لا يشكل ذلك فرقا لبعض الطلبة الذين يمتلكون أغلب المعارف المتعرض لها كمكتسبات قبلية. ومع ذلك، أظن أنه من الأفضل المرور عليها وعدم تخطيها بشكل مباشر. أو على الأقل مشاهدتها دون تطبيقها عمليا أو تدوين ما تم شرحه.
  10. لا داع من سياق المقارنة للتحقق مما ان كان قد تم تخزين بيانات في التخزين المحلي من قبل أو لا، يمكن التغاضي عن هاته الخطوة وفحصها مباشرة. فالقيمة undefined و null وغيرهما تعتبر قيم خاطئة falsy values تتضمن معنى القيمة المنطقية false. أصلح ذلك ليكون: localStorage.getItem('data') ? JSON.parse(localStorage.getItem('data')) : [] أيضا تأكد من تخزين سلسلة جيسون سليمة أول مرة. اذ يحتمل أن يكون السطر الثاني هو المسؤول عن المشكلة.
  11. ليس خطأ، هذا أفضل بالطبع. سيعطي نفس النتيجة بشكل أنظف.
  12. مرحبا ابراهيم، يوجد فرق بين استيراد وحدات ES لاستعمالها و استعمال وتصريح دوال الجافاسكربت العادية، فالذي تقوم به هاهنا: import Swal from 'sweetalert2'; هو اسيتراد وحدة Swal كاستيراد افتراضي من الوحدة النمطية sweetalert2 فقط. اذ لا يعني هذا بالضرورة تصريحها بشكل عالمي global حتى يتسنى استعمالها من أي ملف عرض. فـ vite هنا لا يعتبرها اكثر من وحدة نمطية معينة ما لم يتم استعمالها، ولن يعني له ذلك شيئا ان كنت تستعملها في ملف blade مثلا. فهي ستبقى رغم ذلك غير معرفة ككائن أو كدالة ضمن النطاق العالمي global scope، ولكنها تبقى مستوردة كوحدة يمكن استعمالها من داخل ملف app.js حصرا .. ولذلك فإننا لو أردنا استعمالها في سياق خارج سياق app.js أو اي ملف يستورد Swal كوحدة نمطية سيظهر لنا مثل ما ظهر معك، ولذلك فإنه يقترح تصريحها بشكل explicit مع الكائن window لكي يمكن استعمالها. ولو تلاحظ فإن هنالك طريقة أخرى لإستعمالها كأي مكتبة جافاسكربت عادية أخرى. وتأتي ملفا مجمعا مصدريا يمكن استيراده كملف جافاسكربت واستعمال ما فيه، وهو ملف يتم تقديمه عن طلب السكربت: <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> هذا الملف هو ما يحوي هذا التصريح. مثال عملي: <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <script> document.addEventListener('DOMContentLoaded' , () => { Swal.fire( 'Good job!', 'You clicked the button!', 'success' ) }) </script> هذه هي الطريقة التي اعتدنا على العمل بها مع مكتبات الجافاسكربت سابقا سنين 2017 و 2018 وقبلهما قبل شيوع استعمال الوحدات. أما ما تحاول استيراده فهو مكتوب بسياق ES كوحدات ES لا يصلح لهذا الاستعمال المباشر. وذات الأمر الأمر ينطبق على أي وحدات أخرى. ان كنت تنوي التعامل مع دوال معينة بشكل ستاتيكي، قم بتجميعها في ملف public_js.js ضعه في مجلد public وقم بوصف مثل هاته الدوال به لكي يمكن استعمالها ضمن النطاق العالمي.
  13. بشكل أساسي، gulpjs يعتبر في الأصل مشغل مهام task runner في حين أن vite يعتبر بيئة تطوير متكاملة web-based IDE استعمال gulp سيختصر علينا الكثير من الجهد الذي نبذله في العمليات المكررة من مثل :الدمج وتقليل ملفات الجافاسكربت (minifying)، ترجمة سياقات sass أو Less، ضغط الصور والملفات ونحوهما من المهام التي تتكرر في الويب بشكل دائم .. gulp يحتوي على وحدات خاصة تهتم بالتعامل مع كل من هاته المهام بشكل مؤتمت بشكل مباشر دون الحاجة الى كتابة الشيفرة المسؤولة كل مرة. هذا بجانب أنه يوفر لك إمكانية إنشاء مهام مخصصة لإستعمالها في اجزاء التطبيق وكل هذا من أجل توفير وقت التطوير وكتابة الشيفرة .. وميزة هذا الاستعمال هو أنه يجعل كل أكوادك تتبع نمطا واحدا بشكل standard يخدم مفاهيم الشيفرة النظيفة. أما vite فهو لا يهتم بذلك أبدا، فهو لا يتوفر على وحدات تمكنك من تنفيذ مهام معينة مثلا او اسيتراد شيفرات مكافئة لها. وما يقوم به هو التعامل مع وحدات ESM وتقديمها عند الحاجة إليها من طرف المتصفح، فهو خادم تطوير development server ومجمع وحدات module bundler. بشكل مختصر: gulp هو تجميعة من الأدوات toolkit التي تتوفر على مهام متكررة وشائع استعمالها في الويب، نستعمله لاختصار الوقت والجهد ولتوحيد نمط الشيفرات code standarization. vite يعتبر بيئة وخادم تطوير بالإضافة إلى إمكانيته في العمل مثل ويب باك كجمع وحدات module bundler، نستعمله لتسريع عملية التطوير وتحسين تجربتها.
  14. نعم، يوصى بتضمين مكتبة jQuery من خلال CDN (شبكة توزيع المحتوى) عبر HTTPS. اذ أن استخدام CDN يوفر عدة فوائد، بما في ذلك: سرعة التحميل: يتم توفير مكتبة jQuery من خوادم قريبة جغرافيًا للمستخدم، مما يؤدي إلى تسريع عملية التحميل وتحسين أداء الموقع. التخزين المؤقت: فإذا قام مستخدم بزيارة موقع آخر يستخدم نفس الإصدار من مكتبة jQuery من نفس الـ CDN، فإن المتصفح سيكون قد قام بتخزين النسخة المستخدمة مسبقًا في الذاكرة المؤقتة، الأمر الذي سينعكس إيجابا على آداء موقعك وسرعة تحميله. الأمان: توفر خدمة CDN الاتصال عبر HTTPS، وهذا يعني أن المكتبة jQuery ستتم تحميلها عبر اتصال آمن، مما يحسن أمان المستخدمين الذين يزورون موقعك. يتم توزيع جيكويري مثلا من خلال عدة شبكات CDN أشهرها تلك الخاصة بهم: <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> و تلك الخاصة بموقع cdnjs: <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
  15. جرب الخطوات التالية: قم بتسجيل الدخول إلى حساب Godaddy الخاص بك. انتقل إلى لوحة التحكم (Dashboard). ابحث عن قسم يحمل اسم "cPanel" أو "Hosting Control Panel". انقر على الزر أو الرابط الموجود للوصول إلى واجهة cPanel. ستتم إعادة توجيهك إلى واجهة cPanel الرئيسية. ابحث عن قسم "Security" أو "Preferences" في واجهة cPanel وانقر عليه. ابحث عن خيار "Change Password" أو "Reset Password" أو ما شابه. ادخل كلمة المرور الحالية الخاصة بالمستخدم وكلمة المرور الجديدة التي ترغب في تعيينها. أعد إدخال كلمة المرور الجديدة للتأكيد. انقر على الزر "Change Password" أو "Reset Password" لتأكيد تغيير كلمة المرور. ستظهر رسالة تأكيد توضح أن كلمة المرور تم تغييرها بنجاح. تأكد من تأمين كلمة المرور الجديدة بشكل جيد وتذكرها بطريقة آمنة.
  16. لا يجب عليك أن تحس بالإحباط، فالغموض شيء طبيعي عند التعرض لأي شيء جديد في أي مجال عملي أو حياتي .. بما في ذلك مفاهيم البرمجة أو الويب.. فبخصوص Ajax مثلا هو ليس إلا طريقة للتخاطب مع الخادم فقط وقد يستعصى فهم ما هو الخادم او لما يتخاطبان او كيف يكون ذلك أول الأمر ولكنه سيصبح شيئا عاديا لاحقا.. أي أنه لا يوجد به ما يفترض أن يسبب لك مثل هذا الاحباط. وبالمجمل، مفاهيم أجاكس قد تسبب بعض الاستشكال لدى غالب المتدربين والجدد على المجال وهو ليس بشيء غير طبيعي. فيما يلي بعض الخطوات التي قد تساعدك في التخلص من هكذا مشاعر سلبية: خذ قسطا من الراحة قم بتنظيم عملية الدراسة بدل التركيز في كم المادة العلمية التي تأخذها ركز على استيعابك وفهمك كل نقطة تمر عليها قم بطرح الاسئلة وتعلم الاستشكال وخض في نقاش اي نقطة لم تستوعبها بالكامل قم باستعمال الورقة والقلم في نمذجة افكار تظنها صعبة الصبر والمثابرة والاستمرارية ولو بالشيء القليل
  17. نعم ولما لا، أجد أنك تمتلك خبرة لا بأس في تجميعة لا بأس بها من كل من المهارات الصلبة Hard skills والمهارات الخفيفة Soft skills. هذا بجانب أنك على إلمام بواحدة من أشهر معماريات التصميم وهي MVVM. فيما يلي بعض الملاحظات التي قد تخص الملف المرفق: يوجد فراغات في الفقرة الثانية تأكد من ازالتها. الروابط تظهر صغيرة. قم باختصار الفقرة التعريفية أكثر. وهاته كتوجيهات بخصوص التصميم والتنظيم فقط، قد لا نتفق في بعضها وقد نتفق. أما نصيحتي لك بعد النظر في مهاراتك، فهي البدء والخروج من دوامة الدورات والكورسات بعيدا عن ما يعرف بجحيم الكورسات tutorial hell. فما ستتعلمه خلال الطريق سيكون أكثر نفعا لك وأكثر ترسخا في ذهنك، أيضا لا يجب عليك الاعتماد على سيرتك الذاتية بشكل أولي في العمل على منصات العمل الحر. فأغلب العملاء لن يكون مهتما بتفحص سيرتك الذاتية لمجرد التعرف عليك. اعتمد على شروحات مقتضبة عنك وعن معرض أعمال يحمل أعمالك بشكل مصور بدل ان تكون شروحات مكتوبة. أما الباقي فستتعمله وتلتقطه في الطريق من تجربة ذاتية وشخصية، ولن تجده في غير العمل.
  18. لنقسم السؤال الى جزئين أساسين: كيف أصبح مطور فلاتر. كيف أصبح فريلانسر. بخصوص الجزئية الأولى ينصح بـ: تعلم لغة Dart والتطبيق فيها. تعلم Flutter وتعمق فيها. انضم الى مختلف المجتمعات البررمجية الخاصة بهما. قم ببناء مشاريع مختلفة واختبر نفسك بها. احرص على تحديث معلوماتك وتطويرها. أما بخصوص الجزئية الثانية فيمكنك: بناء بورتفوليو ومعرض اعمال يليق بمستواك. قم بالتسجيل في مواقع العمل الحر واعرض خدماتك وقدم عروضك على المشاريع المعروضة. قم ببناء شبكة علاقات. قم بتسويق خدماتك واعرضها في مختلف المنصات التي يحتمل ان يتواجد بها عملاءك او جمهورك. حافظ على سمعتك واحرص على تطويرها. أما بخصوص تحديد تسعيرة لعملك، فكنصيحة قم بالبدء بمتوسط متواضع قليلا إلى حد تقوية شبكة علاقاتك وعدد عملاءك. طبعا فإن هذا المتوسط تتحكم فيه العديد من العوامل من بينها مثلا: السوق الذي تنشط فيه. قيمة الخدمات التي تقدمها. شيء آخر ينبغي الإلتفات اليه هو تطوير المهارات الجانبية soft skills من مثل التفاوض والتواصل وغيرهما. وفي الأخير، لا يزال عليك التحلي بالصبر والمثابرة لكي تبلغ ما بلغه من تفحصت متوسط سعر الساعة لديهم.
  19. سؤالك غير واضح جيدا، ما الذي تحاول الإشارة اليه؟
  20. هي لا تسمى متغيرات ثابتة على نحو دقيق، فهي ثوابت وفقط. ولا يمكن تغيير قيمتها بطبيعة الحال لأنها كذلك. فهي ثابتة لا يفترض أن تتغير وإلا فلماذا قمنا أصلا بتصريحها واستعمالها. وما يظهر في الصورة لا يفترض به أن يخبرك أنه ثابت أو متغير، وإنما يقوم بإخبارك عن نوع بيانات المتغير أو الثابت المسند له. فمرة يخبرنا أنه string أو سلسلة نصية، ومرة يخبرنا أنه integer أو عدد وما نحو ذلك. في جافاسكربرت لا يمكن التحقق بشكل مباشر مما ان كان شيء ما متغيرا أو ثابتا، ولكن يمكنك القيام بدالة مخصصة تقوم لك بذلك. مثال: var value = 42; // variable const PI = 3.14; // constant console.log(typeOfSomething(value)); // خرج: variable console.log(typeOfSomething(PI)); // خرج: constant function typeOfSomething(value) { try { value = 10; // جرب اسناد قيمة return "variable"; } catch (error) { // في حالة تعطل الاسناد فهو حتما ثابت return "constant"; } }
  21. تحدث هاته المشكلة عند غياب الملف الفهرس .. اذ يبدوا أنك تخطئ في رفع ملفات الموقع، فالموقع لا يحتوي على ملف جذر أو ملف فهرس. يجب أن يكون اسم الملف فهرس متطابقًا مع اسم الملف الافتراضي لفهرس المجلد (مثل index.html أو index.php). كما أن رفع الملفات بهذه الطريقة قد يؤدي الى قرصنتها أو -كأقل تقدير- التحصل على الاكواد المصدرية والاستيلاء عليها. تأكد من التزام الطريقة الصحيحة في التنصيب، وقم بإخراج ملفات المشروع من مجلد public_html إلى خارجه واترك فقط الملفات التي يفترض أن تكون قابلة للوصول من قبل أي مستعرض. على سبيل المثال: الملف الجذر index.php. من الصعب تحديد التقنية المستخدمة في الموقع، ولكن بحسب بنية الملفات يرجح أنه إطار symfony أو اطار عمل مخصص. وعموما، ستحتاج توجيها لرفع الموقع بشكل صحيح. قد تحتاج الاستعانة بمطور للقيام بذلك لك بصورة صحيح. قد تكون مهتما بتوظيف واحد من خلال مستقل.
  22. بجانب ما اقترحه المدربون، يمكنك بيع التطبيقات نفسها. سواءا حق الملكية والنشر والتوزيع أو رخص شخصية بإستعمال محدود أو رخص تجارية بإستعمالات أكثر تميزا .. هذا بجانب أنه يمكنك تقديم خدمات تطوير تطبيقات الهاتف النقال أو العمل بشكل حر في ذلك. وفيما يلي طرق أخررى أيضا: بيع الخدمات المصاحبة: بجانب تطوير التطبيقات، يمكنك تقديم خدمات مصاحبة مثل التدريب والاستشارات ودعم التطبيقات. يمكن أن تشمل هذه الخدمات تدريب فرق التطوير، وتحليلات الأداء، وتحسين تجربة المستخدم، والتطوير المخصص والتكامل مع أنظمة أخرى. الابتكار التقني: يمكنك تطوير تقنيات أو أدوات مبتكرة ومتقدمة تستخدم في تطوير التطبيقات النقالة. يمكن بيع هذه التقنيات للمطورين الآخرين أو للشركات التي تحتاج إلى الاعتماد عليها لتطوير تطبيقاتها. التبرعات والتمويل الجماعي: إذا كان لديك فكرة تطبيق ذو طابع اجتماعي أو تعليمي أو غير ربحي، يمكنك جمع التبرعات أو استخدام منصات التمويل الجماعي لتمويل تطوير التطبيق وتشغيله.
  23. من الصعب تشخيص مثل هاته المشكلة، فأنت ستحتاج اضافة بيانات أخرى بجانب المرفق حتى يمكن العمل عليها. ولكن عموما، قد يكون ذلك متعلقا ببيانات الجلسه، امحها عن طريق: php artisan session:clear أو ببيانات مخزنة مؤقتا، امحها هي الأخرى: php artisan cache:clear في حالة استمرار المشكلة حاول العمل على تشخيصها بطرق أكثر نجاعة، استعمل dd مثلا.
  24. لا زلت تحتاج إضافة this للإشارة إلى أن الوظيفة المستعملة هي تابع عن أي Vue Instance، فبدل استعمال هذا السياق: $filters.shorten(content) جرب استعمال: this.$filters.shorten(content)
  25. يمكنك الاستعانة بالوظيفة header لتوجيه المستخدم إلى صفحة معينة بعد تسجيله للدخول، قد تحتاج حقن معرف المستخدم في الجلسة حتى يمكن التعرف عليه بين الصفحات المختلفة: // بدء الجلسة session_start(); // تسجيل معرف المستخدم في الجلسة $_SESSION['logged_in_user_id'] = $doctorId; // توجيه المستخدم الى صفحة الدكتور header("Location: doctor.php"); ثم في صفحة doctor.php نقوم بفحص المعرف المحقون في الجلسة لكي يمكن أن نستعمله في الاستعلام عن بيانات هذا الدكتور. وأخيرا جلب المرضى المعنيين بهذا الدكتور وطباعتهم تباعا. هذا هو ملخص العملية. يمكنك استكمال ذلك بمساعدة ما أرفقه مصطفى بهذا الخصوص:
×
×
  • أضف...