🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ دانشجوی سون‌لرن
مشکل در insert اطلاعات در دیتابیس وردپرس
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۰۱ تیر ۱۴۰۲

سلام و عرض ادب

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

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 هست

سلام مجدد

مشکل حل شد، توی دیتابیس فیلد id رو auto increment نبود، در نتیجه در زمان ثبت دیتاتوی دیتابیس مشکل پیش می‌اومد.

با تشکر

سجاد آقایی ۰۱ تیر ۱۴۰۲، ۱۶:۲۴

موفق باشید.

محسن موحد ۰۱ تیر ۱۴۰۲، ۱۹:۵۷