Mohamad Shafiee Jaddini

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

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

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

السُّمعة بالموقع

39 Excellent

1 متابع

  1. يمكنك القيام بذلك من خلال لغة الـ backend التي تستعملها أو من خلال لغة JS او أحد اطر عملها في الـ frontend . المثال التالي يوضح كيف يمكنك القيام بذلك باستخدام لغة php: <?php // تحديد جميع المستخدمين $q = "SELECT * FROM users WHERE 1"; $users = array(); if ($result = $conn->query($q)){ while ($row= $result->fetch_assoc()){ array_push($users, $row) ; } $result->free(); } $list = '' foreach ($users as $user){ if($user['id'] % 2 == 0){ // نطبع الاسم غامقا اذا كان المعرف زوجي echo '<span><b>'.$user['name'].'</b></span>'; } else{ // اذا كان فرديا نطبعه بشكل عادي echo '<span>'.$user['name'].'</span>'; } } أو يمكنك القيام باستعلامين منفصلين أحدهما للسطور ذات المعرفات الفردية و الأخرى لذات المعرفات الزوجية كالتالي: <?php // تحديد السطور ذات المعرفات الزوجية $even_q = "SELECT * FROM users WHERE id % 2 = 0"; // تحديد السطور ذات المعرفات الفردية $odd_q = "SELECT * FROM users WHERE id % 2 = 1"; // تنفيذ الاستعلامات كالكود السابق .. و يوجد العديد من الطرق الأخرى و يبقى أفضلها حسب حالتك و موقعك الذي تقوم ببنائه.
  2. هل يمكنك مشاركة الكود لنتمكن من مساعدتك؟ الخطأ query on null يشير إلى أن الاستعلام يتم تنفيذه على اتصال غير موجود ضمن النطاق الحالي أو غير معرف، هذا مثال على كلا الحالتين: الحالة الأولى: متغير الاتصال في غير نطاق scope <?php $db = new mysqli('127.0.0.1', 'root', '', 'db_name'); function getData($user_id){ $result = $db->query("SELECT * FROM chatpp WHERE id = '$user_id'"); //.... } نلاحظ هنا أننا قمنا بتعريف متغير الاتصال db خارج نطاق التابع getData و عند استخدامه داخل التابع لتتنفيذ الاستعلام سيعطي الخطأ: query() on null ولحل هذا الخطأ نقوم بتعريف متغير الاتصال كـ global variable كالتالي: <?php global $db = new mysqli('127.0.0.1', 'root', '', 'db_name'); function getData($user_id){ $result = $db->query("SELECT * FROM chatpp WHERE id = '$user_id'"); //.... } الحالة الثانية: هي وجود خطأ في تسمية متغير الاتصال (بسبب السرعة أو نسخ و لصق الاكواد الجاهزة من الانترنت دون تنقيحها) كالتالي: <?php $db = new mysqli('127.0.0.1', 'root', '', 'db_name'); $result = $conn->query("SELECT * FROM chatpp WHERE id = '$user_id'"); حيث في الكود السابق تم تعريف متغير اتصال اسمه db و استخدام متغير اتصال اخر اسمه conn لاستدعاء تابع الاستعلام. هذه هي الاخطاء الأكثر شيوعا لهذا النوع من الأخطاء، في حال لم تحل المشكلة بتطبيق الحلول السابقة قم برفع الكود كي نتمكن من مساعدتك.
  3. أن الخطأ يخبرك أنك تستدعين تابعا يدعى avarage ولكنه معرف باسم average انتبه للفرق بين e , a إن قمت بتصحيح الاسماء سيعمل كل شيء على ما يرام
  4. مرحباً، لديك خطأ في تعريف التابع "avarage" حيث أن تعريف التوابع لا يتم بهذا الشكل ، و إنما يتم كالتالي: بداية نعرف نوع التابع هل هو عام أم خاص public / private ثم نقوم بتعريف نوعه هل هو رقم صحيح - حقيقي - سلسلة محرفية .. ثم نقوم بكتابة اسم التابع الذي نريده في حالتنا هنا avarage ثم نقوم بتمرير العوامل التي نريد من التابع معالجتها بين قوسين مع ذكر نوع كل عامل قبله في حالتنا مررنا ثلاث عوامل من نوع العدد الصحيح int public float average( int num1, int num2, int num3) { //جسم التابع كما في الصورة صحيح نستخدم العوامل الممررة لجمعها و حساب المتوسط } نعرف غرض من الصف كما في الصورة التي أرفقتها ثم نستدعي التابع avarage من الغرض السابق ونمرر له قيم للعوامل الثلاث كالتالي: public static void main(String[] args){ System.out.print(mycalculator.avarage(20,30,14)); }
  5. مرحباً يخبرك الخطأ بالتالي: Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead. لديك في أحد ملفات العناصر (الكائنات component) عنصرا فيه أكثر من عنصر داخل وسم ال template لذلك قم بالتاكد من وجود عنصر ابن واحد فقط داخل وسم ال template ، ثم ضع بقية العناصر التي تريدها بداخل هذا الابن مهما كان عددها. مثلا هذا الكود سيعطيك خطأ: <template> <div class=""> </div> <div class=""> </div> </template> ولتصحيحه قم بوضع عنصر ابن واحد داخل template كالتالي: <template> <div class=""> <div class=""> </div> <div class=""> </div> </div> </template>
  6. للدخول في مجال علم الروبوتيك تحتاج لأن تعلم أنه مجال مبني على عدة علوم أساسية و تقدمك في تعلم هذا المجال رهنٌ لإتقانك تلك العلوم، و هي كالتالي: أولا الميكانيك و التصميم الميكانيكي: يجب أن تعرف بعض الاساسيات في علم الميكانيك كقوانين الحركة و التحريك و المسننات و البكرات و الدوران و العزوم .. ثانياً أساسيات الكهرباء و الالكترونيات: يجب أيضا ان تتعلم بعض الاساسيات في قوانين الكهرباء و الالكترونيات لأنك لاحقا ستضطر لتصميم داراتك الخاصة لتنفذ مهمة معينة، و ستلزمك بكل تأكيد في حال تقدمك في هذا المجال عند تصميم و بناء روبوتات مصممة بشكل شخصي. ثالثاً البرمجة و الخوارزميات: إن المهارة الاساسية المطلوبة في بناء الروبوتات هي البرمجة و مهارة حل المشاكل لذلك يعد اتقانك لهاتين المهارتين عاملا اساسيا لتعلمك الروبوتيك. أما بالنسبة لخطوات عملية للبدأ بهذا المجال فأنصحك بالخطوات التالية: تعلم سكراتش لاتقان اساسيات الخوارزميات و طرق حل المشاكل. تعلم LEGO robotics kits للتعرف على أساسيات الميكانيك و البرمجة. تعلم و تطبيق مشاريع روبوتية باستخدام متحكم أردوينو. الانتقال لمتحكمات صغيرة أقوى و ذات خصائص تحكمية أكبر و تعلم أساسيات النظم المضمنة embedded systems. أخيرا عند اتقانك لجميع ما سبق و تقدمك في البرمجة يمكنك البدأ بتعلم اساسيات الذكاء الصنعي AI و محاولة تطبيق بعض خوارزمياته في مشاريعك.
  7. مرحباً، يمكنك تسجيل الدخول عن طريق أحد الحلقين المذكورين ( البريد الالكتروني او اسم المستخدم) من خلال تنفيذ الخطوات التالية: بالبداية بكل تأكيد يجب أن تكون قد أنشأت ملفات المصادقة auth scaffolding ، من خلال عدة خيارات متاحة أثناء بناء تطبيقك، مثلاً: php artisan ui bootstrap --auth بعدها تأكد من اضافة حقل username في جدول المستخدمين الخاص بك لتكون كالتالي: <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->string('email'); $table->string('username')->nullable(); $table->timestamp('email_verified_at')->nullable(); $table->boolean('is_admin')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } } ولا تنسى القيام بـ migrate في حال قمت بالتعديل على الملف السابق ليتم بناء قاعدة البيانات من جديد في ملف واجهة تسجيل الدخول login blade قم بحذف حقل البريد الالكتروني email و إضافة حقل اسم المستخدم username كي يكون بديلا عنه (سنقوم بجعله يقبل الاثنين في الخطوة القادمة) عبر الكود التالي: <div class="form-group row"> <label for="username" class="col-md-4 col-form-label text-md-right">Username Or Email</label> <div class="col-md-6"> <input id="username" type="username" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autofocus> @error('username') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> الان سنقوم بتعديل تابع تسجيل الدخول login في ملف LoginController كي يحقق الوظيفة المطلوبة كالتالي: <?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Http\Request; class LoginController extends Controller { use AuthenticatesUsers; protected $redirectTo = '/home'; /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('guest')->except('logout'); } /** * Create a new controller instance. * * @return void */ public function login(Request $request) { $input = $request->all(); $this->validate($request, [ 'username' => 'required', 'password' => 'required', ]); $fieldType = filter_var($request->username, FILTER_VALIDATE_EMAIL) ? 'email' : 'username'; if(auth()->attempt(array($fieldType => $input['username'], 'password' => $input['password']))) { return redirect()->route('home'); }else{ return redirect()->route('login') ->with('error','Email-Address And Password Are Wrong.'); } } } يقوم التعديل السابق بفحص البيانات المدخلة في حقل username فإذا كانت بصيغة email فإنه سيقوم بمقارنتها بعمود البريد الالكتروني في قاعدة البيانات و الا فإنها اسم مستخدم و سيقارنها بحقل username بقاعدة البيانات.
  8. مرحبا، يخبرك الخطأ انه لم يتعرف على العنصر React في السطر السابع، لذلك قم باستدعاء عنصر React لتتمكن عناصر الصفحة من التعرف عليه و استدعائه عبر تعديل السطر الثالث ليصبح كما يلي: import React, { createElement } from 'react'; وبذلك يفترض أن يعمل الكود لديك بالتوفيق
  9. مرحباً @حسين صالح أولا يقصد بكلمة "كود" code الشيفرة البرمجية او التعليمات التي تفوم بكتابتها. ثانيا سبب الكتابة الزائدة هو كود (شيفرة) الـ HTML التي كتبتها اسفل التعليمة alert التي موجودة بالصورة: ثالثا ان التابع alert هو تابع للغة JavaScript و لا يجوز أن نضعه ضمن جزء الـ body في ملف الـ HTML بل نضعه في قسم مخصص له هو العنصر script ، وبالتالي الكود الصجيج سيكون هكذا: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Example</title> </head> <body> Hello! Here we write the HTML code! <script> // نستطيع هنا كتابة كود بلغة جافاسكريبت console.log("We write JS code inside the < script > tags"); alert("Here we write the JS code"); </script> </body> </html> تحياتي.
  10. مرحباً صديقي @Ali Ali19 لا أنصحك باتباع هذه الطريقة في الحصول على إجابات الأسئلة و الإختبارات، بل الأفضل أن تحاول حلها بنفسك و تعرض إجاباتك و محاولاتك هنا و نحن سنقوم بمساعدتك و تصويب الأخطاء إن وجدت. بشكل عام، يمكنك الاستفادة من الشرح التالي في أداء هذه المهمة: إن شكل (صيغة) تعريف دالة يعتمد على لغة البرمجة التي تستخدمها، فمثلاً في لغات PHP, JS يعرف التابع على الشكل التالي (اذا كنت تريد تطبيقها في جافا عليك باستخدام الـ synatax الخاص بجافا طبعا، هنا ساستخدم PHP): // PHP تعريف تابع في // fun_name تشير لاسم التابع المراد تعريفه // $var هو اسم المتغير الذي نقوم بتمريره للتابع و يمكنك تمرير أكثر من متغير و الفصل بينهما بفاصلة // لاحظ ان المتغيرات في PHP تكون مسبوقة بالرمز $ function fun_name($var){ // تعليمات جسم التابع } يمكنك المرور على عناصر مصفوفة من خلال استخدام حلقات for, while مثلا هنا في هذا المثال سأقوم بالمرور على مصفوفة و أفحص عناصرها وأضع آخر عنصر زوجي (يقبل القسمة على 2 بدون باقي) ضمن متحول اسمه num: $arr = array(2,5,6,9,8,66,4,7); $num; // عرفنا متغير لنضع فيه قيمة الرقم الذي يقبل القسمة على 2 for ($i=0; $i< count($arr); $i++){ if( $arr[$i] % 2 == 0) // نفحص اذا كان العدد زوجي $num = $arr[$i]; // نضعه في المتحول num } echo $num; // نطبع قيمة المتحول التي ستكون آخر عنصر زوجي في المصفوفة يمكنك الاستفادة من المنهجية السابقة (طريقة التفكير لحل المشكلة) و تطبيقها على مثالك مع بعض التعديلات لكي تلائم المهمة المطلوبة. تحياتي.
  11. مرحباً @منى عاطف إن كنت تقصدين وضع روابط تأخذهم عند الضغط عليها لصفحة معينة على وسائل التواصل الاجتماعي (معلومات التواصل) فقط، عندها لا حاجة لأن يكون الموقع ديناميكياً و يمكنكِ تحقيق هذه الوظيفة عبر موقع استاتيكي. تحياتي.
  12. مرحبا @منى عاطف كما ذكرت سابقاً، لجعل موقعك يتفاعل مع المستخدمين أو مع المواقع الأخرى ( مواقع التواصل الإجتماعي) فستحتاجين لكي يكون ديناميكياً و ستقوم اللغة التي تعمل في الـ backend بهذه الوظائف. بالنسبة لدورة الـ php فهي دورة backend ، إن كنت توديدن الإطلاع على دورة الـ frontend فإن اسمها هو: "دورة تطوير واجهات المستخدم" يمكنك زيارتها من الصفحة الرئيسية لموقع حسوب، كما هو موضح بالصورة: تحياتي.
  13. مرحباً @منى عاطف في حال اشتراكك في إحدى دورات حسوب ستتمكنين من مشاهدة فيديوهات المقدمة للدورات الأخرى، ولكي تشاهدي كامل محتوى دورة php يتوجب الإشتراك بهذه الدورة. بالنسبة لعملية بناء أي تطبيق برمجي فإنها تمر بما يدعى دورة حياة التطبيق البرمجي (Software Application Lifecycle) و هي عدة مراحل يجب أن يمر بها التطبيق لضمان سير عملية التطوير بشكل سليم، وهي كالتالي: مرحلة التحليل: و هي المرحلة التي يتم فيها جمع المتطلبات الرئيسية لهذا التطبيق و ما الغاية منه و ما هي تفاصيل عمله و تتم بالتعاون مع مستخدمي التطبيق حيث سيقومون بتوفير المعلومات للمحلل لكي يصيغها بأشكال و صيغ يسهل على المبرمجين فهمها و يسهل عليهم تحويلها لاحقاً إلى تطبيق برمجي. مرحلة التصميم: يتم تصميم قاعدة البيانات و عدة مخططات توضح سير مرحلة البناء (مخططات ERP - Class Diagram - Use Case Diagram ..الخ) بناءً على متطلبات الزبون التي تم جمعها مسبقا في مرحلة التحليل. مرحلة البناء: يتم فيها برمجة و بناء التطبيق (بناء الكود). مرحلة الاختبار: حيث تجرى عدة اختبارات لمختلف السيناريوهات المحتملة على التطبيق و في حال تجاوز هذه الاختبارات فإن التطبيق يصبح جاهزاً لمرحلة الإطلاق. قد يختلف عدد المراحل السابقة من مرجع إلى آخر، ولكن كلها تشترك بالإتفاق على أهمية عملية التحليل، حيث أن الخطأ الذي يحدث في عملية التحليل سواء كان معلومة خاطئة من العميل أو تعبير عنها بشكل خاطئ من المحلل سيكون له تبعات غير محمودة مع تقدم عملية تطوير التطبيق، إذ انه سيكون من المكلف جدا في مراحل متأخرة إصلاح أخطاء وجدت بسبب تحليل خاطئ، لذلك يجب توضيح هذا الأمر لعميلك/صديقتك كي تتمكني من تطوير التطبيق بشكل جيد. بالتوفيق.
  14. مرحباً أحمد، هل يمكنك إخباري ما الزر الذي تحاول ضغطه كي تظهر لك هذه القائمة؟
  15. مرحباً @عبد الواحد الحدادي بالطبع هذه التقنيات تعتمد على لغة JavaScript بشكل أساسي (باستثناء angular التي تعتمد على لغة typeScript ثم تترجمها للغة javaScript) يمكن لمطور الواجهات الامامية frontend developer تعلم هذه المنصات (Frameworks) حالما يتقن أساسيات لغة JavaScript إذ أنه سيضطر بشكل أو بآخر لاستخدامها بشكلها الأساسي (JavaScript Pure) خلال تصميم و برمجة المواقع. من فوائد هذه التقنيات أنها: تنظم معمارية تطبيقك، تقسم صفحاتك و عناصرها بطريقة Modular تختصر عليك كتابة الكثير من الأكواد من خلال استخدام توابعها الجاهزة تؤتمت العديد من المهام التي كنت ستقوم بها بشكل يدوي لو أنك تستخدم JavaScript pure تحياتي.