سلام وقتتون بخیر،
من تا اینجای کار جلو اومدم ولی متاسفانه نمیدونم کد های 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>
توی کدهاتون ندیدم که برای دریافت یک آیتم کدی نوشته باشید. با این حال می تونید از متد get_row شی wpdb برای دریافت یک رکورد استفاده کنید و دیگه نیازی هم به حلقه نداره براش نمایش دادنش. برای نمایش بخش های مختلف پیشنهاد می کنم صفحات مختلفی ایجاد کنید.
سلام خدمت شما. لطفا هر فایل رو در یک بلاک ارسال کنید تا بررسی بهتر انجام بشه. داخل فایل 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';
}}
خب به نظرم بهتره اگر کدهای 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 رو با هم توی این تمرین داشت .