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

سلام و عرض ادب و احترام، من این کلاس رو نوشتم ولی اطلاعات در دیتابیس ذخیره نمیشه و 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)
    {
        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
        ];
        $formats = ['%s', '%s', '%s' , '%s'];
        $res = $this->db->insert($this->userTable, $data,$formats);
        if ($res){
            $this->success = true;
            $this->msg = "فیلد‌ها پر هستند، مرسی";
        } else {
            $this->error = true;
            $this->msg = "مشکلی در ذخیره اطلاعات در دیتابیس به وجود آمده است.";
        }
    }
}

مشکل دقیقا اینجاست که شرط false میشه:

$res = $this->db->insert($this->userTable, $data,$formats);
        if ($res){
            $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>

ممنون میشم راهنمائیم کنید.

حتی پروژه پیوست شده در جلسه سوم این پروژه رو هم دانلود کردم، و جدل مذکور رو در دیتابیس ایجاد کردم بازم این مشکل رو داشتم

فکر کنم $wpdb یه مشکلی داشته باشه، البته ازش Var_dump میگیرم اطلاعات درستی رو نشون میده

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

سلام

شما احتمالا اینجا اشتباه دارید

  $this->db->prefix . 'sa_users';//ERROR
 $this->userTable =  'sa_users';//correct

شما نام جدول تون در دیتابیس احتمالا بدون پسوند است مثلا

sa_users در حالی که شما در کد با prefix دارید جدول صدا می‌زنید برای همین این عملیات انجام نمی‌شه .



بهترین پاسخ
رضا ۰۱ تیر ۱۴۰۲، ۱۲:۳۵