سلام و عرض ادب
پوزش میخوام من قبلا با این موضوع تیکتی ارسال کرده بودم که پاسخ دادید، ولی پاسخ درست نبود و من هم اشتباها دستم خورد به دکمه بهترین پاسخ و تیکت بسته شد، و مجبورا مجددا اقدام به ثبت تیکت میکنم
https://7learn.com/app/topics/16994
من این کلاس رو نوشتم ولی اطلاعات در دیتابیس ذخیره نمیشه و RES در شرط false میشه
class User
{
private object $db;
private string $userTable;
public string $msg='';
public bool $error = false;
public bool $success = false;
public function __construct()
{
global $wpdb;
$this->db = $wpdb;
$this->userTable = $this->db->prefix . 'sa_users';
}
public function save(string $name, string $family, string $tell, string $bio)
{
echo ""
;
var_dump($this->db);
echo "
";
foreach ($_POST as $item){
if (empty($item)){
$this->error = true;
$this->msg = "پر کردن تمامی فیلدها الزامی میباشد.";
return false;
}
}
$name = sanitize_text_field($name);
$family = sanitize_text_field($family);
$tell = sanitize_text_field($tell);
$bio = sanitize_textarea_field($bio);
$data = ['name'=>$name,'family'=>$family,'tell'=>$tell,'bio'=>$bio];
$format = ['%s','%s','%s','%s'];
$stmt = $this->db->insert($this->userTable, $data, $format);
if($stmt){
$this->success = true;
$this->msg = 'ثبت نام شما با موفقیت صورت گرفت';
}else{
$this->error = true;
$this->msg = 'خطایی در ثبت نام شما صورت گرفته است!!!';
}
}
}
مشکل دقیقا اینجاست که شرط false میشه:
$name = sanitize_text_field($name);
$family = sanitize_text_field($family);
$tell = sanitize_text_field($tell);
$bio = sanitize_textarea_field($bio);
$data = ['name'=>$name,'family'=>$family,'tell'=>$tell,'bio'=>$bio];
$format = ['%s','%s','%s','%s'];
$stmt = $this->db->insert($this->userTable, $data, $format);
if($stmt){
$this->success = true;
$this->msg = 'ثبت نام شما با موفقیت صورت گرفت';
}else{
$this->error = true;
$this->msg = 'خطایی در ثبت نام شما صورت گرفته است!!!';
}
اینم محتویات فایل index.php
html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Documenttitle>
head>
<body>
$user = new User();
if(isset($_POST['btn-submit']) && $_SERVER['REQUEST_METHOD']=="POST"){
$user->save($_POST['name'], $_POST['family'] , $_POST['tell'], $_POST['bio']);
}
?>
if ($user->error): ?>
<p style="background: orangered"> echo $user->msg; ?>p>
endif; ?>
if ($user->success): ?>
<p style="background: lightgreen"> echo $user->msg; ?>p>
endif; ?>
<form action="#" method="POST">
<label for="name">نامlabel>
<input type="text" name="name" id="name" value="">
<br>
<label for="family">نام خانوادگیlabel>
<input type="text" name="family" id="family" value="">
<br>
<label for="tell">تلفنlabel>
<input type="text" name="tell" id="tell" value="">
<br>
<label for="bio">بیوگرافیlabel>
<textarea type="text" name="bio" id="bio" value="">textarea>
<br>
<input type="submit" name="btn-submit" value="ثبت نام">
form>
body>
html>
نکته: مشکل از prefix دیتابیس نیست، اون درسته جدول من نامش wp_sa_users هست