...' /> ...' />
۸ zynb moallemi
دریافت ایدی فولدر
جامعه پی اچ پی ایجاد شده در ۲۵ بهمن ۱۴۰۱

سلام وقتتون بخیر

من این سوال ودیدم که بقیه پرسیده بودن و شما این کد و گفتید این کد و بنویسیم

  $('

  • $pdo->lastInsertId()++?>">+input.val()+'
  • ').appendTo('ul.folder-list');

    lastInsertId()++ دقیقا کجاست؟

    و باید چه چیزی توش باشه

    سلام

    این مورد یک تابع خود رابط pdo هست و آخرین آیدی ایجاد شده رو به ما نمایش میده.++ هم برای اضافه شدن یک واحد به آیدی آخر هست.

    احمدرضا فاطمی کیا ۲۵ بهمن ۱۴۰۱، ۱۶:۱۰

    بله ولی من میزنم ارور میده یعنی همچین تابعی نداره

    zynb moallemi ۲۶ بهمن ۱۴۰۱، ۱۰:۳۵

    سورس کد رو قرار بدید بررسی بشه.

    احمدرضا فاطمی کیا ۲۶ بهمن ۱۴۰۱، ۱۲:۵۱

    من یه تغییراتی دادم که شاید اوکی بشه ولی نشد

    لطفا راهنمایی بفرمایید

    https://github.com/zeinab2038/sold/blob/main/todolist.zip

    zynb moallemi ۲۶ بهمن ۱۴۰۱، ۲۰:۰۸

    سلام،

    شما زمانی که داخل جدول folders میخواید یک رکورد جدید اینسرت کنید نباید آیدی بهش بدید چون آیدی رو حالت auto increment هست و هر رکوردی که اضافه میشه اتومات یک آیدی بهش اختصاص داده میشه. در این سناریو addFolder ای که دارید نهایتا میتونید یک فیلد user_id در نظر بگیرید و آیدی سازنده رو قرار بدید، آیدی کسی که لاگین کرده و ....

    $current_user_id = getCurrentUserId();
    $sql = "INSERT INTO `folders` (name, user_id) VALUES (:folder_name, :user_id);";
    

    بعد از اینسرت میتونید مقدار lastinsertid رو بگیرید و بعنوان خروجی ajax فرستاد و داخل تگ html گذاشت.

    function addFolder($folder_name, $user_id){
        global $db;
        $stmt = $db->prepare("INSERT INTO folders (name, user_id) VALUES (:folder_name, :user_id)");
        $stmt->bindParam(':folder_name', $folder_name);
        $stmt->bindParam(':user_id', $user_id);
        $stmt->execute();
        return $db->lastInsertId();
    }
    

    اگر مقصود دیگری داری توضیح بیشتری بنویس تا بهتر بتونیم کمکت کنیم.

    کدهای صفحه lib-tasks.php رو ریفکتور کردم به این شکل میتونی ازش ایده بگیری و مخصوصا جاهایی که داده از کاربر دریافت میکنی و select میزنی به دیتابیس جدای اینکه prepare مینویسی از bindparam هم استفاده کن:

    function getFolders() {
        global $db;
        $query = "SELECT * FROM folders";
        $statement = $db->prepare($query);
        $statement->execute();
        $folders = $statement->fetchAll(PDO::FETCH_OBJ);
        return $folders;
    }
    function deleteFolder($folderId) {
        global $db;
        $query = "DELETE FROM folders WHERE id = :folderId";
        $statement = $db->prepare($query);
        $statement->execute(['folderId' => $folderId]);
        $deletedCount = $statement->rowCount();
        return $deletedCount;
    }
    function addFolder($folderName, $userId) {
        global $db;
        $query = "INSERT INTO folders (name, user_id) VALUES (:folderName, :userId)";
        $statement = $db->prepare($query);
        $statement->execute(['folderName' => $folderName, 'userId' => $userId]);
        $folderId = $db->lastInsertId();
        return $folderId;
    }
    function getTasks() {
        global $db;
        $folderId = $_GET['folder_id'] ?? null;
        $folderCondition = '';
        if (isset($folderId)) {
            $folderCondition = " WHERE folder_id = :folderId";
        }
        $query = "SELECT * FROM task $folderCondition";
        $statement = $db->prepare($query);
        $statement->execute(['folderId' => $folderId]);
        $tasks = $statement->fetchAll(PDO::FETCH_OBJ);
        return $tasks;
    }
    function addTask($titleTask, $folderId) {
        global $db;
        $query = "INSERT INTO task (title, folder_id) VALUES (:titleTask, :folderId)";
        $statement = $db->prepare($query);
        $statement->execute(['titleTask' => $titleTask, 'folderId' => $folderId]);
        $insertedRows = $statement->rowCount();
        return $insertedRows;
    }
    function deleteTask($taskId) {
        global $db;
        $query = "DELETE FROM task WHERE id = :taskId";
        $statement = $db->prepare($query);
        $statement->execute(['taskId' => $taskId]);
        $deletedCount = $statement->rowCount();
        return $deletedCount;
    }
    
    محسن موحد ۲۶ بهمن ۱۴۰۱، ۲۳:۰۷

    این حالت و باید چجوری قرار بدم

    auto increment ؟؟

    که به صورت خودکار باشه تو دیتابیس پیداش نمی‌کنم

    zynb moallemi ۲۷ بهمن ۱۴۰۱، ۰۹:۳۷

    توی تب کالمن‌ها ویرایش کنید کالمن آیدی رو و تیک گزینه AI رو فعال کنید.d360-GhXic.png

    بهترین پاسخ
    احمدرضا فاطمی کیا ۲۷ بهمن ۱۴۰۱، ۱۰:۳۵

    ممنون از شما

    zynb moallemi ۲۹ بهمن ۱۴۰۱، ۲۱:۰۵