🚀 تخفیف ۳۵٪ + ۳.۵ میلیون هدیه! برنامه‌نویسی رو الان شروع کن - فقط امروز!
۰ ثانیه
۰ دقیقه
۰ ساعت
۱۸ shilbon
عمل نکردن کد(مشگل جدید)
جامعه پی اچ پی ایجاد شده در ۳۰ خرداد ۱۴۰۲

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

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

صادق برزگر ۳۰ خرداد ۱۴۰۲، ۲۰:۰۴

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

shilbon ۳۰ خرداد ۱۴۰۲، ۲۰:۲۷

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

shilbon ۳۰ خرداد ۱۴۰۲، ۲۰:۲۸

سلام.

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

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

  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();
}
محسن موحد ۳۰ خرداد ۱۴۰۲، ۲۲:۵۷

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

shilbon ۳۱ خرداد ۱۴۰۲، ۰۳:۳۵

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

shilbon ۰۲ تیر ۱۴۰۲، ۱۹:۲۳

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

محسن موحد ۰۲ تیر ۱۴۰۲، ۲۱:۴۸

function deleteFolder($folder_id){

    global $pdo;

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

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

    $stmt->execute();

    return $stmt->rowCount();

}

shilbon ۰۳ تیر ۱۴۰۲، ۱۴:۱۰

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


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

   

    echo "$deletedcount folders deleted";

}



shilbon ۰۳ تیر ۱۴۰۲، ۱۴:۱۱

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

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

محسن موحد ۰۳ تیر ۱۴۰۲، ۲۳:۲۴

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

shilbon ۰۵ تیر ۱۴۰۲، ۰۸:۱۶

بعد از اجرای 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

shilbon ۰۵ تیر ۱۴۰۲، ۰۸:۲۰

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

محسن موحد ۰۵ تیر ۱۴۰۲، ۱۶:۰۸

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

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

shilbon ۰۵ تیر ۱۴۰۲، ۱۷:۲۶

باید مقدار 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

shilbon ۰۷ تیر ۱۴۰۲، ۱۲:۲۹


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

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

shilbon ۰۷ تیر ۱۴۰۲، ۱۲:۴۰

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

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 پیام بدید.

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