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

Wael Aljamal

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

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

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

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

    218

كل منشورات العضو Wael Aljamal

  1. لاحظ أن المشكلة سببها تكرار عمل استعلام SELECT * FROM SELECT * FROM STUDENT_TABLE ومكان الاستدعاء هو الدالة getStudentTAble Cursor getStudentTAble(long cid){ SQLiteDatabase database = this.getReadableDatabase(); return database.query(SELECT_STUDENT_TABLE,null,C_ID+"=?",new String[]{String.valueOf(cid)},null,null,STUDENT_ROLL_KEY ); } وبالتالي لديك تكرار في جزء النص select private static final String SELECT_STUDENT_TABLE = "SELECT * FROM "+STUDENT_TABLE_NAME; database.query لا نمرر لها SELECT فقط اسم الجدول. حيث أنك تمرر null للخاصية columns أي ترد جلب كل الأعمدة والحل تمرير STUDENT_TABLE_NAME بدل SELECT_STUDENT_TABLE
  2. أنت تعمل addStatus لبيانات فيها SID نفسه، وهذا يعطي خطأ عند عمل insert
  3. خطأك هو تمرير نفس القيمة لأكثر من سجل في الجدول لحقل تم تطبيق عليه القيد UNIQUE أي مميز / فريد. وبهذا ظهر الخطأ SQLITE_CONSTRAINT_UNIQUE تأكد أن قيمة الحقل المميز مختلفة بين السجلات التي تقوم بإضافتها. الحقل الذي فيه المشكلة هو SID
  4. المشكلة في محاولة تطبيق الزيادة التلقائية لحقل في الجدول قيمته ليست رقمية AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY كما ظهر while compiling: CREATE TABLE CLASS_TABLE(_CIDINTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ^^^^^^^^^^^ لاحظ أن اسم الحقل ملتصق مع نمطه و بذلك نتج قراءة خطأ، تأكد من وضع فراغ في C_ID + "INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," + ^^^ C_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," + ^^^^
  5. رفع ملفات مشروع على غيت هاب ليس درس محدد، بل موزع على طول مسار تطوير متجر الكتروني. يمكنك الاستفادة من الإجابة التالية: الخطوات الخاصة بالتهيئة: إنشاء مستودع ودفع الملفات ثم: قم بتفعيل Github Pages داخل مستودعك بالذهاب الى الاعدادات Settings، ثم النزول الى القسم Github Pages واختيار الفرع branch الذي يحتوي موقعك، ثم حفظ الاعدادات Save يمكنك مشاهدة الدرس:
  6. الملف الذي فيه مشكلة. دالة - صنف - شيء محدد، لا ننظر للمشروع مباشرة،
  7. أرجو نسخ رسالة الخطأ و جزء البرنامج و إرفاقهم في محرر الأكواد
  8. ليس من السهل العمل بدون ملفات المشروع.. العمل يتم ضمن الدالة main عليك إنشاء زبون افتراضي( مثل المنتجات) ثم ربطه مع الفاتورة من خلال تمريره مع مصفوفة المنتجات في صنف الفاتورة public class Invoices { public double total; private Customer customer; private ArrayList<Product> products; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ حساب سعر أكثر من منتج ضمن فاتورة لدينا قائمتين كل قائمة نمر عليها بحلقة عند تقابل رقم منتج من التي اشتراها الزبون مع منتج موجود نجمع السعر في حال تمرير قائمتين من نوع منتج: public static void creatInoices(ArrayList<Product> list1, ArrayList<Product> list2) { double total=0; for (int i = 0; i < list1.size(); i++) { int currentProductID1 = list1.get(i).getproductsID(); for (int j = 0; j < list2.size(); j++) { int currentProductID2 = list2.get(j).getproductsID(); if (currentProductID1 == currentProductID2) { total += list1.get(i).getproductsPrice(); break ; } } } System.out.println("total is: " + total); }
  9. ما فائدة الدالة؟ حساب قيمة فاتورة؟ يتوجب تمرير قائمة أرقام منتجات productsID تصبح قائمة فيها أرقام منتجات مختارة من الزبون وليس رقم واحد.. ثم لكل منتج من هذه القائمة، نبحث عنه في القائمة العامة list (التي فيها جميع المنتجات) و نجمع قيمة المنتجات
  10. نقوم بتمريرهم مع الدالة البانية إنشاء غرض منتج إنشاء غرض عميل Product p = new Product (... data) Customer c = new Customer (... data) Invoices i = new Invoices ( p , c)
  11. إن كان للفاتورة Invoices زبون، يتوجب تعريف صنف جديد Class Customer مثلاً و نعرف خاصية للفاتورة من زبون و نضيف بيانات الزبون للفاتورة مثل بيانات منتج
  12. يعيد API مصفوفة JSON Array وليس كائن وحيد، وبذلك يجب تمرير دليل العنصر الأول 0 من Profile Data فالحل هو كالتالي: name = profiledata[0]['name']; ^^^^^^^ code = profiledata[0]['code']; ^^^^^^^^ birthday = profiledata[0]['bd']; sex = profiledata[0]['sex']; nationality = profiledata[0]['nationality']; nationalnum = profiledata[0]['nationalnum']; balance = double.parse(profiledata[0]['baalance']); carNum = profiledata[0]['carnum']; photo = profiledata[0]['photo']; يمكن اختصار التعديل لمكان واحد فقط كالتالي: var profiledata = (await fetchdata.getdata())[0]; ^^^^^ وبهذا يتم التطبيق على جميع الخاصيات مباشرة
  13. حاول تنفيذ الأمر عن طريق npx بكتابة npx create-react-app hsoub يمكنك نشر الأسئلة في تعليق أسفل الدرس.
  14. بشكل عام الدورة متكاملة، يتوجب حضور عدة مسارات لتكتسب المهارات الكافية لجميع أسئلتك. يوجد دروس ضمن مسارات المشاريع تعلم كيفية رفع الملفات على منصة git hub لمشاركة الملفات المصدرية، ثم نشر الموقع لتستطيع تصفحه من خلال رابط عن طريق خدمة github pages وهي درس في آخر مسار بعد الانتهاء من المشروع نقوم بنشره قسم الأساسيات فيه تطبيقات بسيطة يقوم بتأهيلك لدروس و مسارات المشاريع، من الأفضل تطبيق مشاريع من الدورة لتضتضح معك الأمور، صعوبة المشاريع بشكل متدرج... من خلال بناء الموقع بطريقة مناسبة قابلة للتعديل، مثلا ألوان الموقع: سوف تتعلم كيفية عمل ملفات خاصة بضبط الموقع، و تحديد متغيرات محددة للألوان يمكن تغييرها بمكان واحد وسوف تتعلم على المشروع.. يمكن للمشتري نفسه طلب منك تعديلات مأجورة على التصميم أو توظيف مبرمج آخر.
  15. نمرر قائمة ب id للأغراض التي يطلبها المستخدم (ندخلهم ضمن حلقة مثلا) ثم نحسب مجموع قيمتهم بالمرور على قائمة المنتجات و جلب خاصية السعر و عمل مجموع تراكمي..
  16. يتوجب قراءة رمز الوصول من sharedPreferences كالتالي: SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); String? accessToken = sharedPreferences.getString("accessToken"); ^^^ null safty // ^^^^^^^^^ ^^^^^^^^^^^ اسمها ثم يتم تمرير ترويسة Header مع طلبية GET Future getdata() async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); String? accessToken = sharedPreferences.getString("accessToken"); http.Response response = await http.get( Uri.parse(url), headers: { // هنا 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $accessToken', ^^^^^^^ ^^^^^^^^^^^^^ نمرر الرمز }); if (response.statusCode == 200) { String data = response.body; return jsonDecode(data); } else { print(response.body); } } }
  17. قمت بتعديل بسيط لدالة البحث لتصبح: public static Product SelectProducts(ArrayList<Product> list, int productsID) { for (int i = 0; i < list.size(); i++) { Product currentProduct = list.get(i); int currentProductID = currentProduct.getproductsID(); if (productsID == currentProductID) { System.out.println("informations related to this product ID:%d =" + currentProductID); return currentProduct; } } System.out.println("Sorry but this product ID is wrong"); return null; } ثم لطباعة البيانات ضمن الدالة الرئيسية، يتوجب استقبال ما تعيده دالة البحث , ثم تطبيق الدالة toString على الناتج while (ProductID != 0) { Product p = Product.SelectProducts(list, ProductID); // ^^^^^^^^^^^^^^ p.toString(); // هنا System.out.println("enter the ID number of the product you want, 0 to exit"); ProductID = input.nextInt(); }
  18. أرجو تنفيذ الأمر في cmd | terminal flutter doctor -v وإرفاق ما يظهر , وإرفاق ملف pubspect.yaml
  19. يتوجب التحقق من أسماء الحقول التي عليك تمريرها للواجهة الخلفية لأن أي حرف مختلف سوف يسبب عدم تطابق التحقق. لاحظ أن السيرفر يطلب منك username ,وأنت تمرر له الحقل باسم email , هذه البيانات سيتم تجاهلها و سيتم رفض الطلبية لعد احتوائها على حقل مطلوب. عليك تعديل الخاصية email ب username Map data = {'email': email, 'password': pass}; ^^^^^^^^^^^ Map data = {'username': email, 'password': pass};
  20. عند تحميل التطبيق سيتم تنفيذ دالة checkInput لأول مرة و إسناد قيمتها للدالة onpress كتابع. وأنت تريد تطبيق دالة التحقق بعد النقر، لذلك نجعل الزر يستدعي دالة وهي بدورها تستدعي دالة التحقق ليصبح: onPressed: () { checkInput(); }, حاول مجدداً يتوجب أن يعمل الزر
  21. تأكدي من تمرير الوسطاء لجميع الدوال من بداية البرنامج لنهايته. يمكنك وضع صور تظهر تقدم التنفيء لحين حصول المشكلة (استخدمي عبارة الطباعة لكل خطوة).. ان بقي مشكلة أرجو إرفاق الملف كاملا
  22. قلتي انك ترغبين بإعادة المنتج من خلال الدالة لمكان استدهدعائها.. نعمل return list.get(i) ضمن الشرط if و يتوجب أن تعيد الدالة نمط Product. او يمكنك إعادة فقط رقم المنتج.. index ضمن القائمة return i ونمط الدالة int بدل void
  23. تمام، ضمن الشرط يمكنك طباعة بيانات المنتح، و لإرجاعه يتوجب جعل الدالة بنمط int مثلا و نعمل return product id أو نحددها بنمط Product و نعيد list.git i بكامله. الحلقة تضمن إعادة إدخال المعرف لبحث جديد
  24. الخطأ بشكل تعليق ليس واضح، ارجو كتابة نص مباشرة يشير للمشكلة.. يتوجب تمرير مسار الدخل System.in لباني Scanner بالشكل: Scanner input = new Scanner(System.in);
×
×
  • أضف...