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

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

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

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

مهان دری ۲۷ اسفند ۱۴۰۰، ۰۶:۵۱