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

السؤال

نشر

السلام عليكم ورحمة الله وبركاته.

أريد عمل فكرة عداد في موقعي -- موقعي هو عبارة عن موقع لعرض الرسائل وأريد جعل لكل مستخدم عدد رسائل معين فقط في اليوم

قمت بعمل جدول logs يحتوي على عواميد id , message, user, date وقمت بكتابة الإستعلامة الأتية للبحث عن عدد التسجيلات لليوم هكذا

$checkLog = $conn->prepare("SELECT id FROM logs WHERE date = ? AND user = ?");
$checkLog->execute(array(date("Y-m-d"), $SUI));

حيث ان المتغير $SUI يحتوي على id المستخدم الحالي و تقوم الاستعلامة بالبحث كالتالي

if ($checkLog->rowCount() < $user['counter']) {
	echo "Still Yes";
}else{
    echo "done today";              
}

ويحتوي جدول users على العامود counter وله قيمة افتراضية 5 فتقوم الاستعلامة بمقارنة هل عدد أعمدة الlogs اصغر من العدد المسموح به للمستخدم ام لا وعندها تنفذ شرط معين

انا اتم هذه العملية بإستعمال ajax والغريب هنا أنه احيانا يطبع لي Still Yes وقد كانت $checkLog->rowCount() من $user['counter'] وأحيانا يحدث العكس ولم يتم الشرط

بمعنى اصح احيانا يتم الشرط ولكن لا يحدث ما داخل if ويحدث ما داخل else والعكس فهل هناك تفسير لهذا الbug?

Recommended Posts

  • 0
نشر

مرحباً محمود،

أظن أنك تستخدم PDO، بما أنك تريد الإستعلام عن عدد السجلات التي تم تخزينها في اليوم الحالي فلم لا تستخدم الدالة count التابعة للغة sql بالشكل التالي:

<?php

$checkLog = $conn->prepare("SELECT count(id) FROM logs WHERE DATE(date) = CURDATE() AND user = ?"); // prepare the query
$checkLog->execute([$SUI]);
$rowCount = $checkLog->fetchColumn(); // جلب عدد الصفوف

// عمل الشرط المناسب حسب عدد الصفوف
if($rowCount < 5) {
  echo "Still Yes";
}else{
    echo "done today";              
}

المفروض إذا كان عدد الصفوف أصغر من 5 يتحقق الشرط و بالتالي يطبع عبارة still yes لكن إن كان أكبر من أو يُساوي 5 يطبع done today،

بالتوفيق.

  • 0
نشر

مرحبا،

كيف قمت بجلب بيانات المتحول user$ قد تكون المشكلة فيها.

كما أن عبارة SQL لديك ليست بأفضل كفائة لأنك لا تعيد من الاستعلام ماتريده بالضبط، إن تعديل المدرب سمير مناسب لحالتك.

أرجو منك إطلاعنا على باقي الأجزاء كما ذكرت لتحديد المشكلة، شكرا لك.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...