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

بنده ائن مواردی ک گفتید رو هم برسی کردم و بزرگی و کوچیکی حرف‌ها هم دقت کردم ولی بازم عملیات دلیت انجم نمیشه

سلام دوست عزیز، خطایی که رخ میده + کدهاتون رو بفرستید تا بتونیم راهنماییتون کنیم.

بهپور شاملو ۳۰ خرداد ۱۴۰۲، ۲۰:۰۴

بنده ائن مواردی ک گفتید رو هم برسی کردم و بزرگی و کوچیکی حرف‌ها هم دقت کردم ولی بازم عملیات دلیت انجم نمیشه

فریماه بزرگیان ۳۰ خرداد ۱۴۰۲، ۲۰:۲۷

در تعریف deletefolder مشگل بود که به صورت بزرگی و کوچیکی نوشته بودم ولی بازم عملیات دلیت درست نشد و انجام نمیشد.

فریماه بزرگیان ۳۰ خرداد ۱۴۰۲، ۲۰:۲۸

سلام.

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

اگر بخواهیم این کدهارا چک کنیم، به ترتیب راه‌ها رو میگم؛ انجام بدید تا مشکل پیدا بشه:

  1. هنوز مشکل کوچک و بزرگی در این تصاویر پابرجاست. تابع deletefolder تعریف شده، بنابراین داخل if باید deletefolder($_GET[delete_folder]) بنویسید.
  2. آیا وارد if میشود؟
  3. مقدار $_GET[delete_folder] چند است؟ echo بگیرید.
  4. آیا وارد تابع deleteFolder میشود؟
  5. داخل تابع از متغیر $sql میتونید echo بگیرید و داخل دیتابیس دستی کوئری رو اجرا کنید. (یکی از راه‌های دیباگ کردن خط به خط و دستی است.)
  6. مقدار متغیر $deletedcount بعد از اجرای تابع چند است؟ قسمت folders deleted چند میزنه؟
  7. یک راه دیگه برای گرفتن اکسپشن اگر خطایی در عملیات کوئری و دیتابیس بود، استفاده از try/catch، مثال:
try {
    $query = "DELETE FROM folders WHERE id = :id";
    $statement = $pdo->prepare($query);
    $statement->bindParam(':id', $folder_id, PDO::PARAM_INT);
    $statement->execute();
    $rowCount = $statement->rowCount();
    if ($rowCount > 0) {
        echo "رکورد با موفقیت حذف شد.";
    } else {
        echo "هیچ رکوردی حذف نشد.";
    }
} catch (PDOException $e) {
    echo "خطای کوئری: " . $e->getMessage();
}
هیلا عبادی ۳۰ خرداد ۱۴۰۲، ۲۲:۵۷

مشگل بزرگی و کوچکی رو حل کردم ولی بازم کار نکرد و مواردی که فرمودید رو هم بعد از ظهر تست میکنم

فریماه بزرگیان ۳۱ خرداد ۱۴۰۲، ۰۳:۳۵

با سلام خسته نباشید بنده طبق درستور العمل هایی که فرمودید پیش رفتم ولی بازم درست نشد و بیشتیم متوجه چیزیش نشدم میشه بیشتر بهم کمک کنید لطفا؟

فریماه بزرگیان ۰۲ تیر ۱۴۰۲، ۱۹:۲۳

سورس کدتون رو قرار بدید تا فیکسش کنم.

هیلا عبادی ۰۲ تیر ۱۴۰۲، ۲۱:۴۸

function deleteFolder($folder_id){

    global $pdo;

    $sql = "delete from folder where id = $folder_id ";

    $stmt = $pdo->prepare($sql);

    $stmt->execute();

    return $stmt->rowCount();

}

فریماه بزرگیان ۰۳ تیر ۱۴۰۲، ۱۴:۱۰

if(isset($_GET['delete_folder']) && is_numeric($_GET['delete_folder'])){


    $deletedcount =  deleteFolder($_GET['delete_folders']);

   

    echo "$deletedcount folders deleted";

}



فریماه بزرگیان ۰۳ تیر ۱۴۰۲، ۱۴:۱۱

این قسمتو داخل تصویر دیدم،

کل پروژتون رو گفتم تا تست بگیرم.

هیلا عبادی ۰۳ تیر ۱۴۰۲، ۲۳:۲۴

echo $_GET['delete_folder'];

موقع اجرای این کد با این ارور مواجه میشوم

Warning: Undefined array key "delete_folder" in C:\\xampp\\htdocs\\dashboard\\7todo\\index.php on line 14

همچنین موقع اجرای کد زیر به ارور زیر میرسم

Warning: Undefined variable $folder_id in C:\\xampp\\htdocs\\dashboard\\7todo\\index.php on line 16

فریماه بزرگیان ۰۵ تیر ۱۴۰۲، ۰۸:۱۶

بعد از اجرای ashe/try به ارور زیر بر میخورم فکر میکنم مشگل از دیتا بیس باشه


Warning: Undefined variable $folder_id in C:\\xampp\\htdocs\\dashboard\\7todo\\index.php on line 19

خطای کوئری: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

فریماه بزرگیان ۰۵ تیر ۱۴۰۲، ۰۸:۲۰

delete_folder در پارامترهای url وجود نداره و $_GET به خطا میخوره و بالتبع بقیه متغیرها هم که از اینجا مقدار میگیرند بدون مقدار میمونن. باید فولدری انتخاب کنید و در url پارامترش اضافه بشه.

هیلا عبادی ۰۵ تیر ۱۴۰۲، ۱۶:۰۸

واس حلش باید ادرس فایل رو داخل url وارد کرد؟

شرمنده من یکم از بیس شروع نکردم مثل بقیه دانشجو‌ها زیاد شاید متوجه نشده باشم

فریماه بزرگیان ۰۵ تیر ۱۴۰۲، ۱۷:۲۶

باید مقدار delete_folder در url باشد یعنی فرض کنیم url شما این است:

http://localhost/7todo/index.php

پس بعنوان query string باید delete_folder رو اضافه کنیم:

http://localhost/7todo/index.php?delete_folder=12

اگر بخواهیم مقدار دیگری هم اضافه کنیم با & میتونیم.

خب حالا اگر این url باز شود میتوان با $_GET مقدار delete_folder رو گرفت که در مثال بالا 12 میشه.

هیلا عبادی ۰۵ تیر ۱۴۰۲، ۱۷:۳۴

داخل url این رو وارد میکنم بازم دیلیت نمیشه

http://localhost/dashboard/7todo/?remove_folder=1

فریماه بزرگیان ۰۷ تیر ۱۴۰۲، ۱۲:۲۹


Warning: Undefined array key "delete_folders" in C:\\xampp\\htdocs\\dashboard\\7todo\\index.php on line 9


Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 in C:\\xampp\\htdocs\\dashboard\\7todo\\libs\\lib-task.php:13 Stack trace: #0 C:\\xampp\\htdocs\\dashboard\\7todo\\libs\\lib-task.php(13): PDOStatement->execute() #1 C:\\xampp\\htdocs\\dashboard\\7todo\\index.php(9): deleteFolder(NULL) #2 {main} thrown in

C:\\xampp\\htdocs\\dashboard\\7todo\\libs\\lib-task.php on line 13

من واقعت گیج شدم میشه ی نفر دسترسی انی دسک بگیره؟؟

فریماه بزرگیان ۰۷ تیر ۱۴۰۲، ۱۲:۴۰

این خط از خطا چی میگه؟ توجه کنید:

Warning: Undefined array key "delete_folders" in C:\\xampp\\htdocs\\dashboard\\7todo\\index.php on line 9

گفته delete_folders تعریف نشده. درسته؟

شما داخل آدرس چی گذاشتید؟ توجه کنید:

http://localhost/dashboard/7todo/?remove_folder=1

تعریف کردید remove_folder درسته؟ باید آدرس به این شکل باشد:

http://localhost/dashboard/7todo/?delete_folders=1

در هرصورت اگر بازهم نتونستید، به آیدی تلگرام بنده @bidak پیام بدید.

بهترین پاسخ
هیلا عبادی ۰۷ تیر ۱۴۰۲، ۲۱:۲۳