میلاد
12 ماه پیش توسط میلاد مطرح شد
7 پاسخ

فرم جستجو از database برای wordpress

سلام دوستان
وقت بخیر
من یک لینک دارم که در پائین متن قرارش دادم و تقاضا دارم از اساتید اگر مقدوره راهنمایی بفرمایند. این لینک یک سایت asp هست و میخوام در wordpress پیاده سازیش کنم اما نه پلاگینی پیدا کردم نه سورس کد درست حسابی. در واقع میخوام یک سرچ از یک table از database وردپرس انجام بشه و در نهایت در یک جدول نشون بده. در حد سواد کمم خیلی سرچ کردم ولی موفق نشدم . ممنون میشم اگر مقدوره دوستان کمکی بکنند.

https://rena.ir/TmPriceList

یعنی میخوام نوع عملکرد لینک بالارو توی wordpress در اجرا کنم.

با تشکر


ثبت پرسش جدید
oss_vahid
تخصص : wp developer
@ossvahid 12 ماه پیش آپدیت شد
0
global $wpdb;
$table_name = $wpdb->prefix.'my_table_name';
$s = sanitize_text_field($_REQUEST["search_for"]);
$sql = "SELECT * FROM $table_name WHERE name LIKE '.$s.%'";
$results = $wpdb->get_results($sql);
var_dump($results);

سلام شیوه انجامش به این شکله ولی خب باید mysqli بلد باشید تا بتونید کویری بزنید خود وردپرس برای مدیریت دیتابیس از شی $wpdb استفاده میکنه که کار کردن باهاش کمی با دستور های اتصال php با mysqli یکمی فرق داره اگه بخاید آجاکس هم بزنید که باید از اجاکس استفاده کنید

Good luck


میلاد
تخصص : مدیر IT
@mildason 12 ماه پیش مطرح شد
oss_vahid
تخصص : wp developer
@ossvahid 12 ماه پیش آپدیت شد
0
global $wpdb;
$table_name = $wpdb->prefix.'my_table_name';
$s = sanitize_text_field($_REQUEST["search_for"]);
$sql = "SELECT * FROM $table_name WHERE name LIKE '.$s.%'";
$results = $wpdb->get_results($sql);
var_dump($results);

سلام شیوه انجامش به این شکله ولی خب باید mysqli بلد باشید تا بتونید کویری بزنید خود وردپرس برای مدیریت دیتابیس از شی $wpdb استفاده میکنه که کار کردن باهاش کمی با دستور های اتصال php با mysqli یکمی فرق داره اگه بخاید آجاکس هم بزنید که باید از اجاکس استفاده کنید

Good luck


میلاد
تخصص : مدیر IT
@mildason 12 ماه پیش مطرح شد
0

ممنون از وقتی که گذاشتین.
من از یک Function و shortcode استفاده کردم. در واقع تونستم یک فیلد از اطلاعات جدول دیتابیس رو در یک DropDown فراخوانی کنم. ولی نتونستم کل ردیف(row) مربوط به اون dropdown رو بعد از انتخاب در یک جدول نشون بدم.

add_shortcode('d2' , 'd2_shortcode_function');
function d2_shortcode_function(){
    ob_start(); 

    $servername = "localhost";
    $username = "pmosgcom_demo";
    $password = "Milad1365";
    $database = "pmosgcom_demo";

    $conn = mysqli_connect($servername, $username, $password, $database);
    //$mysql_set_charset("utf8", $conn);
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }

    $query = "SELECT * FROM dastmozd";
    $result = mysqli_query($conn, $query);

    if (mysqli_num_rows($result) > 0) {
        $categories = mysqli_fetch_all($result, MYSQLI_ASSOC);
    } else {
        $categories = [];
    }

    echo '<label>&#1705;&#1583; &#1606;&#1605;&#1575;&#1740;&#1606;&#1583;&#1711;&#1740; ';
    echo '<select name="category">';
    foreach ($categories as $category) {
        echo '<option value="' . $category['id'] . '">' . $category['code'] . '</option>';
    }
    echo '</select>';
    echo '</label>';
    ?>
<?php return ob_get_clean();
}

میلاد
تخصص : مدیر IT
@mildason 12 ماه پیش مطرح شد
0

بازم ممنون میشم بزرگواری بفرمائید راهنمایی بفرمائید.
ممنون میشم


oss_vahid
تخصص : wp developer
@ossvahid 12 ماه پیش آپدیت شد
0

سلام ارادت حتما از طریق خود $wpdb به دیتابیس وردپرس وصل بشید هرچند این کدهایی که فرستادید برای php هستش و به خوبی کار میکنه ولی اگه زمانی اطلاعات دیتابیس وردپرس تغییر کرد یا پریفیکس های جدواول وردپرس تغییر کرد کدی که نوشتید دیگه کار نمیکنه ولی $wpdb این مشکلات رو نداره

/**
 * 
 * 
 * getDataFromDB() get data from Wordpress Database
 * $table_name string Your Table Name 
 * vv params vv
 * column_name (string) Table column table to fetch data
 * search_for (string)
 *  is_array (bool) return array or object Default is False return Object
 */

function getDataFromDB($table_name, $column_name = null, $search_for = null,$is_array = false)
{
    global $wpdb;
    $table_name = $wpdb->prefix . $table_name;
    if (is_null($column_name)) {
        $sql = "SELECT * FROM $table_name";
    } else {
      // kill javascript script code and html tags
        $s = sanitize_text_field($search_for);
      // kill MYSQLI Attack
        $s = $wpdb->_real_escape($s);
        $sql = "SELECT * FROM $table_name WHERE $column_name LIKE '$s' ";
    }
    $data_type = $is_array ? ARRAY_N : OBJECT;
    $results = $wpdb->get_results($sql, $data_type);
    if(!empty($wpdb->last_error)) {
     die($wpdb->last_error);
    }
    return $results; 
}

print_r(getDataFromDB('comments','comment_author','vahid',true));

تابع بالا رو برات نوشتم فقط اسم جدول رو بهش بده کل داده هارو میگیره اگه اسم ستون بدی مقدارشم بدی که داده هایی که فقط بهشون نیاز داری رو میگیره پارامتر اخری هم که تعیین میکنه ابجکت باشه یا ارایه

اپدیت

برای جلوگیری از حملات sql injection یادم رفته بود wpdb->_real_escape$ اضافه شد به تابع


میلاد
تخصص : مدیر IT
@mildason 12 ماه پیش مطرح شد
0

آقا نمیدونم چطور تشکر کنم از شما. واقعاً ازینکه علمتون رو به اشتراک گذاشتین سپاس گزارم.
فقط یک چیز رو نفهمیدم، چطور در این کد که ارتباط امنی هم براش در نظر گرفتین ارتباط با Dropdown پیدا میکنه. واینکه فرمودین اسم جدول رو بهش بدم ولی دیدم فقط از متغیر ($) استفاده کردین و جایی برا ی دادن اسم جدول نبود داخل کدتون. احتمالا سواد من قد نمیده دیگه ببخشید.
البته اگر مقدور بود براتون توضیح بدین
سپاس بی نهایت از شما دوست گرامی و ارجمند

//-------------------  Fetch row of data table from dropdown list -------------------
add_shortcode('d3' , 'd3_shortcode_function');
/**
 * 
 * 
 * getDataFromDB() get data from Wordpress Database
 * $table_name string Your Table Name 
 * vv params vv
 * column_name (string) Table column table to fetch data
 * search_for (string)
 *  is_array (bool) return array or object Default is False return Object
 */

function d3($table_name, $column_name = null, $search_for = null,$is_array = false)
{
    global $wpdb;
    $table_name = $wpdb->prefix . $table_name;
    if (is_null($column_name)) {
        $sql = "SELECT * FROM $table_name";
    } else {
      // kill javascript script code and html tags
        $s = sanitize_text_field($search_for);
      // kill MYSQLI Attack
        $s = $wpdb->_real_escape($s);
        $sql = "SELECT * FROM $table_name WHERE $column_name LIKE '$s' ";
    }
    $data_type = $is_array ? ARRAY_N : OBJECT;
    $results = $wpdb->get_results($sql, $data_type);
    if(!empty($wpdb->last_error)) {
     die($wpdb->last_error);
    }
    return $results; 
}

print_r(getDataFromDB('comments','comment_author','vahid',true));
//----------------------------- END --------------------------------------

oss_vahid
تخصص : wp developer
@ossvahid 12 ماه پیش آپدیت شد
0

سلام ارادت کدی که فرستادید رو بررسی کردم دقیقا متوجه شدم چی میخاید ی پلاگین لازم دارید تا بیاد ی صفحه با شورت کد بسازه و وقتی کاربر داده هارو وارد میکنه اطلاعات رو از دیتابیس بگیره و نمایش بده


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام