-
المساهمات
651 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
4
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
أجوبة بواسطة علي عبد محسن
-
-
بتاريخ 5 دقائق مضت قال علي الكاسر:
اخي لقد ظهر لي هذا الخطأ
Fatal error: Uncaught Error: Call to undefined function Controllers\mysql_connect() in /storage/emulated/0/wanachat/Controllers/Database.php:21 Stack trace: #0 /storage/emulated/0/wanachat/Core/Route.php(24): Controllers\Database->index() #1 /storage/emulated/0/wanachat/wepUrl.php(20): Route::get('database', Array) #2 /storage/emulated/0/wanachat/index.php(9): require('/storage/emulat...') #3 {main} thrown in /storage/emulated/0/wanachat/Controllers/Database.php on line 21
ويشير الخطاء الى هذا السطر
mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());
يعتمد الأمر على ما تستخدمه من أدوات برمجية ونظام تشغيلي.يمكنك نسخ الخطأ الى google لتفهم أكثر. إذا كنت تستعمل linux قم بتثبيت الحزمة المطلوبة كما يلي.
sudo apt install php-mysqli
-
بتاريخ 1 ساعة قال علي الكاسر:
عفوا اخي لم افهم اي شي
انا استخدم لغة php. ومكتبة pdo في التعامل مع قواعد البيانات،
الذي احتاجه كود يقووم بنسخ قاعدة البيانات الموجودة في ملف بعد تصديرها ، ينسخها في قاعدة بيانات جديده، اعلم انه يتم فعل هذا في phpmyadmin ولكن انا اريد فعل ذلك بكود خاص، من اجل الموقع الذي اعمل عليه
بما أن الحل المطلوب يجب أن يكون بلغة php يمكنك إستعمال الكود التالي لتحقيق المطلوب شرط أن تكون صيغة الملف الذي تم تصديره من قاعدة البيانات الأصلية هي sql.
يمكنك تغيير ما يلزم تغييره وفقاً لمتطلباتك مع الحفاظ على نفس طريقة العمل وكما يلي
<?php // مسار الملف $filename = 'name.sql'; // MySQL host $mysql_host = 'localhost'; // عنوان المضيف // MySQL username $mysql_username = 'root'; // اسم المستخدم // MySQL password $mysql_password = ''; // كلمة المرور // Database name $mysql_database = 'database_name'; // قاعدة البيانات التي تريد إستيراد الملف لها // Connect to MySQL server mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error()); // الإتصال بقاعدة البيانات واختيارها mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error()); // ننشئ متغير لخزن الجملة المراد تنفيذها $templine = ''; // Read in entire file $lines = file($filename); // sql نقرأ // Loop through each line foreach ($lines as $line) // نقوم بعمل حلقة تكرار للمرور على جميع السطور { if (substr($line, 0, 2) == '--' || $line == '') // نتجاهل التعليقات continue; $templine .= $line; // نسند السطر قيد المعالجة الى المتغير المنشأ مسبقاً if (substr(trim($line), -1, 1) == ';') // نحدد فيما إذا كانت نهاية سطر من خلال الفاصلة المنقوطة { // نقوم بتنفيذ السطر mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />'); // بعد غنتهاء التنفيذ نعيد قيمة المتغير الى حالته الأصلية ليكون جاهزاً للسطر القادم $templine = ''; } } echo "Tables imported successfully"; ?>
-
يمكن عمل animation لعنصر ما عندما يعمل المستخدم scroll ويصبح العنصر في مجال الرؤية داخل الصفحة viewport من خلال css و javascript.
أولا: ننشئ مراقب observer ونقوم بربطه بالعنصر المستهدف
ثانياً: ننشئ التنسيق والحركة المطلوبين من خلال css
ثالثا: نتحكم في بدء الحركة وإيقافها من خلال صنف css يتضمن تعريف الحركة المطلوبة بواسطة animation, transition, transform.. الخ
... /* CSS */ .square { width: 200px; height: 200px; background: teal; border-radius: 8px; opacity: 0; /* العنصر مخفي قبل أن يصبح في مجال الرؤية */ } .square-transition { /* تعريفات الحركة */ opacity: 1; /* إظهار العنصر */ transform: translate(50%); transition: opacity 1.5s ease, transform 1.5s ease; } ... <body > <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <div class="square-wrapper"> <!-- scroll العنصر الذي نريد تحريكه عند عمل --> <div class="square square-transition"></div> </div> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <p>scroll </p> <script> const square = document.querySelector('.square');// الوصول على العنصر square.classList.remove('square-transition');// في كانت الحركة نشطة نوقفها // نقوم بإنشاء المراقب const observer = new IntersectionObserver(entries => { entries.forEach(entry => { //scroll حلقة تكرار للمرور على العناصر عندما نعمل if (entry.isIntersecting) { // أذا الصور في ظاهر للمستخدم square.classList.add('square-transition'); // نفعل الحرمة المرتبة بهذا الصنف من خلال إضافته للعنصر return; } square.classList.remove('square-transition'); // إيقاف الحركة }); }); observer.observe(document.querySelector('.square-wrapper')); // تشغيل المراقب وإسناد نطاق عمله على العنصر الحاوي للعنصر المستهدف بالحركة </script> </body>
-
بتاريخ 53 دقائق مضت قال Mazz Ibraheem:
شكرا على الرد، لكن هل اجد هنا شرحا مفصلا عن ذلك
يمكنك البحث في google عن سبل تحقيق الخطوات الي وضعناها لك في الرد السابق.
- 1
-
بداية من الضروري فهم أن SQLiteAssetHelper غير قادر على فتح قاعدة بيانات مشفرة من النوع sqlite ولكن فقط يستطيع التعامل مع قاعدة البيانات المفتوحة من خلال الدالتين getReadableDatabase و getWritableDatabase. ما تستطيع فعله بهذا الخصوص هو إستعمال الأداة SQLCipher for Android مع SQLiteAssetHelper لحل المشكلة ولكن بطريقة نوعاً ما يشوبها التعقيد.
أولاً - نستعمل SQLCipher لإنشاء قاعدة بيانات فارغة مشفرة.
ثانياً - نستعمل SQLiteAssetHelper لقراءة قاعدة البيانات المفتوحة لديك ومن ثم نسخ بياناتها الى المشفرة سابقة ألإنشاء.
ثالثاً - نحذف قاعدة البيانات المفتوحة بعد إغلاقها.
تستطيع الإطلاع أكثر على SQLCipher هنا
- 1
-
بتاريخ 3 ساعات قال Aya Dawod:
نعم يبدو انك مع سرعة القراءة او نحو ذلك ولتشابه الوسمين اعتقدت ان u هي ul ولكنني اقصد u والتي تعني underline text
عذراً على الخطأ نعم كنت مستعجلاً. لاحظي أن الصواب هو أن ins تستعمل للدلالة على أن النص تم وضعه لاحقاً كتحديث على النص الأصلي وغالباً ما يتم وضعه برفقة الوسم del الذي يدل على أن جزء من النص تم إستبداله أو التعديل عليه أو إلغاءه من خلال خط يظهر على النص.
أما الوسم u فهو لا معنى له سوى وضع خط تحت النص لغرض تمييزه.
- 1
-
لا يوجد تشابه بين عمل أي من الوسمين في سؤالك. نستخدم الوسم ul للتعبير عن قائمة عناصر بدون ترقيم unordered list. بينما نستعمل الوسم ins لحشر نص تحته خط في نص ما. لاحظ المثال التالي
... <p>My favorite color is <ins>red</ins>!</p> <!-- لاحظ الوسم هنا يقوم بأضافة النص تحته خط --> ... <ul> <!-- li تعريف قائمة من العناصر بدون ترقيم ولا يمكن وضع شيء داخل هذا الوسم العنصر ما عدا --> <li>one</li> <li>two</li> <li>Three</li> </ul> ...
- 1
-
يعتمد الجواب على سؤالك كثيراً على الأدوار المناطة بك كمطور backend. إذا كان دورك يقتصر على تكويد تطبيق الواجهة الخلفية وتسليمه, فإنك بهذه الحالة لا علاقة لك بالنظام التشغيلي Operating System الذي سيعمل عليه التطبيق. لكن إذا كان من ضمن أدوارك عمل deployment و ربط النطاق domain والربط مع قاعدة البيانات database محلياً داخل الخادم server أو خارجه , فإنك ستكون بحاجة لتعلم هذه المهارات المرتبطة بشكل مباشر أو غير مباشر مع النظام التشغيلي سواء كان linux أم windows وسواء كنت تتعامل مع جهاز حقيقي physical أو إفتراضي virtual machine.
خلاصة القول وبكلام أدق أنت بحاجة الى تعلم المهارات المرتبطة بعملك كمطور backend وليس كل شيء في أنظمة التشغيل.
- 1
-
حتى نتمكن من تشخيص المشكلة التي تحدث معك لابد لك من توفير تفاصيل أكثر. في الواقع الحل الأسهل هو أرفاق ملف المشروع بشكل مضغوط zip أو rar ليتسنى لنا تشغيل الكود وعمل debug.
-
يمكنك إستعمال الدوال isAfter, isBefore, isAtSameMomentAs المرتبطة بالنوع DateTime لمقارنة الوقت و ترجع كل من هذا الدوال true أو false وكما يلي
snapshot.data[index]['LastDate'].isAfter(DateFormat('dd-MM-yyy').format(DateTime.now())) snapshot.data[index]['LastDate'].isBefore(DateFormat('dd-MM-yyy').format(DateTime.now())) snapshot.data[index]['LastDate'].isAtSameMomentAs(DateFormat('dd-MM-yyy').format(DateTime.now())) //compareTo كما يمكنك إستخدام // لكن هذه الدالة ترجع لك 1 أو 0 أو -1 بنفس الدلالة السابقة snapshot.data[index]['LastDate'].compareTo(DateFormat('dd-MM-yyy').format(DateTime.now())) // DateTime لاحظ أننا نقارن النوع //String إذا الوقت لديك من النوع //كما يلي DateTime يمكنك تحويله الى dt= DateTime.parse('2020-01-02T07:12:50+07:00') // مثال // ثم تجري المقارنة كما سبق
الحل المطروح هنا يحل الإشكالية الموجودة في المثال في سؤالك أي المقارنة بين قيم الوقت كما يفهم من الكود الذي تطرحه. إذا كنت تريد مقارنة قيم أخرى فلا بد من تحديد نوع هذه القيم لتحديد طريق المقارنة ذات العلاقة.
- 1
-
بتاريخ 2 ساعات قال محمد الحربي24:
هذه هي
لاتوجد مشكلة في schema كذلك unique:true تعمل بشكل طبيعي ولا تسمح بتكرار الأدخال كما تبين لنا عند الفحص.
هل قمت بتطبيق unique:true على ال schema بعد إنشاءك قاعدة البيانات؟ يبدو أن المشكلة بسببب عدم سريان مفعول الخاصية على قاعدة البيانات مسبقة الإنشاء لديك. جرب حذف قاعدة البيانات ثم تعيد التجربة أو إذا كانت البيانات مهمة ولا تريد حذفها أنشئ قاعدة بيانات جديدة ثم جرب إنشاء مستخدم بنفس الإيميل أكثر من مرة ستجد الخطأ
E11000 duplicate key error
-
-
بتاريخ 36 دقائق مضت قال محمد الحربي24:
ملف الباكإند تقصد؟
ولا المشروع كامل؟
نعم ال backend.
-
يرجى إرفاق ملف المشروع والأفضل بدون node_modules حتى نتمكن مساعدتك بشكل أفضل.
-
الخاصية overflow في css تتحكم فيما إذا كان المحتوى في عنصر من نوع block-level سيتم عمل clipping من عدمه وفيما إذا كان سيتم إضافة scrollbar من عدمه وبحسب القيم المسندة الى overflow.
في الصورة لديك العنصر الرئيسي body يحتوي على overflow-x:hidden أي أن المحتوى إذا تجاوز عرض الصفحة سيتم إخفاء جزء منه ولن يظهر scrollbar.
يمكنك الإطلاع هنا https://wiki.hsoub.com/CSS/overflow-x#hidden
-
بتاريخ 4 دقائق مضت قال محمود سعداوي:
شكرا.
كل شيء تمام مع firefox - edge
المشكل في chrome.
هل يوجد حل.
غالباً المشكلة في cache المتصفح. ربما كنت تعمل على نسخة قديمة من الكود ومازالت عالقة. لحل المشكلة قم بعمل clear
settings > privacy and security > clear browser data >
- 1
-
بتاريخ 14 دقائق مضت قال محمود سعداوي:
تفضل
لا يبدو أن هناك مشكلة, الصفحة تعرض لدي على جميع المتصفحات كما تريدها أنت في الصورة. هل جربت تفتح الصفحة في اكثر من متصفح؟ مثلاً edge , firefox , chrom
- 1
-
بتاريخ 1 ساعة قال علي محسن:
لا يحدث تغيير تلقائي لكن بما أنك لم تجري تعديلات على الكود فلاحظ أنك تستعمل bootstrap لتصميم ال layout فهل قمت بتحديث هذه المكتبة أو غيرت نسختها؟
بتاريخ 18 دقائق مضت قال Ahmed Alfadaly:لا لم احدثها انا استخدم الاكواد في الاصدار الذي وضعته او ضمنته ف مستند html
بتاريخ 5 دقائق مضت قال علي محسن:يمكنك إضافة padding الى الجزء المسيطر على حجم الصور لتظهر لك بشكل اصغر مع حاشية مثلا أو تضيف لها margin.
.row-padding { padding: 10%; } ... <!-- ثم ضع الصنف أعلاه مع الصنف الذي يحوي أعمدة الصور --> <div class="row row-padding">...</div> ...
- 1
-
يرجى إدراج ملف المشروع حتى نشخص الخلل ونساعدك.
-
بتاريخ 20 دقائق مضت قال Ahmed Alfadaly:
استاذي اذا لاحظت حجم الصور كانت اصغر وتوجد حاشيه اما الان فانه لا يوجد اي حواشي وكبرت حجمها وانا لم افعل ذلك
اعلم ان شكله جيد ايضا ولكن لقد عدلت فيه حيث كان يوجد sections فوق بعضها اي متداخله
هل هذا طبيعي ان يتغير بشكل تلقائي هكذا!
لا يحدث تغيير تلقائي لكن بما أنك لم تجري تعديلات على الكود فلاحظ أنك تستعمل bootstrap لتصميم ال layout فهل قمت بتحديث هذه المكتبة أو غيرت نسختها؟
- 1
-
لطفاً هل يمكنك توضيح سؤالك أكثر.. الموقع يبدو ممتازاً. هناك اربعة صور في سؤالك في أي واحدة المشكلة وما الذي تريد تحقيقه.
- 1
-
الحل الأمثل في مثل هذه الحالة هو إستعمال recursive method طالما أن نوع السلسلة متعدد المستويات من العمق multiple levels depth. إليك المثال التالي
my_list = [[1, 2], [3, 4, [5, 6, [7]], 8], 9, [10, 11, [12, [13, [14], 15], 16], 17]] def flatten(L): if not isinstance(L,(list)): # إذا لم يكن المدخل الحالي قيد المعالجة من النوع سلسلة yield L # generator object نعيد return for F in L: # نمر في حلقة تكرار على المدخل yield from flatten(F) # نعيد الناتج ونستمر بالإرجاع لحين المرور على جميع العناصر flat= list(flatten(my_list)) # نستدعي الدالة ونحول الى سلسلة
لا يوجد طريقة مسبقة التعريف تقوم بهذه المهمة ولكن هذه الطريقة الأكثر كفاءة.
-
الطريقة الأسرع لتنقية مصفوفة جافاسكربت من العناصر المكررة هي إستخدام Set مع spread function ( أو ...) كما في المثال
let myString = "EElllzzzzzzzeroo"; let array= myString.split("") // نحول النص الى مصفوفة let uniqueArrayElements = [...new Set(array)]; // نستخرج العناصر الفريدة
لاحظ أننا لم نعدل على المصفوفة الأصلية الناتجة من تقسيم النص. أيضاً بالنسبة للخطأ الذي يظهر لك سببه أنك تحاول إستدعاء دالة filter ( التابعة للنوع Array ) من خلال متغير من النوع String.
-
إذا كان المشروع الأصلي حديث الإنشاء ولم يمضي عليه الكثير فلا مشكلة في نسخك للأشياء المذكورة في سؤالك, لكن في حالة كان قد مضى عليه فترة طويلة (لنقل أكثر من شهر ) فقد يعرضك إستعمال أدوات ومكتبات بإصدارات قديمة إلى مشكلات أمنية وتقنية أثناء وبعد التطوير.
في كثير من الأحيان يتم أكتشاف ثغرات أمنية security issues في بعض الأدوات والمكتبات مما يدفع منشئيها إلى إجراء معالجات سريعة بغية عدم تسببها بأضرار للمستخدم النهائي. أيضا يقوم القائمين على تطوير هذه البرمجيات بشكل دوري بإطلاق إصدارات تتضمن ميزات جديدة new features و إصلاح الأخطاء bug fixes.
كيفية استيراد ملف ارشيف SQL تم انشاءه في phpmyadmin باستخدام الـ command line
في PHP
نشر
كما ذكرنا في الأجابة الأصلية يمكنك تغيير ما يلزم تغييره وفقاً لمتطلباتك. حاول تغيير الإتصال بإستخدام pdo كما يلي وعندما تواجه مشكلة يمكنك البحث عن الخطأ في google أولاً فأن تعذر عليك الحل سنساعدك بكل سرور.