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

بلال زيادة

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

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

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

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

    30

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

  1. لا يظهر التطبيق بسرعة كبيرة على المتجر يجب الأنتظار كم يوم حتى يظهر , ايضا عند البحث عن باسم التطبيق و اسم المطور يكون قد ظهور لأنك بحثت باسمه أو باسم مطوره ولكن في حالة وجود تطبيقات مشابهة و تكون أقدم من تطبيقك فسوف تظهر قبل تطبيقك و يكون تطبيقك في الصفحات التالية , ايضا حاول الاهتمام بوصف التطبيق و اسمه و محاولة تمييزه بكلمات دليلة تدل عليه مما تساعد في تقدمه في نتائج البحث الأولى. ولكن لا تقلق سوف يظهر تطبيقك مع مرور الوقت في الصفحات الأولى بعد الزيارات و التحميلات التي سوف تتم عليه.
  2. حاول حذف الساعات و الدقائق و الثواني من الدالة date و قم بتجربة الأمر مرة أخرى. <?php if ( date("Y-m-d")==$row['end_time'] ) : ?>
  3. في متغير $data يجب إعطاءه تاريخ اليوم $data = date('d-m-Y'); ثم في تاريخ النهاية يتم تحويله ليكون بنفس تنسيق التاريخ الحالي $end_time = date('d-m-Y', $row['end_time']); ثم في الاستعلام التالي يتم مقارنة التاريخ الحالي و تاريخ النهاية كما في الشكل التالي $stmt = $db->prepare("UPDATE breaking_news SET news=? date <= ?, end_time >= ?");
  4. حاولي حذف مجلد node_modules و من ثم تنفيذ الأمر التالي npm install لتنزيل الحزم كاملة . ايضا حاولي حذف حزمة webpack من خلال الأمر التالي npm unistall webpack ومن ثم محاولة إعادة تثبيتها من جديد من خلال الأمر التالي npm i -D webpack
  5. يمكنك إضافة TIME_TO_SEC إلى الأستعلام الخاص بك بحيث تقوم هذه الدالة بتحويل قيمة الوقت إلى ثواني , بهذا الشكل "SELECT COUNT(*) FROM users u WHERE TIME_TO_SEC() <= 18000" ثم بداخل أقواس هذه الدالة نقوم بطرح الوقت الحالي مع اخر وقت تم تخزينه في الحقل last_login_date عن طريق الدالة TIMEDIFF بهذا الشكل "SELECT COUNT(*) FROM users u WHERE TIME_TO_SEC(TIMEDIFF(NOW(), u.last_login_date)) <= 18000" لاحظ الوقت الحالي نعبر عنه بِ NOW()
  6. يبدو أن الكود ناقص , فقد قمت بفحص الكود و لكن لم أجد أي مشكلة , الأن هل يوجد بكود صفحة الدخول كود يعمل على التحقق من أنه هناك جلسة أو لا ؟ يعني إذا كان يوجد جلسة يقم بتوجيه الي الصفحة المرادة و إذا لم توجد جلسه يخرجه إلى صفحة الدخول . ايضا هل Supermarket هي صفحة الداش بورد ؟
  7. تأكد اسم المستخدم , لأنك تعتمد على اسم المستخدم في تكوين الجلسات ؟ هل تأكدت منه ؟ لأنه إذا كان اسم المستخدم مسجل فأنه سوف يرجع البيانات و من ثم يقوم بتسجيل جلسة و إذا كانت خاطئة لا يقوم بتسجيلها.
  8. يمكنك فعل ذلك من خلال استخدام inner join بهذه الطريقة $con = mysqli_connect("localhost", "root", "123123", "database"); mysqli_query($con, "SELECT n.*, u.* FROM notification n inner join user u on n.user_id=u.id"); فلاحظ أننا قمنا بوضع مفتاح يعبر عن كل جدول فحرف n يعبر عن جدول notification و حرف u يعبر عن جدول user ثم قمنا بجلب كل من الحقول من كلا الجدولين باستخدام * ثم قمنا ربط الجدولين باستخدام inner join كما في المثال السابق . ايضا يمكنك ربط أكثر من جدول بهذه الطريقة من خلال استخدام inner join كذلك mysqli_query($con, "SELECT n.*, u.*, c.title FROM notification n inner join user u on n.user_id=u.id inner join chat c on c.user_id=u.id"); هل يمكنك إرفاق الكود الخاص بك لنساعدك في ربط الجداول ؟
  9. نأسف لأننا قمنا بالرد بعد مدة من الوقت و لكن لأن الكود كبير و و عملية فحص الكود أخذت وقت كبير ايضا , لذلك في هذا الكود لديك while ($row = $result->fetch_assoc()) { $logintype = $row['logintype']; $name = $row['name']; $userid = $row['id']; $shopname= $row['shopname']; if ($logintype != 1) { ?> <script type="text/javascript"> window.location = "../index.php"; </script> <?php } } قم بإضافة تعريف للجلسة بهذا الشكل $_SESSION['userName'] = $name; فبذلك يصبح الكود كاملاً while ($row = $result->fetch_assoc()) { $logintype = $row['logintype']; $name = $row['name']; $userid = $row['id']; $shopname= $row['shopname']; $_SSION['userName'] = $name; if ($logintype != 1) { ?> <script type="text/javascript"> window.location = "../index.php"; </script> <?php } } حاول رجاء تنفيذ الكود ثم أخبرني بالنتيجة.
  10. صحيح , الملف مكتوب باستخدام مكتبة جيكويري, لذلك تم وضعه بعد سطر استدعاء مكتبة جيكويري و معنى كلمة init.js ربما هي اختصار لكلمة initialize أي ملف البداية و لكن هذا لا يهم يمكن تسمية الملف بأي اسم تريده . ووظيفة الملف هو التعامل مع أحداث النقر على الأزرار و حدث الرجوع لإعلى إذا كان سكرول الصفحة أسفل و الكثير من الأحداث ويتم قراءة الملف بعد تحميل الصفحة حتى تكون العنصر قد حُملت بشكلٍ كامل . لم أفهم ما تقصد أنه كان يستخدم ك command line و لكن الأن ظهرت عدة تقنيات مثل Webpack بحيث توفر عملية تجميع ملفات css أو js و استدعاء الملف في حالة استخدامه فقط. , هل ربما تقصد هذه التقنية ؟
  11. يمكنك تنفيذ الأمر التالي flutter analyze لمشاهدة جميع الأخطاء التي تظهر , ولكن هناك أخطاء لا يمكن إكتشافها إلا بعد تجربة التطبيق من قبل المستخدمين و على عدة أجهزة , لذلك نلجأ لمثل خدمة crashlytics
  12. يمكنك استخدام خاصية Crashlytics بحيث هذه الميزة تساعدك على جمع التحليلات و التفاصيل حول الأعطال و الأخطاء التي تحدث في تطبيقك. و يمكنك استخدام حزمة flutter_crashlytics يمكنك من خلال موقع pub.dev من هنا الإطلاع على هذه الحزمة , ايضا هناك تعمل بنفس الفكرة و منها موقع sentry.io و يقدم خدمة تتبع الأخطاء في التطبيق الخاص بك ايضا عن طريق حزمة sentry_flutter من هنا , بحيث أيضا تقدم لك سجلاً كامل بكل الأخطاء و المشاكل التي تواجه المستخدمين عند استخدام تطبيقك.
  13. هل يمكن التأكد من الثابت في ملف wp-config difine('DB_CHARSET', 'utf8'); ايضا حاول الدخول إلى PHPMyAdmin و من ثم في قاعدة البيانات اختار Operations ثم تأكد من Collation هو utf8mb4_general_ci
  14. ربما تكون ترميز الملفات نفسها ليست utf-8 لذلك حاول التأكد من ترميز الملفات أنه utf-8 كما في الصورة المرفقة على محرر Notepad++
  15. يجب إضافة ORDER BY DESC و تحديد كم صف يجلب عن طريق LIMIT 1 , ولاحظ ان رقم 1 هو عدد الصفوف الذي نود جلبها عند تنفيذ الأستعلام, يمكنك تجربة تنفيذ ذلك و أخباري بالنتيجة.
  16. صحيح , يمكنك فعل ذلك من خلال وضع index جديد و إسناد له مصفوفة و بداخل هذه المصفوفة المفاتيح و قيمها, كما في الكود التالي $config = array( 'db' => array( 'host' => 'localhost', 'username' => 'root', 'password' => 'password', 'database' => 'database', ), 'settings' => array( 'name' => 'admin', 'password' => '123123123', ), 'index1' => array( '' => '', '' => '', ), 'index2' => array( '' => '', '' => '', ), ); ولكن لا تنسى الفاصلة بين كل index في المصفوفة الرئيسية حتى لا تحدث لك مشاكل.
  17. هناك استعلام يتم إنشاء حدث من خلال كل وقت معين في قاعدة البيانات و هذا الاستعلام هو CREATE EVENT و يمكنك إنشاء حدث كل وقت معين , كل ساعة أو كل دقيقة أو كل ثانية فيمكنك فعل التالي CREATE EVENT `eventName` ON SCHEDULE EVERY 12 HOUR ON COMPLETION NOT PRESERVE ENABLE DO UPDATE users SET tasks_pro = 0 فلاحظ أنه قمنا بإنشاء حدث يتكرر كل 12 ساعة و اسم هذا الحدث هو eventName , ويقوم بعمل reset لحل tasks_pro و يرجع قيمته 0 , ويمكنك تحويل الحدث إلى العمل بالدقائق فيمكنك تغيير كلمة Hour إلى MINUTE فيصبح الحدث CREATE EVENT `eventName` ON SCHEDULE EVERY 12 MINUTE ON COMPLETION NOT PRESERVE ENABLE DO UPDATE users SET tasks_pro = 0
  18. يمكنك فعل ذلك عن طريق وضع array تحوي كامل المصفوفات التي بداخلها فمثلاً يمكنك فعل التالي $config = array( 'db' => array( 'host' => 'localhost', 'username' => 'root', 'password' => 'password', 'database' => 'database', ), ); لاحظ أنه تم إنشاء أول مصوفوفة و كل index في هذه المصفوفة يحتوي على مصفوفة أخرى , ايضا يمكنك تعريف index أخرى بهذا الشكل $config = array( 'db' => array( 'host' => 'localhost', 'username' => 'root', 'password' => 'password', 'database' => 'database', ), 'settings' => array( 'name' => 'admin', 'password' => '123123123', ), ); ويمكنك الوصول إلى أي قيمة عن طريق المفتاح الخاص به , فيمكن أن نجلب قيمة host بهذا الشكل echo $config['db']['host']; وكذلك قيمة username echo $config['db']['username']; أو حتى يمكن جلب قيمة name echo $config['settings']['name'];
  19. ربما يكون هناك خلل في مسار جلب ملف التنسيقات , يجب التأكد من ذلك عن طريق فتح الموقع و الضغط على الزر الأيمن للماوس و اختيار عرض مصدر الصفحة و محاولة تتبع مسار ملف التنسيقات هل هو صحيح أم لا , ايضا تأكدي من اسم ملف التنسيقات و هل قمتي بكتابته بشكلٍ صحيح أو لا
  20. سوف يتم تسجيل الشهادة باسم الشخص الذي سوف يختاز الأختبار بعد الأنتهاء من الدورة , و يمكنك مراسلة الدعم الفني من هنا , حتى تتأكد من كل شيء يجول في خاطرك , قم بالاستفسار منهم و سوف يعملون على إجابتك بشكلٍ سريع و واضح بالنسبة لك
  21. هل ممكن توضح مقصدك بأي كودين تريد دمجهم ؟
  22. هناك أدوات تستعمل في تنفيذ ما تريد و منها هذا الموقع من هنا , لاحظ فكرة هذا الموقع أنه يمكنك من كتابة المقال الخاص بك و عند الكتابة يرشدك إلى إمكان وضع كلمات دليلة و ايضا يرشدك إلى أي كلمات يمكنك استخدامها في مقالك و يعطيك نسبة مئوية عند كتابتك ليوضح لك قوة المقال مقارنة seo , و لذلك يمكنك كتابة مقال غني بالكلمات الدليلة وتتأكد من مطابقته لِ seo قبل طرحه على موقعك.
  23. لربط جدولين أو أكثر نستخدم join وفي هذه الحالة يمكننا ربط الجدولين بهذا الشكل $stmt = $db->prepare('SELECT m.*, a.* FROM `messages` as m inner join `accounts` as a WHERE a.id=m.recipient_id OR a.id =m.sender_id'); لاحظ أنه كان لديك خطأ في الاستعلام و هو تشابه الشرط WHERE a.id=m.recipient_id AND a.id =m.sender_id' فيجب أن يكون الشرط هنا من نوع OR وليس AND لأنه لو لم تقم بتحويله OR ستحدث معك مشكلة و هي أنه لا يمكن الحقل id يساوي الحقلين recipient_id و sender_id معاً
  24. يمكننا تعريف متغير و ليكن باسم $number = "21 1 10 0,22 0 0 0,23 0 0 0,24 0 0 0,25 0 0 0,26 0 0 0,27 0 0 0,28 0 0 0"; ثم ننشأ متغير أخر لنقوم بتقسيم الأرقام عن طريق الفاصلة بهذه الطريقة $_arr = explode(',', $number); ثم ننشأ حلقة تكرار من نوع foreach بهذا الشكل $_c = 0; foreach ($_arr as $str) { ++$_c; list($first, $second, $third, $fourth) = explode(' ', $str); echo $first, ','; } فلاحظ أننا قمنا بأنشاء متغير لنضيف له مقدار 1 في كل مرة تتكرر فيها الحلقة , ايضا قمنا بإنشاء 4 متغيرات حسب الأربع خانات لديك بحيث المتغير $first لأول خانة, $second لثاني خانة, $third لثالث خانة, $fourth لرابع خانة ومن ثم قمنا بطباعة الأرقام الموجودة في أول خانة بهذا الشكل echo $first, ','; و إذا أردنا طباعة أرقام ثاني خانة echo $second, ',';
  25. ربما استطيع مساعدتك في برمجة دالة تحدد المسافة , فلنقم بصنع دالة وليكن اسمها getDistance function getDistance(){ } و لنمرر لها المتغيرات الأتية و هي $lat1, $lon1, $lat2, $lon2, $radius بحيث $lat1, $lon1 هي أحداثيات الموقع الخاص بك و $lat2, $lon2 هي أحداثيات الموقع الذي تريد جلب المسافة بينك وبينه و $radius هو نصف قطر بين كل أحداثيين فتكون الدالة بهذا الشكل function getDistance( $lat1, $lon1, $lat2, $lon2, $radius ) { } ثم نقوم بجلب الزاوية باستخدام متغير $radius $angle = $radius / 180; ثم نقسم كل أحداثية على هذه الزاوية $lat1 /= $angle; $lon1 /= $angle; $lat2 /= $angle; $lon2 /= $angle; ثم نستخدم rad2deg لتحويل الرقم الدائري إلى رقم مكافئ بالدرجات ثم نمرر لها دالة acos لجيب تمام القوسي للرقم ثم نمرر المتغيرات الأربعة داخل دالة sin لإرجاع جيب الرقم بهذا الشكل return rad2deg( acos( sin( deg2rad( $lat1 ) ) * sin( deg2rad( $lat2 ) ) + cos( deg2rad( $lat1 ) ) * cos( deg2rad( $lat2 ) ) * cos( deg2rad( $lon1 - $lon2 ) ) ) ) * $angle; ثم نضرب الرقم الناتج بالزاوية حتى نحصل على المسافة فتكون الدالة بهذا الشكل function getDistance( $lat1, $lon1, $lat2, $lon2, $radius ) { $angle = $radius / 180; $lat1 /= $angle; $lon1 /= $angle; $lat2 /= $angle; $lon2 /= $angle; return rad2deg( acos( sin( deg2rad( $lat1 ) ) * sin( deg2rad( $lat2 ) ) + cos( deg2rad( $lat1 ) ) * cos( deg2rad( $lat2 ) ) * cos( deg2rad( $lon1 - $lon2 ) ) ) ) * $angle; } يرجى تطبيق الحل و أخباري بالنتيجة , فهذا الحل ربما يفيدك و أتمنى أن أكون أجبت على سؤالك بشكلٍ جيد, الأمر قد يكون معقد نوعاً ما و لكن بعد مراجعة الدوال المستخدمة ستوضح لك الأمور كاملة بإذن الله
×
×
  • أضف...