🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ Mohamad mahdi Noori
مشکل در حل تمرین
کیوان علی محمدی حل شده توسط کیوان علی محمدی

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

من تا اینجای کار جلو اومدم ولی متاسفانه نمیدونم کد‌های html اشو چطور باید بنویسم . ممنون میشم اگر  کمک کنید و اگر اشکالی در مراحلم هم هست بهم بگید . 

سپاس

 

 

<div class="wrap">
<h1> تغییر داده‌ها </h1>
<form>
    <form action="/action_page.php">
  <label for="fname">First name:</label><br>
  <input type="text" id="fname" name="fname" value=" <?php echo $samples->FirstName ;?> " ><br>
</form>
</div>

سلام خدمت شما. لطفا هر فایل رو در یک بلاک ارسال کنید تا بررسی بهتر انجام بشه. داخل فایل zip یا rar ارسال نکنید. ممنونم

کیوان علی محمدی ۰۶ خرداد ۱۴۰۰، ۱۶:۱۷
<?php
add_action('admin_menu','wp_apis_register_menus');
function wp_apis_register_menus (){
    add_menu_page(
        'پلاگین سفارشی',
        'پلاگین سفارشی',
    'manage_options',
    'wp_apis_admin',
    'wp_apis_main_menu_handler');
    add_submenu_page( 'wp_apis_admin','تنظیمات','تنظیمات','manage_options','wp_apis_general','wp_apis_general_page');
}
function wp_apis_general_page (){
    if (isset($_POST['saveSettings'])){ 
        $is_plugin_active = isset($_POST['is_plugin_active']) ? 1 : 0 ;
     update_option ('wp_apis_is_active', $is_plugin_active);
    }
    $current_plugin_status = get_option ('wp_apis_is_active');
    include WP_APIS_TPL.'admin/menus/general.php';
}
function wp_apis_main_menu_handler (){
   global $wpdb;
   $action = $_GET['action'];
   if($action == "delete")
   {
        $item = intval($_GET['item']);
    if($item > 0)  
    {
        $wpdb->delete($wpdb->prefix.'sample', ['ID'=> $item]);
    }
   } elseif ($action == "add") {
if (isset($_POST['saveData'])){
    $wpdb->insert($wpdb->prefix . 'sample',[
        'FirstName'=>$_POST['FirstName'],
        'LastName'=>$_POST['LastName'],
        'mobile'=>$_POST['mobile']
    ]);
}
    include WP_APIS_TPL .'admin/menus/add.php';
}elseif($action == "update") {
     if (isset($_POST['updateData'])){}
include WP_APIS_TPL .'admin/menus/update.php';
$samples = $wpdb->get_results ("SELECT * FROM {$wpdb->prefix}sample");
   }else{
    $samples = $wpdb->get_results ("SELECT * FROM {$wpdb->prefix}sample");
    include WP_APIS_TPL .'admin/menus/main.php';
   }}
Mohamad mahdi Noori ۰۶ خرداد ۱۴۰۰، ۱۶:۱۹

خب به نظرم بهتره اگر کدهای HTML جداگانه ای دارید حتما در فایل‌های جدا و صفحات جدا قرارشون بدید. اینکه کدهای html داخل فایل‌های جدا قرار بگیرن خیلی خوبه اما نباید در داخل یک تابع چندین و چند تا به صورت if‌های تودرتو نشون داده بشه مگر اینکه فوقش مثلا لیست داشته باشیم و یک فرم.

کیوان علی محمدی ۰۶ خرداد ۱۴۰۰، ۱۶:۳۱

خیلی ممنون از زحماتتون ، 

من مشکل html  رو تا حدود  حل کردم براتون ارسالش می‌کنم ، در ضمن همونطور که فرمودید html  در فایل جداگانه ای قرار داره . ولی نمیدونم چطور اطلاعات دیتابیس رو بدون استفاده از دستور foreach فراخوانی کنم که فقط اطلاعات همون آِی دی ای که خواستم رو نشون بده .

 

<div class="wrap">
<h1> تغییر داده‌ها </h1>
<Form method ="post">
    <table class = "form-table">
<tr valign = "top">
<?php foreach($samples as $sample):?>
<th scope = "row">نام </th>
<td>
 <input type = "text" name = "FirstName" value = " <?php echo $sample->FirstName ;?>"> 
 <input type = "submit" class = "button" name = "updateData" value = "تغییر داده"/> </td>
</tr>
<?php endforeach; ?>
</form>
</div>

فقط یه موضوع دیگه : اگر نباید از if‌های تو در تو استفاده کرد پس چطور میشه امکانات add , update و delete  رو با هم توی این تمرین داشت .

Mohamad mahdi Noori ۰۶ خرداد ۱۴۰۰، ۱۶:۳۸

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

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