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

سمير عبود

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

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

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

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

    34

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

  1. أعتقد أنه يُمكن لأي شخص الإشتراك بالنشرة البريدية بغض النظر عن ما إذا كان مشترك في الموقع او لا فيُمكن للزوار أيضاً الإشتراك في النشرة البريدية لذلك من الأفضل إنشاء جدول جديد تضع به الأشخاص الذين إشتركو في النشرة البريدية يحتوي الجدول على حقل email كحقل مبدئي. في إستمارة تسجيل عضوية جديدة تضيف حقل checkbox يكون إختياري إذا أراد المستخدم الإشتراك بالنشرة البريدية يُحدد ذلك الحقل و على أساسه تُسجل إيميل ذلك الشخص في جدول newsletters. أما في إستمارة الإشتراك بالنشرة تضع حقل الإيميل و في المتحكم الخاص بالعملية تبحث عن الإيميل الذي أدخله الشخص في جدول newsletters إن لم يكن موجود تقوم بإضافته.
  2. لاحظ السطر 53 و السطر 54 أنت تستخدم إسم الحقل image و ليس لديك في الإستمارة حقل بالإسم image بل image_path لجب اللاحقة يُمكنك إستخدام: $extension = $request->file('image_path')->extension(); نفس الأمر في السطر 54 يجب إستخدام الحقل image_path بدل image: $request->file('image_path')->move ... // أو $request->image_path->move ... أنصحك بإستخدام نظام التخزين في laravel فهو بسيط فقط إجعل الdisk الذي يستخدمه التطبيق public و قم بإنشاء الوصلة بين storage و public و استخدم دالة store بهذا الشكل: $path = $request->file('image_path')->store('images'); ستجد في التوثيق الرسمي كل ما تحتاجه: file-uploads
  3. الخطأ بداخل الدالة store في المتحكم حيث أنه يتم إستدعاء الدالة extension على null أعتقد أنه تريد هناك جلب لاحقة الصورة لكن لا يمكن تحديد سبب المشكلة إذا لم أرى الكود الخاص بالدالة store
  4. لاحظ في الإستمارة حقل العنوان أعطيته نفس الإسم description في الخاصية name و هي نفس القيمة للحقل الثاني تحقق من الحقول التي تحقق منها في التابع store في جزء ال validation موجودة بنفس الأسماء في الإستمارة أعتقد ان هناك حقل title يجب ان يكون من ضمن البيانات المرسلة في الطلب لكن في الإستمارة غير موجود فأنت تعطيه إسم description
  5. من خلال الفيديو يتضح ان بعد إرسال الطلبية جزء ال validation يفشل لسبب او لآخر يمكنك التأكد من ذلك، عند فشل التحقق يتم إرجاع المستخدم للخلف أي للصفحة الماضية و يتم إرجاع رسائل الأخطاء في المصفوفة errors تحقق من ان اسماء الحقول المطلوبة هي نفسها التي تضعها في حقول الإستمارة كما انه لرفع ملف او صورة يجب إضافة الخاصية enctype="multipart/form-data" للإستمارة تأكد من هذه الأمور التي اخبرتك بها إن لم تستطع يرجى توضيح شيفرات الإستمارة و الدالة المسؤولة عن تخزين السجل
  6. لكن لاحظ انك تقوم بتعريف المتغير بالإسم project بدون s و تمرره ايضا بذلك الإسم يجب تمرير الإسم بنفس الإسم الذي تستخدمه
  7. إذا كنت تريد إعادة توجيه المستخدم بعد إضافة بيانات المشروع لقاعدة البيانات يُمكنك ذلك من خلال الدالة المسؤولة عن التخزين في آخر الدالة تكتب: return redirect('/projects'); // أو return redirect()->route('projects.index'); أما المشكلة الأساسية أي عدم التعرف على المتغير projects فهل تأكدت من أنك تمرر المتغير من الدالة index: return view('projects.index', compact('projects'));
  8. غالباً إن كان الموقع مبني على نظام ووردبريس و تم إستخدام قالب مشهور و لم يتم التعديل على إسمه يُمكنك إستخدام المتصفح الخاص بك فقط لمعرفة إسم القالب و هذا مثال بإستخدام متصفح كروم و أدوات المطورين:
  9. لا أدري ما الذي تقصده لأن الآن عند إدخال عدد روماني يتم تحويله إلى عدد في النظام العشري و يطبعه ثم ينتظر البرنامج لإدخال عدد آخر و هكذا حتى 5 أعداد و بعد ذلك يتم إنهاء البرنامج. المشكلة لديك أن التحويل خاطئ بسبب خطأ في الدالة rode و هذا الصواب: public static int rode(String str) { int res = 0; for (int i = 0; i < str.length(); i++){ int s1 = value(str.charAt(i)); if(i+1 < str.length()){ int s2 = value(str.charAt(i+1)); if(s1 >= s2){ res = res + s1; } else { res = res + s2 - s1; i++; } } else { res = res + s1; } } return res; } أما في الدالة value فينقصك إكمال بقية الرموز: فالرمز C يوافقه العدد 100 و الرمز D يوافقه 500 لتُصبح الدالة بهذا الشكل: public static int value(char r){ if(r=='I') return 1; if (r=='V') return 5; if(r=='X') return 10; if (r=='L') return 50; if (r == 'C') return 100; if (r == 'D') return 500; if(r=='M') return 1000; return -1; } ليُصبح البرنامج بهذا الشكل: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in =new Scanner(System.in); for(int j=1;j<6;j++){ System.out.println(" الروماني ادخل الرقم"); String x = in.next(); System.out.println(rode(x)); } } public static int value(char r){ if(r=='I') return 1; if (r=='V') return 5; if(r=='X') return 10; if (r=='L') return 50; if (r == 'C') return 100; if (r == 'D') return 500; if(r=='M') return 1000; return -1; } public static int rode(String str) { int res =0; for (int i=0;i<str.length();i++){ int s1=value(str.charAt(i)); if(i+1<str.length()){ int s2=value(str.charAt(i+1)); if(s1>=s2){ res=res+s1; } else { res=res+s2-s1; i++; } } else { res=res+s1; } } return res; } } و هذه نتيجة التجربة بعد إدخال الأعداد الرومانية: الروماني ادخل الرقم MLVI 1056 الروماني ادخل الرقم MLIV 1054 الروماني ادخل الرقم XL 40 الروماني ادخل الرقم MCMIV 1904 الروماني ادخل الرقم MDCV 1605 ...Program finished with exit code 0 Press ENTER to exit console.
  10. يُمكنك إستخدام np.set_printoptions(suppress=True) لكنها تعمل على الأعداد التي تتكون من 8 خانات على الأكثر مثلاً: import numpy as np np.set_printoptions(suppress=True) lst = [ [2.74, 462, 2366.64, 887558.86, 0.81], [8.55, 17, 1422.3, 3212.0, 0.97], [1.02, 768, 6004865.3, 1960.98, 1.21], [2.4, 2406, 3263822.3, 1087.9, 1.93], [0.5, 454, 44555062, 155062.72, 0.41], [4.5, 106, 168918, 741272.74, 3.25], [5.7, 787, 3011595.6, 219894.31, 2.18], [6.3, 117, 12511.4, 1291.0, 1.56], [5.51, 117, 47674230.76, 7181.0, 1.43], [0.85, 771, 1631.96, 2184.08, 0.64] ] lnp = np.array(lst) print(lnp) و سيكون الخرج بهذا الشكل: [[ 2.74 462. 2366.64 887558.86 0.81] [ 8.55 17. 1422.3 3212. 0.97] [ 1.02 768. 6004865.3 1960.98 1.21] [ 2.4 2406. 3263822.3 1087.9 1.93] [ 0.5 454. 44555062. 155062.72 0.41] [ 4.5 106. 168918. 741272.74 3.25] [ 5.7 787. 3011595.6 219894.31 2.18] [ 6.3 117. 12511.4 1291. 1.56] [ 5.51 117. 47674230.76 7181. 1.43] [ 0.85 771. 1631.96 2184.08 0.64]] ومع ذلك ، إذا قمت بتمرير رقم أكبر من 8 خانات، فسيتم فرض الترميز الأسي مرة أخرى في هذه الحالة يُمكنك تمرير معامل ثاني formatter للدالة set_printoptions بهذا الشكل: np.set_printoptions(suppress=True, formatter={'float_kind':'{:0.2f}'.format}) و بهذا الشكل حددنا أنه عند الطباعة الأرقام ستكون عشرية و حددنا عدد الأرقام بعد الفاصلة ب 2 مثال: import numpy as np np.set_printoptions(suppress=True, formatter={'float_kind':'{:0.2f}'.format}) lst = [ [2.74, 462, 2366.64, 887558.86, 0.81], [8.55, 17, 1422.3, 3212.0, 0.97], [1.02, 768, 6004865.3, 1960.98, 1.21], [2.4, 2406, 3263822121.3, 1087.9, 1.93], [0.5, 454, 44555062, 155062.72, 0.41], [4.5, 106, 168918, 741272.74, 3.25], [5.7, 787, 3011595.6, 21989471.31, 2.18], [6.3, 117, 12511.4, 1291.0, 1.56], [5.51, 117, 47674230.76, 7181.0, 1.43], [0.85, 771, 1631.96, 2184.08, 0.64] ] lnp = np.array(lst) print(lnp) و سيكون الخرج: [[2.74 462.00 2366.64 887558.86 0.81] [8.55 17.00 1422.30 3212.00 0.97] [1.02 768.00 6004865.30 1960.98 1.21] [2.40 2406.00 3263822121.30 1087.90 1.93] [0.50 454.00 44555062.00 155062.72 0.41] [4.50 106.00 168918.00 741272.74 3.25] [5.70 787.00 3011595.60 21989471.31 2.18] [6.30 117.00 12511.40 1291.00 1.56] [5.51 117.00 47674230.76 7181.00 1.43] [0.85 771.00 1631.96 2184.08 0.64]]
  11. تحتاج إلى تعريف مصفوفة فارغة بالطريقة التالية: arr = np.empty((0,3), int) بعد ذلك يُمكنك إضافة الصفوف الجديدة: import numpy as np arr = np.empty((0,3), int) arr = np.append(arr, np.array([[1, 2, 3]]), axis=0) arr = np.append(arr, np.array([[4, 5, 6]]), axis=0) print(arr) كما يُمكنك إستخدام الدالتين np.hstack و np.vstack: import numpy as np arr = np.array([]) arr = np.hstack((arr, np.array([1,2,3]))) # arr : => [1,2,3] arr = np.vstack((arr, np.array([4,5,6]))) # arr : => [[1,2,3],[4,5,6]] arr = np.vstack((arr, np.array([7,8,9]))) # arr : => [[1,2,3],[4,5,6],[7,8,9]]
  12. هل بإمكانك التوضيح بشكل أكبر حتى يستطيع أحد المدربين مساعدتك
  13. يُمكنك إستخدام التحميل الحثيث المتداخل بالشكل التالي: <?php Exam::with(['teacher', 'teacher.profile', 'subject']) ->where('level_id', $request->level) ->select('id', 'subject_id', 'teacher_id', 'created_at') ->get(); كما قد نرغب أحياناً في التحديد او عمل شروط معينة على العلاقة نفسها فنُمرر مصفوفة للتابع with حيث المفتاح هو إسم العلاقة والقيمة تكون عبارة عن closure نحدد فيها ما نرغب به بهذا الشكل مثلاً: <?php Exam::with(['teacher' => function ($query) { $query->with('profile'); }, 'subject']) ->where('level_id', $request->level) ->select('id', 'subject_id', 'teacher_id', 'created_at') ->get(); في هذه الحالة نرغب بتحميل العلاقة أيضاً لكن في حالات أخرى نكون بحاجة لعمل شروط على حقول العلاقة فالطريقة الثانية تساعد في مثل هذه الحالات.
  14. لا أعتقد أنه يُمكن لحساب باي بال الخاص بك و المسجل في دولة الجزائر أن يستقبل و يُرسل بدون تفعيل، يُشترط ربط حسابك ببطاقة فيزا او حساب بنكي و يجب التأكد من طرف الإدارة أن البطاقة او الحساب البنكي الذي تم ربطه أنت من تملكه و يتم ذلك بإقتطاع مبلغ رمزي من بطاقة الإئتمان او الحساب ثم تأخذ رمز المعاملة المالية و تقوم بتفعيل حسابك ليتم إرجاع المبلغ الذي تم إقتطاعه بعدها. قد تتغير سياسة باي بال في التفعيل في أي وقت لكن هذه هي الطريقة الموجودة حالياً.
  15. بإمكانك إستخدام التابع whereHas لتحقيق ما تريد. سأعطيك مثالاً لتقريب الفهم لنفترض أنه لدي نموذج Module و نموذج Permission حيث أن كل Permission ينتمي إلى Module و العلاقة في النموذج Permission بالشكل التالي: public function module() { return $this->belongsTo(Module::class); } نريد جلب كافة الpermissions التي يكون الmodule الخاص بها مُفعل حيث يوجد حقل في جدول modules إسمه active يأخذ القيمة 0 أو 1 لذلك بالإمكان إستخدام whereHas بالشكل التالي: <?php $permissions = Permission::whereHas('module', function($q) { $q->where('active', 1); })->get(); بمعنى إجلب كل الصلاحيات التي لها موديل و في نفس الوقت يكون هذا الموديل مفعل. المثال الذي طرحته يُشبه تماماً ما تريد فقط تأكد من إنشائك للعلاقة student بشكل سليم .
  16. إستخدم أحد الادوات online لعمل generate لكلمة السر الجديدة و قم بنسخ كلمة المرور المشفرة و ضعها مكان الحالية ثم إحفظ العملية، و بعد ذلك حاول تسجيل الدخول. إذا لم تعمل الطريقة معك يجب النظر إلى الأكواد المسؤولة عن تسجيل الدخول وفهمها جيداً حتى تستطيع تسجيل مشرف جديد بالشروط المطلوبة. يُمكنك أيضاً التواصل مع المطور فهو يعلم كيفية إضافة مشرف جديد لأنه من قام بتطوير الموقع. لن نستطيع فعل شيء إذا لم نكن على دراية بالشيفرات.
  17. بما أنه يُمكنك الوصول إلى قواعد البيانات يُمكنك الدخول إلى جدول المشرفين أو جدول المستخدمين ثم إما إنشاء مستخدم جديد أو التعديل على معلومات المستخدم الحالي لكن يتوجب عليك معرفة الدالة التي قام المطور بإستخدامها في تشفير كلمات المرور حتى تستطيع تشفير كلمة المرور الجديدة التي تريد إستخدامها ثم تضعها عند إنشاء المستخدم أو عند التعديل على المستخدم الحالي.
  18. يُمكنك إستخدام هذه الطريقة لتحويل عدد إلى محرف: public class Main { public static void main(String []args){ System.out.println(String.valueOf((char)(1 + 'A' - 1))); // A System.out.println(String.valueOf((char)(2 + 'A' - 1))); // B System.out.println(String.valueOf((char)(3 + 'A' - 1))); // C System.out.println(String.valueOf((char)(26 + 'A' - 1))); // Z } } حيث نستخدم ترميز ASCII ف: 1 + 'A' - 1 = 65 لأن الرمز الموافق للمحرف A هو 65 و المحرف B هو 66 و هكذا. و لتحويل العدد من رمز ASCI إلى محرف نستخدم cast إلى char: (char)65 = 'A' (char)66 = 'B' (char)67 = 'C' يُمكننا إنطلاقاً من هذه الطريقة إنشاء دالة تستقبل عدد و تقوم بالتحقق من أن العدد محصور بين 1 و 26 و عليه تُعيد المحرف الموافق له: public class Main { public static void main(String []args){ System.out.println(getCharForNumber(1)); // A System.out.println(getCharForNumber(2)); // B System.out.println(getCharForNumber(26)); // Z System.out.println(getCharForNumber(27)); // null } public static String getCharForNumber(int i) { return i > 0 && i < 27 ? String.valueOf((char)(i + 'A' - 1)) : null; } } يُمكنك إضافة الدالة إلى البرنامج الخاص بك و إستعمالها في التحويل.
  19. يُمكنك إستخدام حزمة DataTables فهي سهلة و بسيطة و توفر التصدير لعدة أشكال. كما يوجد عدة بدائل يُمكنك الوصول إليها بإستخدام محرك البحث بكتابة: javascript export data to excel و هذا مثال على codepen يستخدم مكتبة table-to-excel:
  20. المشكلة أن السطر: var colorSelect = $(".color_select option:selected").text(); يجلب كل الخيارات المحددة و يقوم بدمج النص الخاص بها في سلسلة نصية. لديك الآن قائمتين و تم تحديد أحمر و أزرق لذلك ناتج السطر أعلاه كان "أحمر أزرق" و هكذا حسب عدد القوائم فلو كانت ثلاثة و قمت بتحديد أحمر و أزرق و أصفر سيكون الناتج "أحمر أزرق أصفر" و هكذا أما حقول الإدخال من النوع number فالسطر: var colorNumber = $(".colorNumber_input").val(); سيتم تخزين قيمة أول حقل يوافق التحديد و هذا ما يتبين من خلال حقول الإدخال تم تخزين القيم الأولى للزر الأول فقط لكل الأزرار. يتوجب عليك تغيير المنطق الذي تعمل به فيجب عليك تخزين كل القيم في مصفوفات و إرسالها عبر طلب ajax مثلما تفعل مع الخاصية buttons بعد تخزين القيم في مصفوفات تقوم بإرسالها لصفحة php و على أساس هذه المصفوفات تقوم بإنشاء السجلات.
  21. بإمكانك إستخدام حزمة Maatwebsite / Laravel-Excel لتحقيق ذلك: حتى تعمل الحزمة بالشكل المطلوب لديها بعض المتطلبات: PHP: ^7.2\|^8.0 Laravel: ^5.8 PhpSpreadsheet: ^1.15 PHP extension php_zip enabled PHP extension php_xml enabled PHP extension php_gd2 enabled PHP extension php_iconv enabled PHP extension php_simplexml enabled PHP extension php_xmlreader enabled PHP extension php_zlib enabled تثبيت الحزمة: composer require maatwebsite/excel يُمكنك تسجيل مزود الخدمة الخاص بالحزمة بنفسك إن أردت في ملف config/app.php: 'providers' => [ /* * Package Service Providers... */ Maatwebsite\Excel\ExcelServiceProvider::class, ] و حفظ الإسم المستعار في المصفوفة aliases: 'aliases' => [ ... 'Excel' => Maatwebsite\Excel\Facades\Excel::class, ] هاتين الخطوتين ليستا ضروريتان لأن الحزمة auto-discovered. لنشر ملف الإعدادات الخاص بالحزمة في مجلد الإعدادات: php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config تدعم الحزمة التصدير و الإستيراد من و إلى قاعدة البيانات، مثال بسيط لتصدير سجلات النموذج User: نقوم بإنشاء صنف عن طريق الأمر: php artisan make:export UsersExport --model=User سنجد مجلد جديد بالإسم Exports في المجلد app و بداخله الملف UsersExport.php و أي صنف ننُشؤه لاحقاً بنفس الأمر نجده في نفس المسار. نقوم بملء الملف بالشكل التالي: <?php namespace App\Exports; use App\Models\User; use Maatwebsite\Excel\Concerns\FromCollection; class UsersExport implements FromCollection { public function collection() { return User::all(); } } يُمكن التصدير من مجموعة (Collection) او من إستعلام أو من صفحة عرض و كل الطرق مشروحة في توثيق الحزمة. في المتحكم المسؤول نقوم بإنشاء دالة جديدة بالشكل التالي: <?php namespace App\Http\Controllers; use App\Exports\UsersExport; use Maatwebsite\Excel\Facades\Excel; class UsersController extends Controller { public function export() { return Excel::download(new UsersExport, 'users.xlsx'); } } ثم ننُشئ المسار الذي من خلاله نصل الى الدالة export: Route::get('users/export/', 'UsersController@export'); الآن بإمكانك إنشاء زر للوصول إلى المسار او يُمكنك تصفح الرابط مباشرة من المتصفح و سيتم تحميل ملف إكسل بالإسم users.xlsx. يحتوي على البيانات. بإمكانك الإطلاع على التوثيق الرسمي للحزمة للإطلاع على الأمر بشكل موسع: Laravel Excel
  22. سأفترض أن الهيكلية الخاصة بالعناصر كالتالي: <!-- Main Container --> <div class="main-container"> <!-- Select Box Container --> <div> <select name="name" class="color-select"> <option value="" disabled>Select option</option> <option value="1000">option 1</option> <option value="2000">option 2</option> <option value="3000">option 3</option> <option value="4000">option 4</option> </select> <!-- Select Box Container Close --> </div> <!-- text Input Container --> <div> <input type="number" name="number-input1" class="number-input1" readonly> <!-- Close text Input Container --> </div> <!-- text Input Container --> <div> <input type="number" name="number-input2" class="number-input2" value="1"> <!-- Close text Input Container --> </div> <div> <input type="number" name="total" class="total-number" readonly> </div> </div> <!-- end main container --> <!-- Main Container --> <div class="main-container"> <!-- Select Box Container --> <div> <select name="name" class="color-select"> <option value="" disabled>Select option</option> <option value="1000">option 1</option> <option value="2000">option 2</option> <option value="3000">option 3</option> <option value="4000">option 4</option> </select> <!-- Select Box Container Close --> </div> <!-- text Input Container --> <div> <input type="number" name="number-input1" class="number-input1" readonly> <!-- Close text Input Container --> </div> <div> <input type="number" name="number-input2" class="number-input2" value="1"> <!-- Close text Input Container --> </div> <div> <input type="number" name="total" class="total-number" readonly> </div> </div> <!-- end main container --> <!-- Main Container --> <div class="main-container"> <!-- Select Box Container --> <div> <select name="name" class="color-select"> <option value="" disabled>Select option</option> <option value="1000">option 1</option> <option value="2000">option 2</option> <option value="3000">option 3</option> <option value="4000">option 4</option> </select> <!-- Select Box Container Close --> </div> <!-- text Input Container --> <div> <input type="number" name="number-input1" class="number-input" readonly> <!-- Close text Input Container --> </div> <div> <input type="number" name="number-input2" class="number-input2" value="1"> <!-- Close text Input Container --> </div> <div> <input type="number" name="total" class="total-number" readonly> </div> </div> <!-- end main container --> عليه يُمكنك حساب حاصل الضرب بالشكل التالي: $(document).ready(function() { $(document).on('change', '.color-select', function() { var selectedVal = $(this).val(), $mainContEl = $(this).parents('div.main-container'), $numberInputEl1 = $mainContEl.children().find("input.number-input1"), $numberInputEl2 = $mainContEl.children().find("input.number-input2"), $totalInputEl = $mainContEl.children().find("input.total-number"); $numberInputEl1.val(selectedVal); $totalInputEl.val(selectedVal * $numberInputEl2.val()) }); $(document).on('change keyup', '.number-input2', function() { var currentVal = $(this).val(), $mainContEl = $(this).parents('div.main-container'), $numberInputEl1 = $mainContEl.children().find("input.number-input1"), $totalInputEl = $mainContEl.children().find("input.total-number"); $totalInputEl.val(currentVal * $numberInputEl1.val()) }); }); إستخدمت فقط دوال الإنتقال لتحديد العناصر المطلوبة ثم قمت بضرب القيم و تغيير قيمة حقل المجموع الموافقة. و استخدمت حدثي change و keyup يُمكنك تجربة المثال من هنا:
  23. سبب المشكلة أنك تستخدم الخاصية id و هذه الخاصية يجب أن تكون فريدة أي لا يُمكن إعطاء نفس القيمة لعناصر مختلفة. في مثل هذه الحالات يُمكنك عمل traversing إنطلاقاً من عنصر ما لتحديد عُنصر بجوار أو أب للعنصر الذي أطلق الحدث و بعد تحديد العُنصر المطلوب يُمكنك تغيير قيمته و تتم عملية الإنتقال لتحديد العُنصر حسب هيكلية العناصر لديك فالأمر نسبي سأعطيك مثال و في البداية سأعطي قائمة الألوان صنف التنسيقات color-select و سأعطي حقل العدد صنف التنسيقات number-input و سأفترض أن كل من القائمة و حقل العدد موجودان في نفس الأب و هذا مثال بسيط يُوضح العملية: نفترض لدينا الهيكلية التالية: <div> <select name="name" class="color-select"> <option value="" disabled>Select option</option> <option value="1000">option 1</option> <option value="2000">option 2</option> <option value="3000">option 3</option> <option value="4000">option 4</option> </select> <input type="text" name="firstname" class="number-input"> </div> <div> <select name="name" class="color-select"> <option value="" disabled>Select option</option> <option value="1000">option 1</option> <option value="2000">option 2</option> <option value="3000">option 3</option> <option value="4000">option 4</option> </select> <input type="text" name="firstname" class="number-input"> </div> <div> <select name="name" class="color-select"> <option value="" disabled>Select option</option> <option value="1000">option 1</option> <option value="2000">option 2</option> <option value="3000">option 3</option> <option value="4000">option 4</option> </select> <input type="text" name="firstname" class="number-input"> </div> حيث حقل الإدخال يأتي مباشرة بعد القائمة لذلك يُمكن الإنتقال من القائمة إليه بإستخدام الدالة next كما هو موضح: $(document).ready(function() { $(document).on('change', '.color-select', function() { $(this).next().val($(this).val()); }); }); حيث عند إختيار عنصر من أي قائمة سيتم الإنتقال للعنصر الذي يأتي بعد القائمة و تغيير قيمته إلى القيمة المختارة و هكذا أي تغير في قائمة لن يؤثر على بقية القوائم. يُمكنك تجربة المثال من هنا: لنفترض الآن أن القائمة و حقل الإدخال ليس لديهما نفس الأب المباشر مثلاً بهذا الشكل: <div> <select name="name" class="color-select"> <option value="" disabled>Select option</option> <option value="1000">option 1</option> <option value="2000">option 2</option> <option value="3000">option 3</option> <option value="4000">option 4</option> </select> <div> <input type="text" name="firstname" class="number-input"> </div> </div> <div> <select name="name" class="color-select"> <option value="" disabled>Select option</option> <option value="1000">option 1</option> <option value="2000">option 2</option> <option value="3000">option 3</option> <option value="4000">option 4</option> </select> <div> <input type="text" name="firstname" class="number-input"> </div> </div> <div> <select name="name" class="color-select"> <option value="" disabled>Select option</option> <option value="1000">option 1</option> <option value="2000">option 2</option> <option value="3000">option 3</option> <option value="4000">option 4</option> </select> <div> <input type="text" name="firstname" class="number-input"> </div> </div> في هذه الحالة يُمكنك على سبيل المثال تحديد حقل العدد الموافق بهذه الطريقة: $(document).ready(function() { $(document).on('change', '.color-select', function() { $(this).parent().children().find('input.number-input').val($(this).val()); }); }); تستطيع تجربة المثال من هنا: و هنالك عدة دوال توفرها مكتبة جيكويري تُساعدك في الإنتقال يُمكنك إستخدامها على حسب هيكلية العناصر لديك: التنقل بين العناصر في jQuery على موسوعة حسوب.
  24. أعتقد أن قمية APP_DEBUG الحالية لديك هي false لتتحصل على معلومات أكثر عن الأخطاء يجب أن تكون true لاحظ الآن الخطأ أصبح أكثر دقة حيث رسالة الخطأ أصبحت: lluminate\Database\QueryException SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value (SQL: insert into `messages` (`help_id`, `message`, `phone_number`, `updated_at`, `created_at`) values (3, lorem, 5674245, ... حيث يخبرك أن هناك حقل id في جدول messages لا تقوم بتمريره أثناء إنشاء السجل و هذا الحقل ليس nullable و ليس له قيمة إفتراضية. يُمكنك الآن حل المشكلة كما تريد.
  25. هل بإمكانك توضيح محتوى ملف الإعدادات، لأنه لحد الساعة بهذه المعطيات لا يُمكن إيجاد سبب المشكلة. هل لديك مسار يجلب بيانات من قاعدة البيانات يُمكنك تجربته للتأكد من أن الطريقة get تعمل عند جلب بيانات و للتأكد من الإتصال يعمل
×
×
  • أضف...