سلام دوستان
وقت بخیر
من یک لینک دارم که در پائین متن قرارش دادم و تقاضا دارم از اساتید اگر مقدوره راهنمایی بفرمایند. این لینک یک سایت asp هست و میخوام در wordpress پیاده سازیش کنم اما نه پلاگینی پیدا کردم نه سورس کد درست حسابی. در واقع میخوام یک سرچ از یک table از database وردپرس انجام بشه و در نهایت در یک جدول نشون بده. در حد سواد کمم خیلی سرچ کردم ولی موفق نشدم . ممنون میشم اگر مقدوره دوستان کمکی بکنند.
یعنی میخوام نوع عملکرد لینک بالارو توی wordpress در اجرا کنم.
با تشکر
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 یکمی فرق داره اگه بخاید آجاکس هم بزنید که باید از اجاکس استفاده کنید
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 یکمی فرق داره اگه بخاید آجاکس هم بزنید که باید از اجاکس استفاده کنید
ممنون از وقتی که گذاشتین.
من از یک 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>کد نمایندگی ';
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();
}
سلام ارادت حتما از طریق خود $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$
اضافه شد به تابع
آقا نمیدونم چطور تشکر کنم از شما. واقعاً ازینکه علمتون رو به اشتراک گذاشتین سپاس گزارم.
فقط یک چیز رو نفهمیدم، چطور در این کد که ارتباط امنی هم براش در نظر گرفتین ارتباط با 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 --------------------------------------
سلام ارادت کدی که فرستادید رو بررسی کردم دقیقا متوجه شدم چی میخاید ی پلاگین
لازم دارید تا بیاد ی صفحه با شورت کد بسازه و وقتی کاربر داده هارو وارد میکنه اطلاعات رو از دیتابیس بگیره و نمایش بده
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟