سرمایه گذاری متفاوت در سال نو 🍎🌱 ۳۵٪ تخفیف نوروزی ➕ حضور رایگان در مسترمایند نخبگان صنعت نرم‌افزار 💻✅
۰ ثانیه
۰ دقیقه
۰ ساعت
۱۲ centurion mars
نواقص پلاگین،مواردی برای تکمیل ؟
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۲۸ فروردین ۱۴۰۱

سلام

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

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

این برنامه کار میکند و ارور نمیدهد،

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

  • در بخش ویرایش و بروزرسانی ،هنگام ذخیره سازی حتی اگر رکوردی در ورودی‌های نباشد هم ذخیره سازی انجام میشود و رکورد خالی ثبت میکند!!چگونه در دیتا بیس شرط بگذاریم که خالی رکورد ثبت نکند؟؟(این مورد را باید از طریق html&css هندل کنم یا از طریق وردپرس و کدهای php پلاگین یا هم اینکه از طریق تنظیمات دیتابیس و جدول؟کدام ؟

در تصویر دیتابیس میبینید خالی رکورد کرده و فقط ID رو که اتومات تولید میشود هست(48 توجه کنید)

5635-image_2022-04-17_112814708.png

<در تصویر ویرایش آیتم میبینید وقتی فیلدها خالی هستن و روی ذخیره سازی کلیک میشود اطلاعات خالی رو هم ثبت میکند که این خیلی بدِ>

648b-image_2022-04-17_123020837.pngچگونه کاربر بعد از ثبت رکورد به صفحه نمایش یا محل نمایش اطلاعات که درنظر گرفتیم هدایت بشود؟ریدایرکت شود؟ من از wp_redirect استفاده میکنم اما ارور دارم و کار نمیکند!!!

کد منو اصلی پلاگین(محل نمایش آیتم‌های جدول sample و گزینه‌های ویرایش و حذف)

add_action('admin_menu','wp_apis_register_menu');
//add menu page & submenu to page admin******************************************
function wp_apis_register_menu(){
    add_menu_page(
        'پلاگین سفارشی',
        'پلاگین سفارشی',
        'manage_options',
        'wp_apis_admin',
        'wp_apis_main_menu_handler'    //name function for main menu to admin page***********
    );
    add_submenu_page(
        'wp_apis_admin',
        'کاربران',
        'کاربران',
        'manage_options',
        'wp_apis_users',
        'wp_apis_users_page'      //name function for submenu in menu the plugin***********
    );
    
 
    add_submenu_page(
        'wp_apis_admin',
        'تنظیمات',
        'تنظیمات',
        'manage_options',
        'wp_apis',
        'wp_apis_general_page'          //name function submenu 2*************************************
    );
    
}
//function for add main menu in dashboard admin wordpress**************************
function wp_apis_main_menu_handler(){
    global $wpdb;
    $action = $_GET['action'];
//Condition for ***delete ***item from database**********************
    if($action == "delete")
    {
        $item = intval($_GET['item']);
        if($item > 0)
        {
            $wpdb->delete($wpdb->prefix.'sample',['ID'=> $item]);
        }
    }
//Condition for****** adding *****item from database**********************
    if($action == "add")
    {
        if(isset($_POST['saveData'])){
            $wpdb->insert($wpdb->prefix . 'sample', [
                'fname' => $_POST['firstName'],
                'lname' => $_POST['lastName'],
                'mobile' => $_POST['num-mobile'],
            ] );
        }
        include WP_APIS_TPL.'tpl-admin/menu/add.php';
    }
//Condition for ******** update ******** item from database**********************
    if($action == "update")
    {
        $item = intval($_GET['item']);
        if($item > 0)
        {
            if(isset($_POST['updateData']))
            {
                $wpdb->update($wpdb->prefix . 'sample', 
                [
                    'fname' => $_POST['firstName'],
                    'lname' => $_POST['lastName'],
                    'mobile' => $_POST['num-mobile'],
                ] ,
                ['ID'=>$item]);
                
            }
        }
/*variable $show_sample for use in  **** update.php ***** &
get ID and Stores its value in this variable-> $item   ********************************* */
        $show_sample = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}sample WHERE ID=$item");
        include WP_APIS_TPL.'/tpl-admin/menu/update.php';
        
    }
    else
    {
        $samples = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}sample");
        include WP_APIS_TPL.'tpl-admin/menu/tpl-admin-menu.php';
    }
}
//function for submenu 2**********************
function wp_apis_general_page(){
    if(isset($_POST['saveSettings']))
    {
        //$is_plugin_active = isset($_POST['is_plugin_active']) ? 1 : 0;
        //add_option('wp_apis_is_active',$is_plugin_active);
        
        if(isset($_POST['is_plugin_active'])){
            update_option('wp_apis_is_active',1);
        }
        else{
            delete_option('wp_apis_is_active');
        }
        
   }
   $current_plugin_status = get_option('wp_apis_is_active',0);
    //var_dump($current_plugin_status);
    include WP_APIS_TPL.'tpl-admin/menu/general.php';
}
function wp_apis_users_page()
{
    global $wpdb;
    $users=$wpdb->get_results("SELECT ID,user_email,display_name FROM {$wpdb->users}");
    include WP_APIS_TPL.'tpl-admin/menu/users-vip.php';
    
}


centurion mars ۲۸ فروردین ۱۴۰۱، ۰۷:۲۹

سلام بهتره پروژه تون رو بارگذاری کنید

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

کد‌های مربوط به فیلد‌های ویرایش(که در فایل با نام update قرار گرفتن)

html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>title>
    <style>
        input[type=text] {
            border: 0 solid red;
            border-radius: 50px;
            box-shadow: inset 2px 2px 5px #BABECC, inset -5px -5px 10px #FFF;
        }
        .wp-core-ui .button{
            border: 0 solid red;
            border-radius: 50px;
            box-shadow: -5px -5px 20px #FFF, 5px 5px 20px #BABECC;
        }
    style>
head>
<body>
    <div class="wrap">
        <h1>ویرایش آیتمh1>
        <form method="post">
            <table class="form-table">
             foreach ($show_sample as $show_sample) : ?>
                <tr valign="top">
                <th scope="row">نامth>
                <td><input type="text" name="firstName" class="inshadow" value=" echo $show_sample->fname ?>" />td>
            tr>
            <tr valign="top">
                <th scope="row">نام خانوادگیth>
                <td><input type="text" name="lastName" class="inshadow" value=" echo $show_sample->lname ?>"/>td>
            tr>
            <tr valign="top">
                <th scope="row">شماره همراهth>
                <td><input type="text" name="num-mobile" class="inshadow" value=" echo $show_sample->mobile ?>"/>td>
            tr>
            <tr valign="top">
                <th scope="row">th>
                <td><input type="submit" name="updateData" class="button" value="ذخیره سازی " />
                <br>
                <br>
                 if (isset($_POST['updateData'])) {
                    echo "داده با موفقیت به روز رسانی شد!";
                } ?>
            td>
            tr>
             endforeach ?>
            
            table>
        form>
    div>
body>
html>



centurion mars ۲۸ فروردین ۱۴۰۱، ۱۴:۱۵

کد‌های بخش دوم رو هم فرستادم

centurion mars ۲۹ فروردین ۱۴۰۱، ۱۸:۰۵

دوست عزیز همونجور که قبلا عرض کردم ، پروژه رو کلا آپلود کنید تا بررسی بشه.

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

سلام ببخشید من چند روزی با بخش ارسال سوال و پاسخ مشکل دارم،گزینه ارسال کار نمیکند برای من گاهی اوقات، (در حال ارسال میماند)

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

من تو گیت لب پروژه رو دارم از اون طریق میتونید بررسی کنید؟


centurion mars ۳۰ فروردین ۱۴۰۱، ۰۹:۴۷
centurion mars ۳۰ فروردین ۱۴۰۱، ۰۹:۴۹

ممنون. بررسی میشه.

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

سلام

چند تا مورد دیگه هم میخواستم بگم،

  • گزینه چک باکس برای رکورد‌های جدول اضافه کنیم ،چگونه برای پلاگین استفاده کنیم ؟
  • قابلیت order by رو به لیست هایی که نمایش میدهد رو باید از دیتا بیس اضافه کنیم؟یا در کدهای نمایش منو آورده میشود؟
  • آیا از دستور switch میشود مانند if تو در تو استفاده کرد؟؟ یه نمونه از کد نحوه ی استفادش رو میشود بذارید؟!!!
  • اون شرط هایی که گفتم برای ذخیره کردن اطلاعات چگونه بزاریم!اونا رو باید از طریق سریالایز( srialisation ) کردن مقدار‌ها انجام بدهیم آیا؟و چجوری هست سریالیزه کردن؟

ممنون میشم از پاسخ بدهید

centurion mars ۰۱ اردیبهشت ۱۴۰۱، ۱۱:۵۴

سلام دوست عزیز.

برای من چیزی از پروژه تون رو نمایش نداد.

1893-image.png

احمد اسماعیلی ۰۱ اردیبهشت ۱۴۰۱، ۱۳:۵۷

تنظیمات نمایش رو only member بود ،

الان همش رو آزاد گذاشتم بررسی کنید ببینید درست شد آیا

centurion mars ۰۱ اردیبهشت ۱۴۰۱، ۱۴:۲۱

الان دسترسی درست شد. بررسی میکنم و بهتون اطلاع میدم.

احمد اسماعیلی ۰۱ اردیبهشت ۱۴۰۱، ۱۹:۱۹