۸ سلمان غلامی
در ادامه سوال قبلی (حذف و اضافه کردن رکوردها در دیتابیس)
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۰۷ فروردین ۱۴۰۲

سلام مجدد

در سوال قبلی کدی که فرستادید رو امتحان کردم(کد زیر برای حذف فیلدهای خالی در دیتابیس)

if (empty($_POST['_user_email'])) {
    delete_option('_user_email');
}

فیلد خالی رو حذف کرد و فکر کردم مشکل حل شده و تاپیک بستم، ولی مشکلی که بوجود اومد (بعد از حذف شدن) دوباره وقتی فیلد (_user_email) پر کردم فرم ارسال میشه بدون خطا اما در دیتابس ذخیره نمیشه، کد تغییر دادم به صورت زیر (بجای get_option از update_option استفاده کردم)

function sa_render_html_email()
{
    $user_email = get_option('_user_email');
    if (!empty($_POST['_user_email'])) {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            update_option('_user_email', 'sa_settings_field_email');
        }
    }
    // output the field
    ?>
<input type="email" name="_user_email" value=" echo isset($user_email) ? esc_attr($user_email) : ''; ?>">

if (empty($_POST['_user_email'])) {
    delete_option('_user_email');
}
}

فیلدها در پنل ادمین ذخیره میشه اما در دیتابیس ایجاد نمیشه

سلام و احترام

کدهای شمارا کامل متوجه نشدم » شما در همان بخشی که نمایش فیلد‌ها را انجام میدید در همان بخش عملیات ذخیره سازی را پیاده سازی کرده اید؟


بهنام مرادی ۰۹ فروردین ۱۴۰۲، ۰۰:۱۰

آره همانطور ه استاد توضیح دادن

سلمان غلامی ۰۹ فروردین ۱۴۰۲، ۰۸:۱۶

سلام مجدد

کدی که ضمیمه شده است مشکل در اپدیت اطلاعات دارد » یعنی در بخش اپدیت مقدار دینامیک پاس داده نشده است

لطفا کدهای خودتان را به صورت کامل ضمیمه کنید تا امکان بررسی وجود داشته باشد

موفق باشید

بهنام مرادی ۱۰ فروردین ۱۴۰۲، ۱۴:۰۳

کدهای پلاگین را ارسال کردم

سلمان غلامی ۱۰ فروردین ۱۴۰۲، ۱۵:۵۹

با سلام مجدد

بررسی شد » مشکل شما این هست که بلاک حذف فیلد از دیتابیس را خارج از شرط submit شدن فرم قرار داده اید » یعنی هربار صفحه ریلود شود این بخش اجرا شده و دیتا را حذف می‌کند

کد زیر را برای شما ویرایش کردم

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (!empty($_POST['_user_email'])) {
        update_option('_user_email', 'sa_settings_field_email');
    } else {
        delete_option('_user_email');
    }
}

در این حال مشکلی نخواهد بود.

موفق باشید

بهنام مرادی ۱۲ فروردین ۱۴۰۲، ۲۱:۲۵

سلام

ممنون بابت راهنمایی تون الان با تغییری که گفتید همه چیز اکی

فقط تابع  delete_option زمانیکه مقداری نداره، آپشن‌های خالی رو حذف نمیکنه (از ابتدای تاپیک هم سوالم این بود که چطور آپشن‌های خالی رو از دیتابیس حذف کنم) چطور آپشن خالی حذف میشه از دیتابیس

2f58-setting.jpg

سلمان غلامی ۱۴ فروردین ۱۴۰۲، ۱۳:۱۱

سلام مجدد

خاصیت تابع delete_option این هست که کل ان کلید را حذف می‌کند » یعنی وقتی از این تابع استفاده کنید فقط مقدار را خالی نمی‌کنید بلکه کل ردیف را حذف می‌کند.

اما اگر برای شما این اتفاق نمی‌افتد به این دلیل هست که از ان در بخش تنظیمات خود وردپرس استفاده می‌کنید و وردپرس از انجایی که تنظیماتی که در این بخش هستند را حیاتی می‌داند در فرایند لود وردپرس انهارا مقدار دهی اولیه می‌کند و کلید‌ها مجدد ساخته می‌شوند.

اما در بخش‌های دیگری استفاده کنید مشکلی نخواهد بود.

موفق باشید

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

واقعا ممنون از راهنمایی و توضیحات کاملتون

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

سلمان غلامی ۱۴ فروردین ۱۴۰۲، ۱۷:۲۱