🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ پارسا خالقی
عدم نشان دادن تسک‌ها در فودر مورد نظر
محسن موحد حل شده توسط محسن موحد

سلام

وقت بخیر ، به هنگام کلیک بر روی فولدر مورد نظر تسک‌های مربوط به آن فولدر نشان داده نمی‌شود!

function getTasks(){
    global $pdo;
    $folder = $_GET['folder_id'] ?? null;
    $addCondition = '';
    if(isset($folder) and is_numeric($folder)){
        $addCondition = "and folder_id=$folder";
    }
    $current_user_id = getCurrentUserId();
    $sql = "SELECT * FROM tasks WHERE user_id = $current_user_id $addCondition";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $records = $stmt->fetchAll(PDO::FETCH_OBJ);
    return $records;
}

سلام،

یکبار کوئریو چاپ بگیرید ببینید دقیقا چه کوئری به دیتابیس اجرا میشه و کوئری چاپ شده رو روی phpmyadmin هم میتونید ببرید اجرا کنید تا متوجه ایراد کار بشید. باید مطمئن بشید که روی فولدری که کلیک کردید آیا همون آیدی با $_GET گرفته شده یا نه.

از $folder و $sql چاپ بگیرید. یعنی echo کنید.

البته کدی که نوشتید رو از لحاظ امنیتی میشه بهتر نوشتش و بصورت Binding نوشت تا از SQLi جلوگیری بشه.

کد پیشنهادی:

function getTasks(){
    global $pdo;
    $folder = $_GET['folder_id'] ?? null;
    $addCondition = '';
    $params = [];
    if(isset($folder) && is_numeric($folder)){
        $addCondition = " AND folder_id = :folder_id";
        $params[':folder_id'] = $folder;
    }
    $current_user_id = getCurrentUserId();
    $sql = "SELECT * FROM tasks WHERE user_id = :user_id $addCondition";
    $params[':user_id'] = $current_user_id;
    // برای دیباگینگ
    var_dump($sql);
    var_dump($params);
    $stmt = $pdo->prepare($sql);
    $stmt->execute($params);
    $records = $stmt->fetchAll(PDO::FETCH_OBJ);
    return $records;
}

فقط با دیباگ کردن میتونید مشکل این قسمتو متوجه بشید و هر چی که هست ایراد در فایل کدهاییست که مربوط به کلیک و انتخاب فولدر است.

بهترین پاسخ
محسن موحد ۱۶ تیر ۱۴۰۳، ۲۳:۴۶