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

Mustafa Suleiman

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

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

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

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

    365

كل منشورات العضو Mustafa Suleiman

  1. لا عليك، شعور طبيعي يراود الجميع، لكن يجب معرفة الطريقة المناسبة لدراسة الدورة، أولاً وقبل أي شيء عند تعلم مجال البرمجة يجب كتابة الكود والتطبيق بمفردك وعدم الإكتفاء بالكتابة مع المدرب فقط أي يجب إعادة ما قمت به أو المشاهدة ثم إيقاف الفيديو ثم التطبيق بمفردك من البداية ومحاولة التغيير في الكود وليس تنفيذ نفس الأمر إن أمكن لفهم آلية عمل الكود وعدم الخوف من التجربة والخطأ فهما جزء من عملية التعلم، بدون تلك الخطوة أنت لم تتعلم البرمجة للأسف. مثلاً في حال كان الدروس قصيرة تستطيع مشاهدة 4 دروس مثلاً ثم التوقف والتطبيق بمفردك، والمحاولة والتفكير في حال واجهت مشكلة ثم العودة للدروس لمشاهدة الأمر والمراجعة ولا مشكلة في ذلك فأنت ما زلت تتعلم لكن بعد المحاولة، وبخصوص الحفظ فمن المهم الحفظ والاستيعاب في البداية والتركيز ولا مشكلة إن نسيت بعض الأمور بعد ذلك المهم انك مستوعب لها وتستطيع استخدامها في حال قمت بالبحث عنها وعن طريقة كتابة جزء معين من الكود فالجميع كذلك. وبخصوص كتابة ملخصات أو ما شابه، فيمكنك فعل ما تريد وما تراه مناسبًا لك ويساعدك على التعلم، فالبعض يفضل ذلك والبعض يفضل التطبيق العملي والتكرار والاستيعاب. ولا تستعجل أبدًا وعليك التركيز على الأساسيات فهى الأهم، ويجب التطبيق عليها، ولا تكتفي بما يتم شرحه باي دورة بل قم بالبحث عن مشاريع للمبتدئين على اليوتيوب وحاول التطبيق بما تعلمته في الأساسيات ويمكنك رؤية الشرح والمتابعة معه ولا مشكلة في حال واجهت أمر جديد لم يتم شرحه فذلك هو المطلوب. وستجد تفصيل أكثر هنا: بخصوص رفع المشاريع فأنت بحاجة إلى تعلم Git وGitHub وستجد شرح جيد هنا: بعد ذلك ستجد توضيح لعلمية رفع المشاريع هنا:
  2. الأسئلة الإختبارية لا يتم الإجابة عليها بشكل مباشر ويمكن مساعدتك في حال تم توفير كود، وإليك خطوات الحل: عليك تحديد ارتفاع وعرض الحرف ليكونوا height = 5 و width = 5، وتستطيعي تعديل تلك القيم حسب رغبتك. استخدام حلقتي for متداخلتين للتحكم في الصفوف والأعمدة، بحيث تعتمد الأولى على الطول height والداخلية تعتمد على width، استخدام مجموعة من الجمل الشرطية (if statements) داخل الحلقة الداخلية لتحديد متى يجب وضع النجمة ومتى يجب وضع المسافة في كل خلية من الصفوف والأعمدة، ولمساعدتك ستحتاجين جمل شرطية للتالي: إذا كان الصف الأول، إذا كان الصف الوسط والعمود يساوي 0 أو 4، إذا كان الصف الأخير، إذا كان العمود يساوي 0 في الصفان الوسطيان، إذا كان العمود يساوي width - 1 في الصفان الوسطيان، وبالطبع حالة else يتم بطباعة مسافة. استخدام std::cout لطباعة النجوم أو المسافات اعتمادًا على الشروط المحددة. استخدم std::endl للانتقال إلى السطر التالي بعد اكتمال كل صف وذلك في الحلقة الخارجية. يجب تحديد الشروط بدقة للتأكد من أن النجوم والمسافات يتم وضعها في الأماكن الصحيحة. ستحتاجين إلى تجربة البرنامج وتعديل الشروط إذا لزم الأمر للحصول على النتيجة المرجوة.
  3. غير متاح ذلك، أنت بحاجة إلى البحث عن شريك وعرض فكرتك بحيث يتكفل هو بالجانب المادي مقابل نسبة من الأرباح مستقبلاً، وفي حال كانت فكرة التطبيق لديك تستحق الاستثمار فيوجد العديد من برامج الاستثمار والتسريع التي تستهدف الشركات الناشئة، ويمكنك البحث عن تلك البرامج وتقديم طلب للحصول على تمويل. أيضًا بعض الشركات والمؤسسات تنظم مسابقات وتقديم جوائز للأفكار والمشاريع المبتكرة، وتستطيع المشاركة في مثل هذه المسابقات لفرصة للفوز بدعم مالي واهتمام إعلامي.
  4. بايثون هي لغة برمجة عامة الأغراض، مما يعني أنها يمكن استخدامها لتطوير أنواع مختلفة من التطبيقات، بما في ذلك تطبيقات أندرويد، ولكن نظام أندرويد لا يدعم بايثون بشكل أصلي، لذلك ستحتاج إلى استخدام مكتبة مثل kivy. ومكتبة kivy هي مكتبة مفتوحة المصدر لإنشاء تطبيقات سطح المكتب والجوال باستخدام بايثون، وتوفر المكتبة مجموعة واسعة من المكونات التي يمكنك استخدامها لإنشاء واجهات مستخدم غنية وتفاعلية، بالإضافة إلى دعم المكتبة مجموعة واسعة من الوظائف، بما في ذلك معالجة الرسومات والاتصالات وإدارة البيانات. وباستخدام مكتبة kivy، تستطيع إنشاء تطبيقات أندرويد كاملة المواصفات بجميع الإمكانيات، وبالطبع هناك بعض القيود التي يجب مراعاتها. فقد يكون التطبيق الناتج أكبر حجمًا من التطبيق المطور باستخدام لغة برمجة رسمية مثل جافا أو كوتلن، بجانب أنه لن تكون تطبيقات kivy بنفس السرعة أو الكفاءة مثل التطبيقات المطورة باستخدام لغات البرمجة الرسمية. وباستخدام kivy تستطيع استخدام بايثون في Android Studio.
  5. هل تريد بحث عن عملية تطوير موقع ويب، أم أنك تقصد شرح الأمر من البداية للنهاية؟ في حال كان شرح الأمر من البداية في النهاية فأنت تعني بذلك إختصار دورة كاملة في ملف pdf وذلك أمر غير ممكن وغير متاح بالطبع، إلا في حال كان ذلك الملف هو ملف سكريبت لدورة معينة وذلك غير متاح لتحميله بالطبع. أما إذا كنت تقصد بحث فإليك بحث مختصر يوضح العملية ستجده في المرفقات. وأيضًا المقال التالي سيفيدك: سير العمل في بناء تطبيق ويب من التصميم حتى النشر.pdf
  6. هل قمت بالتجربة من الهاتف أو من خلال متصفح آخر من أجل تفقد سبب المشكلة؟
  7. أنت بحاجة إلى استخدام خط يدعم Italic ومن الخطوط الجيدة خط FiraCodeiScript ويمكنك تحميله من هنا: https://github.com/kencrocken/FiraCodeiScript/archive/refs/heads/master.zip وعليك فك الضغط وتثبيت الخط install من خلال تحديد ملفات الخطوط ثم الضغط بزر الفأرة الأيمن ثم إختيار install. بعد ذلك عليك تعديل الإعدادات ابحث عن editor.fontFamily ثم قم بوضع القيمة إلى Fira Code iScript كالتالي: "editor.fontFamily": "Fira Code iScript", ثم عليك تحديد العناصر التي تريد عرضها بشكل italic من خلال Scope بوضع الإعدادات التالية في settings: "editor.tokenColorCustomizations": { "textMateRules": [ { "scope": [ // the following elements will be in italic // (=Fira Code iScript) "comment", "keyword.control.import.js", // import "keyword.control.export.js", // export "keyword.control.from.js", // from // "constant", // String, Number, Boolean…, this, super "storage.modifier", // static keyword "storage.type.class", // class keyword "storage.type.php", // typehints in methods keyword "keyword.other.new.php", // new "entity.other.attribute-name", // html attributes "fenced_code.block.language.markdown" // markdown language modifier ], "settings": { "fontStyle": "italic" } }, { "scope": [ // the following elements will be displayed in bold "entity.name.type.class" // class names ], "settings": { "fontStyle": "bold" } }, { "scope": [ // the following elements will be displayed in bold and italic "entity.name.section.markdown" // markdown headlines ], "settings": { "fontStyle": "italic bold" } }, { "scope": [ // the following elements will be excluded from italics // (VSCode has some defaults for italics) "invalid", "keyword.operator", "constant.numeric.css", "keyword.other.unit.px.css", "constant.numeric.decimal.js", "constant.numeric.json", "comment.block", "entity.other.attribute-name.class.css" ], "settings": { "fontStyle": "" } } ] } ويمكنك البحث عن Setup FiraCodeiScript for Italic Fonts in VSCode على اليوتيوب لرؤية شرح بالفيديو.
  8. أنت بحاجة أولاً إلى دراسة أساسيات علوم الحاسوب، ويوجد في في أكاديمية حسوب دورة مخصصة لذلك وهي: حيث ستتعلم بها ما يلي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات لغة البرمجة JavaScript وتطبيق المفاهيم التي تم شرحها باستخدامها، والتوسع في شرح التطبيقات العملية للغات البرمجة أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب أو يمكنك دراسة دورة CS50 وستجد لها شروحات على اليوتيوب باللغة الإنجليزية والعربية أيضًا، بعد ذلك ستتمكن من تحديد وجهتك والمجال الذي تريد التخصص به. وستجد هنا شرح مفصل:
  9. من الأفضل استخدام اللغة والإطار اللذان تجيد استخدامهم بدلاً من تعلم لغة وإطار جديد، لكن الأمر يتوقف أيضًا على باقي أعضاء الفريق، لذلك أنتم بحاجة إلى التشاور بخصوص ذلك، ونعم PHP ولارافل ستتمكن من تنفيذ المشروع بشكل أسرع من خلالهم.
  10. MySQL هو نوع من أنظمة إدارة قواعد البيانات العلائقية (RDBMS)، وهو نظام مفتوح المصدر ومجّاني، ويُستخدم لتخزين البيانات في شكل جداول، حيث يتم تنظيم البيانات في صفوف وأعمدة، وتستطيع الوصول إلى البيانات الموجودة في قاعدة بيانات MySQL باستخدام لغة SQL، وهي لغة برمجة مصممة خصيصًا لإدارة قواعد البيانات. وMySQL ليست موقعًا يستضيف البيانات الموجودة في التطبيق لديك، ولكن نستخدمها على استضافة ويب أو على خادم خاص بك، وفي حال استخدام استضافة ويب، فسوف يوفر لك المزود مساحة تخزين على الخادم الخاص به، حيث يمكنك تثبيت MySQL وإنشاء قواعد البيانات وإن كنت تستخدم خادمًا خاصًا، فتستطيع تثبيت MySQL على الخادم لديك. وبخصوص أنواع قواعد البيانات فعليك قراءة التالي لتفهم الأمر: وبخصوص الاسضافات المجانية التي تقدم قاعدة بيانات MySQL: googiehost awardspace profreehost 000Webhost
  11. هناك أدوات مجانية مثل: https://www.browserling.com/ https://testingbot.com/test-on-safari https://www.lambdatest.com/ وهناك طريقة أخرى ألا وهي تثبيت MacOs على نظام وهمي من خلال VMWare أو VirtualBox وأنا أُفضل استخدام VMWare، عليك البحث على اليوتيوب عن How to Install Mac OS on VMWare. وبالطبع ستحتاج إلى نسخة iSO لنظام ماك من أجل تثبيت النظام، وإليك إصدار macOS Monterey 12.6: https://www.mediafire.com/file_premium/cxizgpcl0lj38ec/macOS_Monterey_12.6_Final_ISO_by_Techsprobe.rar/file وأيضًا رابط إصدار أحدث وهو إصدار macOS Ventura 13: https://archive.org/download/macos-collection/Releases/Ventura 13.0 v18.0.02.iso
  12. السؤال غير واضح، هل المقصود كيف يتم الإتصال بالواجهة الخلفية من خلال الواجهة الأمامية؟ إذا كان ذلك المقصود، فيتم ربط front-end و back-end بعدّة طرق: باستخدام AJAX وAPI: AJAX (Asynchronous JavaScript and XML) هي طريقة لتبادل البيانات بين front-end و back-end دون الحاجة إلى تحديث الصفحة بالكامل، ويتم ذلك عن طريق إرسال استعلام إلى back-end باستخدام XMLHttpRequest، ثم معالجة الاستجابة في front-end. API (Application Programming Interface) هو مجموعة من الوظائف والأساليب التي يمكن استخدامها للتفاعل مع برنامج أو خدمة، ونستخدم الـ API لربط front-end و back-end عن طريق توفير طريقة قياسية للوصول إلى البيانات والخدمات من back-end. باستخدام WebSockets WebSockets هي طريقة اتصال ثنائية الاتجاه بين front-end و back-end، وتسمح WebSockets لـ front-end بإرسال البيانات إلى back-end والعكس صحيح في الوقت الفعلي. وستجدي هنا تفصيل:
  13. لأكون صريحًا معك، الوقت ضيق أمامك وطالما أن المشروع ليس بالبسيط، فالفكرة غير واقعية بالمرة، لا يمكنك تعلم لغة وإطار خلال شهر إلا إذا كان لديك خبرة برمجية من قبل وقمت بتنفيذ عدّة مشاريع بحجم متوسط على الأقل. ولذلك في حال أنك تريد البدء بتعلم البرمجة وتريد تنفيذ مشروع خلال شهر، فلن تتمكن من ذلك للأسف، وفي حال كنت ملم بلغة وإطار فمن الأفضل استخدامهم في المشروع بدلاً من تعلم لغة أو تقنية جديدة. لكن على أي حال يمكنك المحاولة، أو تعيين شخص لتنفيذ المشروع ليتم إنقاذ الموقف مع تقديم شرح لما تم لكي تتمكن من شرحه لدكتور المادة، وهو أمر لا أنصحك بفعله بالطبع فسيعود عليك بالسلب لكن ليس أمامك خيار آخر حاليًا. وبالنسبة لسؤالك عن PHP ولارافل، فنعم تستطيع تنفيذ المشروع بشكل أسرع من خلال إطار لارافل حيث يوجد الكثير من المكتبات والمكونات الجاهزة وستتمكن من تنفيذ المشروع بشكل سريع، وستحتاج إلى قراءة التالي: بالنسبة للتسميات، فعند تقسيم المهام، يتم إسناد كل جزء بشكل منفصل ليعمل عليه شخص أو فريق، لذلك التسميات ليست هامة هنا فالجزء الخاص به من المفترض أن يكون منفصل عن البقية، لكن من المهم استخدام أسماء واضحة ومختصرة وتعكس الغرض من المتغير أو الدالة.
  14. أول ملف يتم قراءته هو ملف HTML، فهو المدخل الرئيسي لملفات الموقع، حيث يقوم المتصفح بقراءة ملف HTML أولاً لتحديد بنية الصفحة وعناصرها، ثم يقوم بقراءة ملفات CSS لتنسيق عناصر الصفحة، ثم يقوم بقراءة ملفات JavaScript لإضافة التفاعل إلى الصفحة، ولكن هناك بعض العوامل التي يمكن أن تؤثر على ترتيب تحميل الملفات، مثل وجود الأوامر المشغلة في JavaScript لتأخير تحميل بعض الملفات أو استخدام خصائص async أو defer في عناصر الـscript.
  15. أحيًانًا قد يتم الاشتباه في كود معين ولكن الكود سليم، فنسبة 98 من 100 هي نسبة جيدة جدًا، وعلى أي حال حاول فحص الموقع باستخدام أحد إضافات ووردبريس المخصصة لذلك، مثل: Wordfence Security: واحدة من أكثر الإضافات شعبية لأمان ووردبريس، وتوفر تلك الإضافة مجموعة واسعة من الميزات الأمنية، بما في ذلك فحص الفيروسات، وحماية DDoS، ومراقبة السجل، وأكثر من ذلك. iThemes Security: توفر أيضًا مجموعة واسعة من الميزات الأمنية، بما في ذلك فحص الفيروسات، وحماية DDoS، ومراقبة السجل، وأكثر من ذلك. MalCare: توفر فحصًا شاملًا للموقع بحثًا عن الفيروسات والبرامج الضارة الأخرى. Sucuri Security: إضافة أمان ووردبريس أخرى توفر مجموعة واسعة من الميزات الأمنية، مثل فحص الفيروسات، وحماية DDoS، ومراقبة السجل، وغيرها. Malware Scanner: تلك الإضافة تقوم بفحص موقعك بحثًا عن الفيروسات والبرامج الضارة الأخرى. وأيضًا عليك تجنب استخدام أي قوالب أو إضافات غير رسمية أي من خارج مصدرها الرسمي.
  16. الأسئلة الإختبارية لا يتم الإجابة عليها بشكل مباشر، ويمكن مساعدتك في حال تم توفير الكود، وخطوات حل السؤال هي: تعريف متغيرات لتخزين الرقم الخماسي وكل رقم فردي في متغير خاص به. يُطلب من المستخدم إدخال الرقم الخماسي باستخدام scanf. استخدام القسمة والباقي للحصول على الأرقام الفردية، والقسمة على 10 تستخدم للانتقال إلى الرقم التالي، والباقي يمثل الرقم الفردي نفسه. طباعة الأرقام المفصولة بثلاثة مسافات باستخدام printf، ووضع \n في النهاية للتحرك إلى سطر جديد بعد الطباعة. دروس ومقالات لغة C في أكاديمية حسوب
  17. السؤال غير واضح تمامًا من الأفضل نسخه ووضعه هنا.
  18. ستجد أن الكثيرين يتجهون لتعلم React مباشرًة فور الإنتهاء من جافاسكريبت، لكن تلك وصفة سريعة لتصبح مستخدم للتقنية وليس ملم باللغة أي ستتمكن من بناء واجهة أمامية بالفعل لكن مستواك في اللغة نفسه لن يخدمك عندما تحدث لك مشاكل أو عندما تريد تحسين الكود أو استخدام مزايا في جافاسكريبت نفسها، وربما لن تتمكن من التفرقة بين كود React وكود جافاسكريبت أي هل تلك ميزة في جافاسكريبت أم React؟ وستجد تفصيل هنا ذكرته من قبل:
  19. الأمر لا يسير بتلك الطريقة عند تطوير مشروع ويب، فالأمر يعتمد على البيانات التي تريد عرضها على الموقع، بمعنى لا فرق إذا قمت بتطوير الواجهة الخلفية أو الأمامية، أي يتم تطوير المشروع بناءًا على البيانات التي سيتم استخدامها، سواء صور أو نص أو فيديو أو البيانات والأمر يعرف باسم Data-driven design. أي نقوم بتصميم المشروع بناءًا على البيانات التي لدينا وليس العكس، فهناك غلطة شائعة وهي الإهتمام بتصميم موقع بشكل جذاب لكن بدون فائدة عملية لأن التصميم غير متوافق مع البيانات، لذلك أي عليك التصميم حول البيانات المعروضة، وأيضًا عدم الإهتمام بالشكل بشكل أكبر من الفاعلية أي تقديم راحة المستخدم وتسهيل الأمر وعدم تشتيته على جمالية التصميم. والقرار حول ما إذا كنت تبدأ بتطوير الواجهة الأمامية أم الجزء الخلفي من الموقع يعتمد على عدة عوامل، ويختلف وفق الأسلوب الذي تفضله أو تجده أكثر فعالية، وهناك نهجان رئيسيان: التطوير التسلسلي (Sequential Development) في هذا النهج، يتم تطوير الموقع بشكل تدريجي من الجزء الأمامي إلى الجزء الخلفي، ويبدأ المطور بتصميم وتطوير واجهة المستخدم الأمامية وتجربتها، ثم يقوم بتكامل الجزء الخلفي والخوادم. التطوير التزامني (Concurrent Development) هنا يتم العمل على تطوير الواجهة الأمامية والجزء الخلفي في نفس الوقت، بمعنى أن المطور يعمل على كلا الجانبين في المرحلة الأولى من التطوير. وبالطبع في حال كان المشروع معقد، فمن الأفضل البدء بالواجهة الخلفية، حتى يتم الاستقرار على البيانات التي سيتم إرسالها للواجهة الأمامية أو البيانات التي سيتم استقبالها.
  20. أنت تقوم بفحص إذا كان المستخدم قد قام بالإعجاب بالصورة أم لا، وتقوم بتحديث اللون بناءًا على ذلك، لذا هناك بعض الأمور من الأفضل القيام بها لتحسين الكود كالتالي: 1- إضافة متغير محلي لتتبع حالة اللون بدلاً من استخدام likedColor كحالة عامة، وسيساعد ذلك في تجنب المشاكل المحتملة مع تحديث حالة اللون بشكل صحيح. // داخل الكومبوننت const [buttonColor, setButtonColor] = useState(false); // ... const handleLikedColor = () => { const isLiked = likes.filter((item) => item.user === userId); setButtonColor(isLiked.length > 0); }; useEffect(() => { handleLikedColor(); }, [likes, userId]); 2- حاول تحديث لون الزر في مكان واحد فقط، في داخل handleLikeImage بدلاً من استدعاء handleLikedColor بشكل منفصل. const handleLikeImage = async (id) => { // ... await axios .put(`/api/images/like/${id}`, like, { headers: { "Content-Type": "application/json", "x-auth-token": user.data.token, }, }) .then((res) => { setLike(res.data); setNumLikes(res.data.likes.length); setButtonColor(res.data.likes.some((item) => item.user === userId)); }) .catch((err) => { // ... }); }; 3- استخدم الحالة المحلية (buttonColor) مباشرة في الرندر بدلاً من likedColor. <div className="menu-like"> <div className={buttonColor ? "like isLike" : "like"} onClick={() => { handleLikeImage(imageId); }} > <i className="fa-regular fa-thumbs-up"></i> </div> {numLikes === 0 ? "" : <div className="dislike">{numLikes}</div>} </div>
  21. استخدم EXISTS لفحص وجود تخصص آخر يحتوي على نفس المواد، أي تحديث الاستعلام كالتالي: <?php $host="localhost"; $user="root"; $pass=""; $db="res"; $con=mysqli_connect($host,$user,$pass,$db); ?> <div align='center'> <form action='' method='post'> <input type='text' name='search'><br> <input type='text' name='search1'><br> <input type='text' name='search2'><br> <input type='text' name='search3'><br> <input type='text' name='search_specialty'><br> <input type='submit' name='btn_search' value='Search'> </form> <?php if (isset($_POST["btn_search"])) { ?> <table border='5'> <tr> <th>رقم المتدرب </th> <th>اسم المتدرب</th> <th>التخصص </th> <th>المعدل </th> <th>رمز المقرر </th> <th>اسم المقرر </th> <th>الواحدات المعتمدة </th> </tr> <?php $str = $_POST["search"]; $str1 = $_POST["search1"]; $str2 = $_POST["search2"]; $str3 = $_POST["search3"]; $str_specialty = $_POST["search_specialty"]; $sh=mysqli_query($con, "SELECT t1.id_trainee, t1.name, t1.specialty, t1.gpa, t1.ramz, t1.name_mogrr, t1.credit FROM `tr1` t1 WHERE t1.id_trainee LIKE '%$str%' AND t1.ramz IN ('$str', '$str1', '$str2', '$str3') AND EXISTS ( SELECT 1 FROM `tr1` t2 WHERE t2.id_trainee = t1.id_trainee AND t2.name_mogrr = '$str_specialty' AND t2.ramz IN ('$str', '$str1', '$str2', '$str3') ) GROUP BY t1.id_trainee HAVING COUNT(DISTINCT t1.ramz) = 4"); while($row = mysqli_fetch_array($sh)){ ?> <tr> <td> <?php echo $row['id_trainee']?></td> <td> <?php echo $row['name']?></td> <td> <?php echo $row['specialty']?></td> <td> <?php echo $row['gpa']?></td> <td> <?php echo $row['ramz']?></td> <td> <?php echo $row['name_mogrr']?></td> <td> <?php echo $row['credit']?></td> </tr> <?php } } ?> </table> </div> تم إضافة متغير search_specialty لاستيفاء اسم التخصص الإضافي الذي تريد البحث عنه، ثم استخدام EXISTS في الاستعلام للتحقق مما إذا كان هناك تخصص آخر يحتوي على نفس المواد.
  22. الأمر يتطلب فهمًا عميقًا للعديد من المفاهيم، بما في ذلك البرمجة، والهندسة الكهربائية، والهندسة الميكانيكية، ونظم التحكم، وإليك الخطوات: اختر لغة برمجة، مثل Python أو C++ وتعلم الأساسيات ومفاهيم البرمجة. اكتساب فهم جيد حول هياكل البيانات والخوارزميات. دراسة الدوائر الكهربائية ومكونات الإلكترونيات. فهم كيفية عمل المتحكمات المدمجة (Microcontrollers)، والاستشعارات (Sensors). دراسة هياكل الطائرات بدون طيار وكيفية تصميمها. التعرف على مفاهيم الديناميكا والاستاتيكا والمواد الهندسية. دراسة نظم التحكم والتحكم الأوتوماتيكي. تعلم حول PID controllers وغيرها من تقنيات التحكم. دراسة أساسيات الاتصالات اللاسلكية وبروتوكولات الاتصال. فهم كيفية التحكم ونقل البيانات بين الطائرة والأجهزة الأخرى. اختيار منصة تطوير مثل Arduino أو Raspberry Pi لبدء تجربة البرمجة والتحكم. استخدام برامج محاكاة لتجربة واختبار البرمجيات بدون تحليق فعلي. دراسة اللوائح المحلية والدولية المتعلقة بطيران الطائرات بدون طيار. بالطبع الخطوات السابقة على إفتراض أنك ستقوم بالأمر بمفردك، لكن بالطبع في الشركات المطورة للطيارات بدون طيار هناك فريق عمل ويتم تقسيم المهام بشكل متخصص. ما العلوم (و التخصصات) التي يحتاجها فريق معين لتطوير طائرة بدون طيار ؟
  23. أنت تقوم بتحديث الرصيد في جدول account باستخدام الاستعلام التالي: UPDATE account SET debit = debit + $total WHERE name = '$name'; وذلك الاستعلام سيضيف قيمة الفاتورة المعدلة إلى الرصيد السابق، فلو كانت الفاتورة الأصلية بقيمة 100 دولار، والفاتورة المعدلة بقيمة 200 دولار، فسيؤدي الاستعلام إلى تحديث الرصيد إلى 300 دولار. لذا، تحتاج إلى تحديث الرصيد باستخدام الفارق بين قيمة الفاتورة الأصلية وقيمة الفاتورة المعدلة، باستخدام الاستعلام التالي: UPDATE account SET debit = debit + ($total - $old_total) WHERE name = '$name'; حيث $total هي قيمة الفاتورة المعدلة، و$old_total هي قيمة الفاتورة الأصلية، ففي حال الفاتورة الأصلية بقيمة 100 دولار، والفاتورة المعدلة بقيمة 200 دولار، فسيعمل الاستعلام على تحديث الرصيد إلى 100 دولار. أي نقوم بتحديث الكود كالتالي: // التحقق من وجود العناصر المحدثة if (isset($_POST['item_name']) && isset($_POST['item_quantity'])) { $item_names = $_POST['item_name']; $item_quantities = $_POST['item_quantity']; // حلقة لتحديث الكمية لكل صنف foreach ($item_names as $index => $item_name) { $item_quantity = $item_quantities[$index]; // استعلام لتحديث الكمية في المخزن $sql = "UPDATE inventory SET quantity = quantity - $item_quantity WHERE name = '$item_name'"; $conn->query($sql); } } // الحصول على قيمة الفاتورة الأصلية $sql = "SELECT total FROM sales WHERE sales_number = '$sales_number'"; $result = $conn->query($sql); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); $old_total = $row['total']; } else { $old_total = 0; } // تحديث الرصيد $name = $account_name; $sql = "UPDATE account SET debit = debit + ($total - $old_total) WHERE name = '$name'"; $conn->query($sql); // تحديث القيد المحاسبي المرتبط بالفاتورة // تحديث القيد المحاسبي المرتبط بالفاتورة $sql = "UPDATE journal_entries SET credit = 0, debit = $total WHERE name = '$customer' AND debit > 0"; $conn->query($sql); $sql2 = "UPDATE journal_entries SET credit = $total, debit = 0 WHERE name = 'حساب المبيعات' AND credit > 0"; $conn->query($sql2); echo "تم تحديث القيد المحاسبي بنجاح."; // إغلاق الاتصال بقاعدة البيانات $conn->close(); // إعادة توجيه المستخدم إلى الصفحة الرئيسية header("Location: index.php");
  24. أرجو التعليق أسفل فيديو الدرس في التعليقات لمساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا.
  25. صحيح تقريبًا، لكن هناك مشكلة، فلو قام المستخدم بإدخال 10 سيتم جمع الأرقام من 0 إلى 9 فقط حيث أن تلك طبيعة عمل الدالة range، والسؤال يريد جمع 10 أرقام، وأيضًا من الأفضل طباعة القيمة النهائية مباشرًة بدلاً من طباعتها في كل تكرار، ليصبح الكود كالتالي كالتالي: sum = 0 for m in range(int(input('Enter number: ')) + 1): sum = sum + m print(sum) لاحظي قمت بإضافة +1 للقيمة التي سيدخلها المستخدم. وبالنسبة للسؤال إذا أردتي كتابة التكرار 10 مرات فقط بدون سؤال المستخدم عن التكرار فسنكتب الكود كالتالي: sum = 0 for m in range(1, 11): sum = sum + m print(sum)
×
×
  • أضف...