-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
إجابات الأسئلة
-
إجابة Wael Aljamal سؤال في كيف اربط تطبيقي Electron JS سطح مكتب مع قاعدة بيانات عبر الشبكة أو محلية للسماح للمستخدمين بتبادل البيانات كانت الإجابة المقبولة
إن المنطق وراء ربط عدة مستخدمين مع بعضهم يكمن في أن لهم جميعاً قاعدة بيانات واحدة، ويوجد بيانات فيها مشتركة (على الأقل قابلة للقراءة منهم جميعاً).
أي حتى يصبح تطبيقك قابل لتبادل البيانات مع غير مستخدمين، سيتوجب عليك الحصول على قاعدة بيانات على الانترنت ومخدم لها عنوان انترنت مشترك يتصل به جميع المستخدمين.
يوجد الكثير من قواعد البيانات، ولنفرض أن لديك قاعدة من نوع MySQL لتطبيقك على استضافة.
ما تحتاج عمله في تطبيقك هو تنصيب الوحدة الموافقة لقاعدة البيانات تلك، ثم إجراء العمليات:
تهيئة الاتصال مع قاعدة البيانات تنفيذ الاستعلامات من قبل المستخدمين تنصيب الحزمة الخاصة ب mysql
npm install mysql ثم تضمين الوحدة، و تهيئة الاتصال و عمل استعلام
var mysql = require('mysql'); // إضافة معلومات المستخدم للاتصال على قاعدة البيانات var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : null, // password database : 'my-database-name' }); // الاتصال connection.connect(function(err) { // حدوث خطأ if(err){ console.log(err.code); console.log(err.fatal); } }); // تعريف الالة التي تجلب الاستعلام function get_10_Rows(callback){ // استعلام افتراضي $query = 'SELECT * FROM `Tasks` LIMIT 10'; connection.query($query, function(err, rows, fields) { if(err){ console.log("An error ocurred performing the query."); // حصول خطأ console.log(err); return; } console.log("Query succesfully executed", rows); // نجاح الاستعلام }); // اغلاق الاتصال connection.end(function(){ }); } ناتج الاستعلام يعود من خلال المتغير rows.
<script> // عند النقر على زر معين document.getElementById('action-btn').addEventListener('click', function(){ // استدعاء دالة جلب أول 10 مهام // rows فيها النتيجة get_10_Rows(function(rows){ var html = ''; rows.forEach(function(row){ html += '<tr>'; html += '<td>'; html += row.id; html += '</td>'; html += '<td>'; html += row.name; html += '</td>'; html += '</tr>'; console.log(row); }); // حقن النتيجة في الجدول document.querySelector('#table > tbody').innerHTML = html; }); },false); </script> كانت هذه طريقة التواصل مع قاعدة بيانات مباشرة، يمكنك عمل خادم ويب مثل EXPRESS والاتصال معه عبر API
ليعمل عبر الشبكة المحلية، يتوجب الاتصال على IP الحاسوب المحلي الذي فيه مخدم قواعد البيانات mysql , وضعه مكان host في جزء تهيئة الاتصال مع تحديد منفذ 3306.
var connection = mysql.createConnection({ host : ' 192.168.1.2', IP port : '3306', MySQL port
-
إجابة Wael Aljamal سؤال في استعلام جيكويري يجلب القيم لأول عنصر يطابق محدد الوصول وليس العنصر الذي أنقر عليه؟ كيف أجلب البيانات من الحقل المرتبط بالأيقونة jQuery كانت الإجابة المقبولة
سبب المشكلة هو أن محدد الوصول الذي تستخدمه في جيكويري سيجلب أول عنصر له id أو class معين.
الحل، وطالما أنك تحدد النقر على الأيقونة، سوف نجلب العنصر الذي يليها
var Favourite=$(this).next('#favouriteInput').attr('value'); var Item=$(this).next('.item').attr('value'); var User=$(this).next('.user').attr('value'); استخدمت next لأن ترتيب شيفرة HTML هي كذلك. نريد العنصر التالي الذي له الصنف كذا ..
this سوف تدل على العنصر الخاص بالأيقونة الذي تم النقر عليه.
-
إجابة Wael Aljamal سؤال في كيف أستدعي الكاميرا وماسح QRCode في رياكت نيتف وإضافة الصلاحيات كانت الإجابة المقبولة
من الواضح أنك وضعت المفتاح بطريقة خطأ،
أرجو اتباع هذه الخطوات:
expo camera مكون جاهز يمكنك استعماله وفيها خاصية onBarCodeScanned لقراءة رمز الاستجابة السريعة { "expo": { "name": "appname", "slug": "appslug", "privacy": "unlisted", "sdkVersion": "32.0.0", "platforms": [ "ios", "android" ], "version": "2.0.36", "orientation": "portrait", "icon": "./assets/icon.png", "splash": { "image": "./assets/splash.png", "resizeMode": "contain", "backgroundColor": "#FFFFFF" }, "updates": { "fallbackToCacheTimeout": 0 }, "assetBundlePatterns": [ "**/*" ], "ios": { "supportsTablet": true, "bundleIdentifier": "gl.js.app", "infoPlist": { "NSCameraUsageDescription": "This app uses the camera to let user put a photo in his profile page." } }, "android": { "package": "gl.js.app", "permissions": [ "CAMERA", "WRITE_EXTERNAL_STORAGE", "CAMERA_ROLL" ], "versionCode": 36 } } } لاحظ الصلاحيات لأندرويد
"android": { "package": "gl.js.app", "permissions": [ "CAMERA", "WRITE_EXTERNAL_STORAGE", "CAMERA_ROLL" ], "versionCode": 36 }
-
إجابة Wael Aljamal سؤال في ما هي تحديثات دورة جافاسكربت javascript في أكاديمية حسوب يوم 02/06/20222 كانت الإجابة المقبولة
كما نشر الاستاذ عبد اللطيف ايمش:
يمكنك أن تجد معلومات تحديث باقي الدورات من الرباط:
تحديثات دورات أكاديمية حسوب -
إجابة Wael Aljamal سؤال في حساب عدد العناصر elements الموجودة في row معينه في ال Database عن طريق التاريخ و الوقت باستعمال laravel كانت الإجابة المقبولة
تمام، يمكن تطبيق
دالة المقارنة whereDate للتاريخ دالة whrerTime للوقت أو where نمرر لها اسم العمود الأول ثم معامل المقارنة ثم تاريخ اليوم الحالي <?php {{ $projects->()where('nextdate', '=', (new DateTime)->format('Y-m-d') )->count }} ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ يمكن جلب تاريخ اليوم من خلال: date("Y-m-d H:i:s"); date("Y-m-d"); now()->format('Y-m-d') (new DateTime)->format('d-m-Y'); وغيرهم
يمكن الاستعانة بحزمة Carbon
<?php public function myDate($query) { // الوقت الحالي $now = Carbon::now(); // قصر الوقت لتاريخ $date = Carbon::parse($now)->toDateString(); // قصر الوقت لتوقيت $time = Carbon::parse($now)->toTimeString(); return $query ->whereDate('published_at', '<', $date) // مقارنة تاريخ ->orWhere(function($query) use ($date, $time) { $query ->whereDate('published_at', '=', $date) ->whereTime('published_at', '<=', $time); // مقارنة وقت }); } يوجد دوال أخرى مثل:
whereYear whereMonth whereDay -
إجابة Wael Aljamal سؤال في كيفية عمل توابع getter و setter في صنف Class في PHP؟ كانت الإجابة المقبولة
توفر لغة PHP دوال سحرية magic methods ومنها دالتين
__get __set تستخدمان لقراءة قيم خاصيات الكائنات وإسناد قيم لها على الترتيب.
<?php class MyClass { private $Field1; private $Field2; // قراءة قيمة خاصية public function __get($property) { if (property_exists($this, $property)) { return $this->$property; } } // إسناد قيمة خاصية public function __set($property, $value) { if (property_exists($this, $property)) { $this->$property = $value; } return $this; } } ?> للدوال السابقة بعض المساوئ،
صعوبة و تعقيد تخصيص التحقق من إدخال قيم معينة لخواص معينة (قبول أرقام موجبة لبعض القيم و تواريخ لبعضها) صعوبة عمل تنسيق للمخرجات/ مثل تنسيق التاريخ و العملات. عدم التفريق بين محددات الوصول للمعاملات لذلك من الأفضل تخصيص دالة لكل معامل من خواص الصنف و التعامل معها بالطريقة التي تناسبها أي تطبيق دالة set و get خاصة لكل خاصية
GET => $this->getProperty() SET => $this->setProperty($value) وتطبيقها بشكل بسيط (يمكن إضافة التحقق و تخصيص الخرج لكل خاصية)
public function getField1() { return $this->Field1; } protected function setField2($x) { $this->Field2 = $x; }
مثال:
class Person { private $name = ''; private $birth_date; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } public function getBirthDate($format='Y-m-d') { //format $birth_date ... //$birth_date = ... return $birth_date; } public function setBirthDate($birth_date) { //if($birth_date is not valid) throw an exception ... $this->birth_date = $birth_date; } public function getAge() { //calculate age ... return $age; } } https://wiki.hsoub.com/PHP/magic
-
إجابة Wael Aljamal سؤال في كيفية عمل ترويسة الموقع ثابتة Fixed مع إظهار الجزء الباقي من الموقع بطريقة مناسبة كانت الإجابة المقبولة
نعم الطريقة صحيحة.
عند إعطاء أي حاوية أو عنصر الخاصية Position : fixed سوف ينفصل عن مستوى صفحة HTML أي تعتبر أن له طبقة مختلفة، وسوف يحل محله العنصر التالي في ترتيب صفحة HTML وبذلك لنحافظ على ظهور العنصر الذي أسفله، نقوم بعمل إزاحة من الأعلى من خلال الخاصية margin-top لتبتعد عن الجزء العلوي للعنصر body (الحافة الداخلية) حيث أصبح هذا العنصر هو الذي يسبق باقي أجزاء الصفحة و ليس العنصر ذو Position : fixed، أي سوف ينزلق أسفله، و بذلك نعيده لمكانه بعمل إزاحة من الأعلى.
موسوعة حسوب position#fixed -
إجابة Wael Aljamal سؤال في تحويل الdiv الى PDF عن طريق جافاسكربت كانت الإجابة المقبولة
إن PDF أفضل من الصور بالدقة،
يمكنك الاعتماد على مكتبة jsPDF وطريقة عملها:
جزء HTML المراد تحويله له id فريد <div id="content"> <h3>مرحبا، رسالة ترحيبية</h3> <p>هذا النص سوف نقوم بتحويله إلى ملف PDF</p> </div> <div id="editor"></div> <button id="cmd">إنشاء PDF</button> شيفرة جافا سكربت: إنشاء غرض من المكتبة var doc = new jsPDF(); // عند أمر النقر على الزر // fromHTML // هي الدالة التي تحول المضمون $('#go').click(function () { doc.fromHTML($('#content').html(), 15, 15, { 'width': 170, }); doc.save('myFile.pdf'); }); تضمين المكتبة <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> 15 - 15 هي أبعاد الورق و width عرض المحتوى توثيق المكتبة jsPDF
حل آخر هو مكتبة printThis.
يمكنها تطبيق دالة على محدد للعنصر المطلوب بالطريقة:
$('selector').printThis();
-
إجابة Wael Aljamal سؤال في طريقة دفع سعر الدورة من سوريا كانت الإجابة المقبولة
يمكنك التواصل مع مركز مساعدة أكاديمية حسوب وهم يخبروك بالطريقة الأمثل للدفع والاشتراك.
إن كان لديك أحد الأقارب في الخارج يمكنه مساعدتك في الدفع (معلومات الشهادة غير مرتبطة بالحساب الذي يدفع قيمتها / يشتريها)
-
إجابة Wael Aljamal سؤال في مشكله في مشروع Front End يتم إضافة البيانات مرتين بالخطأ بدل مرة واحدة في جافاسكربت كانت الإجابة المقبولة
في نهاية دوال الإضافة و التعديل.
-
إجابة Wael Aljamal سؤال في مشكلة في إستعمال else if في javascript عمل شرط للتأكد من أن قيمة محصورة ضمن مجال كانت الإجابة المقبولة
المشكلة أن جافاسكربت لا تدعم كتابة الشروط بالطريقة الرياضية التي تحاول استخدامها
if (11 <= rate <= 20) {} حيث يعتبر هذا عبارة عن شرطين يتوجب أن تكتبهما سويةً
if (11 <= rate && rate <= 20) {} أرجو تعديل جميع الشروط
-
إجابة Wael Aljamal سؤال في كيف أجعل نص أو مكون قابل للنقر يستجيب للإيماءات في flutter كانت الإجابة المقبولة
تقدم Flutter المكون InkWell الذي يقبل مكون ابن له من الخاصية child والذي بدوره يصبح قابل للنقر مثلاً ..
يمكنك عمل مكون فتح الرابط من النقر على النص بالشكل التالي حيث نربط النقر من خلال خاصية onTap وبدورها تنفيذ callback functionيفتح الرابط من الدالة launch :
Center( child: InkWell( child: Text('Continue Reading'), onTap: () => launch('${news['url']}') ), ), على اعتبار أن news هو كائن يمثل الخبر الحالي وفيه الخاصية URL تضمن رابط ويب للموقع الهدف.
توفر InkWell على أكثر من إيماء حسب التوثيق الرسمي:
InkWell({Key? key, Widget? child, GestureTapCallback? onTap, GestureTapCallback? onDoubleTap, نقر مزدوج GestureLongPressCallback? onLongPress, نقر لمدة طويلة GestureTapDownCallback? onTapDown, GestureTapUpCallback? onTapUp, رفع الاصبع GestureTapCancelCallback? onTapCancel, ValueChanged<bool>? onHighlightChanged, ValueChanged<bool>? onHover, عند المرور عليها MouseCursor? mouseCursor, Color? focusColor, Color? hoverColor, Color? highlightColor, MaterialStateProperty<Color?>? overlayColor, Color? splashColor, InteractiveInkFeatureFactory? splashFactory, double? radius, BorderRadius? borderRadius, ShapeBorder? customBorder, bool? enableFeedback = true, bool excludeFromSemantics = false, FocusNode? focusNode, bool canRequestFocus = true, ValueChanged<bool>? onFocusChange, bool autofocus = false})
-
إجابة Wael Aljamal سؤال في مشكلة في اظهار alert dialog عند النقر على زر flutter كانت الإجابة المقبولة
إن المكون alert dialog هو عبارة عن widget و الشيفرة لديك لا تقوم بإضافته لشجرة المكونات widgets tree الخاصة بالصفحة، لاحظ أن on press تعمل ك callback function و حتى لو أضافت المكون يتوجب تحديث الحالة وإعادة استدعاء دالة build ليتم إضافة المكون للواجهة.
الحل هو استدعاء show dialog وضمنه alert dialog
FlatButton( onPressed: () { print('pay pressed'); showDialog( context: context, builder: (BuildContext context) { return AlertDialog( backgroundColor: Colors.red, shape: borderRadius, title: Text( 'Pay The Violation'), content: Text('Are You Sure?'), actions: <Widget>[ FlatButton( shape: borderRadius, color: Color(0XFF4a707a), child: Center( child: Text( "Yes", style: TextStyle( color: Colors.white, ), ), ), لاحظ أن المكون showDialog يستقبل سياق البرنامج context ثم يقوم ببناء build ل pop up واجهة التحذير و يظهر ضمنها alert dialog وبالتالي يظهر المكون بشكل صحيح.
أي أن showDialog هو من ضيف alertDialog للصفحة الحالية.
-
إجابة Wael Aljamal سؤال في ما هي خاصية window , document والفرق بينهم كانت الإجابة المقبولة
يشير الكائن window لغرض جافاسكربت الرئيسي الذي يدل على نافذة المتصفح الذي يحوي الصفحة الحالية.
document هو خاصية فرعية / غرض من غرض النافذة window.document وفيه جذر الصفحة root وكل العناصر التي يتم عرضها أو تم عمل render لها لتظهر للمستخدم.
يمكنك استعراض خواص كل منهم بطباعة التالي في console:
console.dir(window); console.dir(document); اختلاف استخدامهم:
window: setTimeout() and setInterval() binding event handlers to a timer ربط الأحداث إلى مؤقت location giving the current URL إعادة رابط الصفحة الحالي history with methods back() and forward() giving the tab's mutable history تاريخ الروابط المزارة في الصفحة navigator describing the browser software إعطاء معلومات عن المتصفح المستخدم document: لها دوال للبحث في شجرة الصفحة document.getElementById("id") document.querySelector("#id") document.body.firstChild document.body.children[0]
توثيق موسوعة حسوب ب JavaScript/Document
-
إجابة Wael Aljamal سؤال في اضافة ميزات مدفوعة الى تطبيق على جوجل بلاي وترجمته كانت الإجابة المقبولة
ماذا تقصد ب
كل شيء في التطبيق يتوجب أن يكون مبرمج بشكل مسبق.
إضافة عمليات الدفع للتطبيق تتم بالاشتراك مع خدمات الدفع الإلكتروني google pay - strip - paypal وتضمين مكتبات التوثيق الخاصة بهم في التطبيق. وعمل قاعدة بيانات لديك خاصة بالمستخدمين وتسجيل اشتراكاتهم.. وغيره من أمور الربط بين الخدمة و الحسابات التي قامت بالدفع.
بالنسبة للسؤال الثاني، على المطور ترجمة تطبيقه بنفسه، وغوغل لا يقوم بهذه المهمة أبداً.
لترجمة تطبيق أندرويد، تقوم بإنشاء ملف ترجمة خاص بكل لغة في مجلد Strings و تربط الواجهات مع استدعاء النص المقابل للغة.
يمكنك البحث عن أي كورس يشرح أمر التعريب..
مثلا لكل لغة ملف نصوص خاص يكون بالمسار:
res – > values-ar -> strings.xml يختار نظام التشغيل اللغة بشكل تلقائي و لحفظ تفضيل اللغة يمكنك حفظ الرمز في
حفظ رمز اللغة في الـ shared preference.
ولضمان جهة النص و التصميم اتبع مايلي:
أضف خيار android:supportsRtl=”true” في ملف ال AndroidManifest وتحت tag ال application استخدم marginStart بدلا من marginLeft و marginEnd بدلا من marginRight استخدم paddingStart بدلا من paddingLeft و paddingEnd بدلا من paddingRight وكذلك يمكنك استخدام بعض ال attributes لتحديد اتجاه الواجهة كـ
android:layoutDirection android:textDirection android:textAlignment
-
إجابة Wael Aljamal سؤال في اريد تخفيض على قيمة دورة أكاديمية حسوب كانت الإجابة المقبولة
حاول التواصل مع (مركز المساعدة) وطلب كوبون خصم... مع أن الخصم غير متوفر كل الوقت، أرجو محاولة التواصل معهم و انتظار إجابتهم فهم المخولين بهذا الشيئ
-
إجابة Wael Aljamal سؤال في اضافة ملفات css& Js ضمن مشروع Asp.net كانت الإجابة المقبولة
يمكن اضافة ملفات جافا سكربت و التنسيقات js css ضمن مجلد wwwroot للمشروع في المجلد الخاص لكل منهم
wwwroot - css - js - lib و ضمن مجلد shared يوجد ملف layout نضمن ملفات css js به فتصبح مضمنة لجميع صفحات المشروع (أي تطبيق التنسيق و أكواد جافا سكربت لجميع الصفحات) مع تعديل الكود ليناسب المشروع
يتم معاملة المجلد wwwroot مثل public أي يمكن الوصول لللمفات مباشرة من السيرفر أو من ضمن المشروع:
<!-- Additional CSS Files --> <link rel="stylesheet" href="~/assets/css/fontawesome.css"> <link rel="stylesheet" href="~/assets/css/style1.css"> <link rel="stylesheet" href="~/assets/css/style2.css"> http://localhost: /css/app.css. صور:
wwwroot/images/MyImage.jpg <img src="~/images/MyImage.jpg" class="img" alt="My image" />
-
إجابة Wael Aljamal سؤال في حدوث خطأ عند استدعاء الباني ضمن Controller في ASP.NET core كانت الإجابة المقبولة
أعتقد أن المشكلة تكمن بسبب إسناد خاصية authorRepository غير معرفة ضمن الصنف class AuthorController
يتوجب تعريفها قبل الدالة البانية.
public class AuthorController : Controller { private readOnly IBookStoreRepository<Author> authorRepository; // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ public AuthorController(IBookStoreRepository<Author> authorRepository) { this.authorRepository = authorRepository; } أرجو مشاركة رسائل الخطأ في حال ظهورها لتحديد المشكلة بدقة
-
إجابة Wael Aljamal سؤال في خطأ عند تنفيذ دالة Delete بلغة Asp.net core كانت الإجابة المقبولة
حتى نحذف عنصر من قائمة الكتب، يتوجب تمرير الكتاب المراد حذفه للتابع Remove
وطالما أن هنالك تابع البحث Find (تعيد مرجع لكتاب) يمكن الاستفادة منه كالتالي:
public void Delete(int id) { Book book = Find(id); books.Remove(book); } الآن دالة الحذف تبحث عن كتاب وتزيله من القائمة
أرجو مشاركة رسائل الخطأ في حال ظهورها لتحديد المشكلة بدقة
-
إجابة Wael Aljamal سؤال في ما سبب ظهور خطأ Refused to apply style from 'http://127.0.0.1:5500/style.css' because its MIME type ('text/html') is not a supported stylesheet MIME type رغم ان المشروع جديد كانت الإجابة المقبولة
إذا كان ملف التنسيق في مجلد فرعي يتوجب تحديد الرابط بالشكل الصحيح
<link type="text/css" rel="stylesheet" href="css/style.css"> ^^^^^^^ 404 أي الملف غير موجود "حسب المسار الذي قمنا بتحديده" وبضبط المسار بشكل صحيح يتوجب حل المشكلة
-
إجابة Wael Aljamal سؤال في إختبار نهاية الدورة كانت الإجابة المقبولة
يمكنك إعادة الامتحان في حال عدم النجاح فيه حيث سيقدم لك المدرب ملاحظات على نتيجتك في الامتحان بعد تقديمه.
الامتحان عبارة عن مرحلتين أساسيتين:
محادثة صوتية مشروع تخرج معلومات الامتحان من الرابط: academy/exams بعد إكمالك لدراسة أحد دورات أكاديمية حسوب (على الأقل 4 مسارات في أحد الدورات) عندها تتواصل مع مركز المساعدة والدعم من الرابط: support.academy ، بخصوص أسئلة الامتحان يمكنك التواصل مع مركز الدعم
-
إجابة Wael Aljamal سؤال في خطأ في android studio عند جلب بيانات باستخدام database.query بيانات لقاعدة sQlite كانت الإجابة المقبولة
لاحظ أن المشكلة سببها تكرار عمل استعلام
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 -
إجابة Wael Aljamal سؤال في خطأ في android studio عند إضافة بيانات لقاعدة sQlite كانت الإجابة المقبولة
خطأك هو تمرير نفس القيمة لأكثر من سجل في الجدول لحقل تم تطبيق عليه القيد UNIQUE أي مميز / فريد.
وبهذا ظهر الخطأ SQLITE_CONSTRAINT_UNIQUE تأكد أن قيمة الحقل المميز مختلفة بين السجلات التي تقوم بإضافتها.
الحقل الذي فيه المشكلة هو SID
-
إجابة Wael Aljamal سؤال في خطأ في android studio يظهر AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY كانت الإجابة المقبولة
المشكلة في محاولة تطبيق الزيادة التلقائية لحقل في الجدول قيمته ليست رقمية
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," + ^^^^
-
إجابة Wael Aljamal سؤال في أين أجد درس نشر المشروع على GitHub ؟ كانت الإجابة المقبولة
رفع ملفات مشروع على غيت هاب ليس درس محدد، بل موزع على طول مسار تطوير متجر الكتروني.
يمكنك الاستفادة من الإجابة التالية:
الخطوات الخاصة بالتهيئة: إنشاء مستودع ودفع الملفات ثم:
قم بتفعيل Github Pages داخل مستودعك بالذهاب الى الاعدادات Settings، ثم النزول الى القسم Github Pages واختيار الفرع branch الذي يحتوي موقعك، ثم حفظ الاعدادات Save
يمكنك مشاهدة الدرس: