روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۱۰ دانشجوی سون‌لرن
سوال در مورد کد
جامعه پی اچ پی ایجاد شده در ۲۷ اسفند ۱۴۰۰

سلام. در کد این جلسه یه سوال برام پیش اومده

در قسمت ارسال اطلاعات به دیتابیس:

function doneSwitch($task_id)
{
    global $pdo;
    $currentUserID = getCurrentUserID();
    $sql = "UPDATE `tasks` SET is_done = 1 - is_done WHERE user_id = :userID AND id = :taskID";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([':userID' => $currentUserID, ':taskID' => $task_id]);
    return $stmt->rowCount();
}

متغیر $task_id رو در id جدول میزاریم!

id میشه همون آی دی هر فیلد جدول

task_id هم میشه data-taskid که همیشه یا ۱ هست یا ۰ هست!

حالا این کد چطوری کار میکنه؟

سلام دوست عزیز

task_id مربوط میشه به ستونی که id اون تسک قرار داره و همیشه 0 و 1 نیست آی دی خودشو داره

اونی که همیشه 0 یا 1 is_done هست

محمد گازری ۲۷ اسفند ۱۴۰۰، ۰۵:۵۷

من وقتی $task_id رو echo میکنم، سپس روی فیلد‌ها کلیک میکنم یا ۱ رو چاپ میکنه یا ۰

پس این متغیر آی دی رو چاپ نمیکنه!

سیدرضا بازیار ۲۷ اسفند ۱۴۰۰، ۰۶:۲۷

این کد رو ببینید:

$('.isDone').click(function(e) {
        var tid = $(this).attr('data-taskID');
        $.ajax({
          url: "process/ajaxHandler.php",
          method: "post",
          data: {
            action: "doneSwitch",
            taskID: tid
          },
          success: function(response) {
            // location.reload();
            alert(response);
          }
        });
      });

data-taskid رو چاپ میکنه

سیدرضا بازیار ۲۷ اسفند ۱۴۰۰، ۰۶:۲۹

سلام و احترام

لطفا تگ htmlی که داخلش data-taskID قرار داده شده رو هم ارسال کنید

امیر صالحی ۲۷ اسفند ۱۴۰۰، ۰۶:۳۳
<i data-taskID=" $task->is_done ?>" class="isDone clickable fa  $task->is_done ? 'fa-check-square-o' : 'fa-square-o' ?>">i>
سیدرضا بازیار ۲۷ اسفند ۱۴۰۰، ۰۶:۳۴

خب در این قسمت اشتباه مقدار دهی کردین

data-taskID=" $task->is_done ?>"
محمد گازری ۲۷ اسفند ۱۴۰۰، ۰۶:۳۶

خب استاد خودش گفت باید اینجوری بزاریم که اگه تیک خورده بود ۱ باشه و اگه تیک نخورده بود ۰ باشه و بعد با کلیک روی اون بتونیم ۱ و ۰ رو تغییر بدیم!

سیدرضا بازیار ۲۷ اسفند ۱۴۰۰، ۰۶:۳۷

داخل data-taskID نباید is_done قرار بگیره چون طبق جیزی الان وجود داره is_done حاوی مقدار صفر و یا یک هستش.

به جای

<= $task->is_done ?>

باید Id رو قرار بدید

<= $task->id ?>


بهترین پاسخ
امیر صالحی ۲۷ اسفند ۱۴۰۰، ۰۶:۳۸

مشکلی نیست میتونید مقدار is_done رو داخل یه attribute دیگه توی همون تگ html بزارید


"<= $task->id ?>"  data-isdone="<= $task->is_done ?>">
امیر صالحی ۲۷ اسفند ۱۴۰۰، ۰۶:۴۳

با تشکر از محمد و امیر عزیز. پاسخ هر دو نفر مشکل من رو حل کرد. حالا سخته انتخاب کنم که کدوم پاسخ مشکل رو حل کرده چون همه پاسخ‌ها موثر بودند :D

سیدرضا بازیار ۲۷ اسفند ۱۴۰۰، ۰۶:۵۱