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

بلال زيادة

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

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

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

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

    30

كل منشورات العضو بلال زيادة

  1. لا يمكنك حجز اسم دومين إلى بشرائه من شركات الاستضافات التي تزود تأجير النطاقات و يجب عليك بعد شراء الدومين إعادة توجيهه إلى عنوان ip الخاص بالخادم بك ، لذلك يجب أن يكون ip الخادم ثابت لكي لا تفقد ip الخادم مما يدفعك في كل مرة تفقده من اعادة توجيه النطاق لل ip الجديد.
  2. يمكنك دخول الدورة بدون اتمام دورة تطوير واجهة المستخدم بدون أي مشكلة و لكن كنصيحة يجب عليك إتقان HTML , CSS JavaScript و لو بنسبة 80 % من كل لغة حتى تستطيع بناء جسم الموقع باستخدام هذه اللغات ، و لكن كما أسلفت يمكنك البدء بدورة PHP بدون إتمام دورة برمجة واجهات المستخدم .
  3. أريد كامل ملف المشروع مع قاعدة البيانات حتى اجربه عندي
  4. يمكنك إضافة bind_param للكود الخاص بك $stmt->bind_param("sss", $firstname, $lastname, $email); فيصبح الكود كالتالي if (isset($_POST['validate'])) { echo $email=$_POST['validate'].'<br>'; $stmt=$conn->prepare("SELECT * FROM admins WHERE email=? "); $stmt->bind_param("s", $email); $stmt->execute(); echo $admins=$stmt->rowCount(); } تربط هذه الدالة bind_param المعلمات باستعلام SQL وتخبر قاعدة البيانات بالمعلمات و تسرد الوسيطة "s" أنواع البيانات التي تكون المعلمات و يخبر الحرف s مشغل mysql أن المعلمة عبارة عن نص. i - integer d - double s - string b - BLOB يجب أن يكون لدينا واحد من هؤلاء لكل معلمة , من خلال إخبار mysql بنوع البيانات المتوقع ، فإننا نقلل من مخاطر حقن SQL. يمكنك أخباري بعد تعديل الكود بالنتيجة.
  5. يجب عليكي تفقد البريد الإلكتروني الخاص بكي ستجدين رسالة بها التفاصيل، و لكن إذا لم تكن الرسالة موجودة يمكنك مراسلة الدعم الفني من هنا و أخبارهم بمشكلتك و سوف يعملون على حالها بشكل عاجل.
  6. تعيد تنفيذ البرنامج إلى الوحدة التي قامت بالاستدعاء، وسيستمر التنفيذ إلى التعبير الذي يلي تعبير الاستدعاء ، و إذا استدعيت عبارة return داخل الدالة فإنّها ستنهي تنفيذ الدالة على الفور وتعيد معاملها كقيمة لاستدعاء الدالة، تنهي return أيضًا تنفيذ عبارة eval()‎ أو ملف الشيفرة. إن استدعيت عبارة return من النطاق العام (global scope) فإنها تنهي عملية تنفيذ ذلك الملف. وإن كان ملف الشيفرة مضمنًا (included) أو مطلوبًا (required)، فإن التحكّم يعود إلى الملف المستدعي مرة أخرى. إضافة إلى ذلك، إن كان ملف الشيفرة الحالية مضمنًا فإن القيمة التي تأخذها return ستعاد كقيمةٍ للتعبير include. يؤدي استدعاء عبارة return في ملف الشيفرة الرئيسي إلى إنهاء تنفيذ تلك الشيفرة. إن سُمّي ملف الشيفرة الحالية بواسطة الخيارين auto_prepend_file أو auto_append_file في ملف الإعدادات php.ini، فإن تنفيذ تلك الشيفرة سيتوقف. ملاحظة: لمّا كانت عبارة return واحدةً من البنى التابعة للغة وليست دالةً، فإن الأقواس المحيطة بالمعاملات ليست مطلوبة ومن الشائع عدم استخدامها، بل يجدر القيام بذلك لأنّ الشيفرة في هذه الحالة ستؤدي عملًا أقل. ملاحظة: إن لم تتوافر أي معاملات لعبارة return، فيجب حذف الأقواس وستعاد القيمة NULL. يؤدي استدعاء عبارة return مع الأقواس ودون أي معاملات إلى إطلاق خطأ إعرابي (parse error). ملاحظة: لا يجوز إحاطة المتغير الذي ترغب في إعادته بالأقواس عندما يكون الإرجاع بالمرجعية، لأن هذا لن يعمل مطلقًا. يمكن فقط إرجاع المتغيرات بالمرجعية وليس إرجاع نتيجة العبارة. فلو استخدمت العبارة return ($a);‎ فإنك في هذه الحالة لا ترجع متغيرًا ولكن ترجع نتيجة التعبير (‎$a) (وهي بالتأكيد قيمة المتغير ‎$a). <?php function getString($name){ return $name; } echo getString("Hsoub"); ?> /// النتيجة Hsoub ففي المثال التالي ننشأ دالة تقوم باستقبال متغير واحد و هو متغير يستقبل الاسم و من ثم نقوم باستخدام return بإرجاع قيمة متغير name$ و نقوم بطباعتها.
  7. حسبما تريد ، كل ما كان الموقع مرتب و مبني بشكل قوي ، كلما كان ترويج لك و جلب المزيد من الاعمال .
  8. يمكنك وضعك صورتك و مهارات التي تتقنها في الموقع ولكن لاحظ يفضل عندما تضع صورتك أن تضع صورة مناسبة ذات جودة عالية وأيضا يفضل ذكر بجانب كل مهارة النسبة التي تمتلكها من هذه المهارة و أيضا يمكنك وضع روابط لمشاريع سابقة قمت بتنفيذها و أيضا يمكنك وضع نموذج الاتصال بنا ، أي يستطيع زائر الصفحة بالتواصل معك و أخيرا يفضل وضع روابط صفحاتك الشخصية التي تمتلكها على مواقع العمل الحر كمستقل و خمسات.
  9. هناك دالة جديدة في PHP اسمها str_starts_with بحيث تقوم بالتحقق مما إذا كان النص يبدأ بسلسلة فرعية معينة مثل $string = 'مرحباً بك في إكاديمية حسوب'; if (str_starts_with($string, 'مرحباً')) { echo "هذا النص يبدأ بكلمة مرحباً"; } لاحظي تم تمرير معاملين للدالة بحيث المعامل الأول النص الذي تريدين البحث بداخله ثم المعامل الثاني هو النص المراد البحث عنه كما في المثال السابق.
  10. يجب عليكي تمرير البيانات المرسلة من نموذج الإدخال إلى استعلام يقوم بفحص هذه البيانات المرسلة ، إذا موجودة ممكن أن يتم تسجيل الدخول عن طريق تحويل الصفحة إلى صفحة أخرى ، و إذا كانت البيانات المرسلة غير موجودة يقوم بطباعة أنه هذه البيانات غير موجودة و لو نظرنا للكود التالي <?php session_start(); if($_SERVER["REQUEST_METHOD"] == "POST") { $myusername = mysqli_real_escape_string($db,$_POST['username']); $mypassword = mysqli_real_escape_string($db,$_POST['password']); $sql = "SELECT id FROM admin WHERE username = '$myusername' and passcode = '$mypassword'"; $result = mysqli_query($db,$sql); $row = mysqli_fetch_array($result,MYSQLI_ASSOC); $active = $row['active']; $count = mysqli_num_rows($result); if($count == 1) { session_register("myusername"); $_SESSION['login_user'] = $myusername; header("location: welcome.php"); }else { $error = "اسم المستخدم أو كلمة المرور خطأ"; } } ?> لاحظي في الكود التالي $myusername = mysqli_real_escape_string($db,$_POST['username']); $mypassword = mysqli_real_escape_string($db,$_POST['password']); أن يتم جلب اسم المستخدم و كلمة المرور و تخزينها في متغيرين ثم في الكود التالي $sql = "SELECT id FROM admin WHERE username = '$myusername' and passcode = '$mypassword'"; $result = mysqli_query($db,$sql); $row = mysqli_fetch_array($result,MYSQLI_ASSOC); $active = $row['active']; لاحظي يتم تنفيذ استعلام SELECT و يتم التحقق من إذا كان اسم المستخدم و كلمة المرور موجودة أو لا ، ثم إذا كان موجود يقوم بتحويله لصفحة أخرى ، و إذا لا يتم طباعة جملة اسم المستخدم أو كلمة المرور خطأ
  11. يمكنك استخدام روبط CDN للمكتبة ، بحيث يمكنك ملفات css ، كما في الكود التالي <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous"> و يمكنك استخدام ملفات js كما في الكود التالي <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script> ويمكنك تضمينها في ملفات كما في الكود التالي <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Bootstrap demo</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous"> </head> <body> <h1>Hello, world!</h1> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script> </body> </html>
  12. React (والتي تُعرَف أيضًا باسم React.js أو ReactJS) هي مكتبة JavaScript تُستخدَم لبناء واجهات المستخدم. تُدار React من شركة Facebook بالإضافة إلى مجتمع كبير من المطورين، فهي مشروعٌ مفتوح المصدر. تُسهِّل React عملية إنشاء واجهات مستخدم تفاعليّة. عليك فقط تصميم عروض (views) لكل حالة في تطبيقك، وستُحدِّث React المكوّنات الصحيحة بكفاءة وتقوم بتُصيّرها عندما تتغير بياناتك. تعتمد React بشكل أساسي على مفهوم المكوّنات (Components). حيث يجب عليك بناء مكوّنات مُغلَّفة تُدير حالتها الخاصّة، ومن ثمّ تُركِّب هذه المكوّنات مع بعضها لإنشاء واجهات مستخدم مُعقّدة. ولمّا كان منطق المكوّنات مكتوبا باستخدام JavaScript بدلًا من صيغة القوالب، فبإمكانك تمرير الكثير من البيانات عبر تطبيقك بسهولة وإبقاء الحالة بعيدة عن DOM. تسير React على مبدأ «تعلّم مرّة واكتب في أي مكان»، إذ لا تفترض تعاملك مع تقنية مُحدّدة، بل تستطيع تطوير ميزات جديدة فيها دون إعادة كتابة شيفرة جديدة. يُمكِن تصيير React على الخادوم باستخدام Node.js، ويُمكن من خلالها إنشاء تطبيقات الهواتف النقالة عبر React Native كما ويمكنك إلقاء نظرة على react في موقع ويكي حسوب من هنا
  13. هل قمتي بتطبيق الفكرة و حصلت أي مشكلة ، يمكننا مساعدتك في أي مشكلة ، هل يمكنك تجريب كتابة الكود كاملاً و أخباري بالنتيجة ؟
  14. في البداية دعنا نوضح الخاصية createTextNode ، فمثلا نريد إنشاء عنصر نقوم باستخدام createElement كالتالي // أنشئ العنصر الجديد var newDiv = document.createElement("div"); ثم نريد إضافة محتوى لهذا العنصر عن طريق الخاصية createTextNode كالتالي // ضَع محتوى داخل العنصر var newContent = document.createTextNode("مرحبًا"); ثم نضيف المحتوى للعنصر المنشئ مسبقاً بهذه الطريقة // أضف عقدة النّص إلى العنصر المُنشأ newDiv.appendChild(newContent); وبالتالي نفهم بأن مهمة الخاصية createTextNode مهمتها إدخال محتوى للعنصر، أما خاصية innerHtml فهذه الخاصية تستطيع من إدخال وسم HTML بداخل العنصر مثل let div = document.createElement('div'); div.innerHTML = "<strong>Hi there!</strong> You've read
  15. لا توفر JavaScript المصفوفة متعددة الأبعاد في الأصل ومع ذلك يمكنك إنشاء مصفوفة متعددة الأبعاد من خلال تحديد مصفوفة من العناصر حيث يكون كل عنصر أيضًا مصفوفة أخرى ، لهذا السبب يمكننا القول أن مصفوفة JavaScript متعددة الأبعاد عبارة عن مصفوفة من المصفوفات ، أسهل طريقة لتعريف مصفوفة متعددة الأبعاد هي استخدام التدوين الحرفي للصفيف. للإعلان عن مصفوفة فارغة متعددة الأبعاد ، يمكنك استخدام نفس صيغة الإعلان عن مصفوفة أحادية البعد مثل let activities = []; و لتعريف مصفوفة متعددة الأبعاد ستكون بهذا الشكل let activities = [ ['one', 1], ['two', 2], ['three', 3] ]; لاحظ في المصفوفة قد تم تعريف اسم العدد نصياً و رقم العدد و يمكنك طباعة نتيجة المصفوفة باستخدام الدالة table مثل console.table(activities) و تكون نتيجة الكود ┌─────────┬─────────┬───┐ │ (index) │ 0 │ 1 │ ├─────────┼─────────┼───┤ │ 0 │ 'one' │ 1 │ │ 1 │ 'two' │ 2 │ │ 2 │ 'three' │ 3 │ └─────────┴─────────┴───┘
  16. هل يمكنك أخباري بأي لغة تريد كتابة الدوال لنستطيع مساعدتك بشكلٍ أفضل.
  17. لاحظ أن سبب الخطأ هو أن أكواد الجافاسكربت حالياً يتم تنفيذها قبل أن تتحمل عناصر الصفحة لأنه تم وضع الملف قبل وسم إغلاق head و بالتالي لنضمن أن عناصر الصفحة قد تم تحميلها كاملاً قبل تحميل ملف الجافاسكربت نقوم بوضع سطر استدعاء ملف الجافاسكربت قبل وسم إغلاق body فهذه أفضل طريقة لتجنب مثل هذه الأخطاء.
  18. صحيح ، يتم جلب ملف jsfile.js في الصفحة و يمكنك استخدام جافاسكريبت في الصفحة ، إذا كان الملف غير مدرج في الصفحة فيجب التأكد من مساره و أو اسم الملف عند استدعائه كما في السطر التالي <script type="text/javascript" src="jsfile.js"></script>
  19. يجب وضع ملف استدعاء جافاسكريبت قبل وسم نهاية body بهذا الشكل <sctipt type="text/javascript" src="jsfile.js"></script> </body> </html> ثم يجب عليك فتح ملف index.html في المتصفح و ليس باستخدام ملف jsfile.js بحيث عندما تقوم بفتح ملف index.html لن تظهر لك هذه المشكلة .
  20. الأمر بغاية البساطة ، هناك دروس يتم شرح نظرياً لإرشادك و تعليمك أكثر عن الحاسوب فهذه الدروس يستكون بشكل نظري أي لا يوجد فيها أي تطبيق و لكن الدروس التي سيكون فيها تطبيق سيطلب منك المدرب في الفيديو تطبيق ما يفعله مثل قسم تعلم سكراتش فستجد أن هناك الكثير من الدروس التي يجب عليك التطبيق فيها و صناعة الالعاب مع المدرب ، أيضا هناك دروس تطبيقية كثيرة في قسم أساسيات البرمجة ، حيث سيقوم المدرب بشرح مبادئ البرمجة و لغة جافاسكريبت حيث في هذه الدروس ستقوم بالتطبيق مع المدرب فيما يشرحه ، لذلك الدروس النظرية ستجد أن المدرب لا يقوم بتطبيق أكواد فيها بالعكس في الدروس العملية.
  21. الدالة forEach() تستدعي دالةً لكل عنصر موجود في المصفوفة. و تركيبها كالتالي Array.prototype.forEach() ماذا يعني ذلك ، ماذا لو كان لدينا مصفوفة مخزنة في ثابت وتحتوي على ثلاث عناصر كالتالي const arr = ['a', 'b', 'c']; فيمكننا استخدام forEach مع هذه الثابت بهذا الشكل arr.forEach(function(element) { console.log(element); }); وسيتم طباعة كل عنصر في المصفوفة بحيث يكون ناتج الكود السابق // a // b // c الأن لاحظ أنه البنية العامة للدالة هي arr.forEach(callback[, thisArg]) و callback هي الدالة التي ستُنفَّذ كل عنصر من عناصر المصفوفة ، وتقبل ثلاثة وسائط ، الدالة forEach تُنفِّذ الدالة callback على كل عنصر موجود في المصفوفة. لاحظ أنَّ الدالة callback ستُستدعى على الفهارس التي لها قيمٌ مسندةٌ إليها، فهي لن تستدعى للفهارس التي حُذِفَت أو التي لم تُسنَد إليها قيم ، ستستدعى الدالة callback مع تمرير ثلاثة وسائط إليها: قيمة العنصر (currentValue)، وفهرسه (index)، وكائن المصفوفة (array). إذا وفّرنا المعامل thisArg إلى الدالة forEach، فسيستخدم كقيمة this داخل الدالة callback، وإن لم نُحدِّد له قيمةً فستستعمل القيمة undefined. لاحظ أنَّ الدالة forEach لا تغيّر المصفوفة التي تستدعى عليها بأيّ شكلٍ من الأشكال. من غير ممكن إيقاف حلقة تكرار forEach()‎ إلا برمي استثناء، وإن كنت تحتاج إلى إيقاف حلقة التكرار فلا يُنصَح باستخدام الدالة forEach()‎، وإنما استخدم حلقات التكرار العادية. إذا أردتَ اختبار قيم المصفوفة فاستخدم الدالة every()‎ أو some()‎، ويمكن استخدام الدوال الجديدة find()‎ و findIndex()‎ لمعرفة وجود قيمة ما. ومن الأمثلة عليها ، لاحظ يوجد لدينا دالة تقوم بطباعة رقم و اسم العنصر كالتالي var text = ""; function myFunction(item, index) { text += index + "- " + item + "<br>"; } ومن ثم لدينا مصفوفة بهذا الشكل var text = ""; const numbers = ["one", "two", "three"]; // هذه المصفوفة function myFunction(item, index) { text += index + "- " + item + "<br>"; } لاحظ نريد تطبيق الدالة myFunction على عناصر المصفوفة فيمكننا استخدام forEach كالتالي var text = ""; const numbers = ["one", "two", "three"]; numbers.forEach(myFunction); // هنا function myFunction(item, index) { text += index + "- " + item + "<br>"; } ثم نقوم بإنشاء عنصر لطباعة النتيجة في الصفحة <div id="text"></div> ثم نقوم في جافا سكريبت باسناد النتيجة للعنصر الذي يحمل id و هو text كالتالي var text = ""; const numbers = ["one", "two", "three"]; numbers.forEach(myFunction); document.getElementById("text").innerHTML = text; function myFunction(item, index) { text += index + "- " + item + "<br>"; } فلاحظ النتيجة ستكون بعد تطبيق الدالة على عناصر المصفوفة 0- one 1- two 2- three
  22. تم اختيار الموضوعات في الدروة بما تناسب الطلاب الذين لا يكون لديهم أي خبرة كافية في لغة جافا سكريبت و بالتالي تجد أن الدروس تبدأ تدريجياً في توجيه الطالب من الأساسيات إلى الدروس المتقدمة و تجد بأن هناك شرح لأساسيات react.js و كذلك شرح لأساسيات node.js و تجد أن الدروس تشرح الأساسيات ليتم شرح أساسيات لأطر عمل آخرى مثل Electron.js و Ionic و Next.js وعدم التركيز على أطار عمل بدون غيره. كذلك يمكنك التواصل مع الدعم الفني من هنا لاقتراح ما تريد و سيعملون على إجابتك بشكلٍ أفضل
  23. هناك طريقة يتم استخدامها و هي إرجاع متغير وليكن باسم page في api و يحمل رقم الصفحة التي تريد عرض السجلات فيها ( مثل فكرة تعدد الصفحات في المواقع الالكترونية ) و بالتالي يكون الرابط الأفتراضي كالتالي http://127.0.0.1:8000/api/posts?page=1 الأن تقوم بعرض السجلات المرجعة من هذا api في ListView كالمعتاد و لكن لاحظ أنه يتم إنشاء متغير جديد و ليكن باسم page في فلاتر كالتالي var page = 1; ثم عند مناداة رابط api يتم استبدال رقم 1 بقيمة متغير page الذي قمنا بإنشائه فيصبح الرابط كالتالي var url = "127.0.0.1:8000/api/posts?page=" + page; لاحظ القيمة الافتراضية لهذا المتغير هي 1 ، ثم عند النقر على الزر تقوم بزيادة متغير page بمقدار 1 ويجب إحاطة العملية ب Setstate ليتم تحديث متغير page كالتالي TextButton( child: Text("Pressed Here"), onPressed: (){ setState(() { page = page + 1; }); } لاحظ عند الضغط في المرة الاولى سيتم تغيير قيمة متغير page من رقم 1 إلى 2 و هكذا .
×
×
  • أضف...