رفتن به مطلب

مقایسه مقدار فرم با جدول پایگاه داده


پست های پیشنهاد شده

سلام.

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

1.اگه ممکنه تو نوشتن کد کمکم کنید.

2.این کد و باید کجای قالب استفاده کنم؟

ممنون

لینک به ارسال

از هر فرم سازی استفاده کردین باید api  ش رو توی سایتش مطالعه کنید. معمولا با استفاده از تابع do_action یا apply_filters روی مقادیر ثبت شده فیلتر می گذارن که باید توی داکیومنت هاشون ببینید دقیقا اسمش چیه و برای هوک زدن بهشون باید از add_action یا add_filter استفاده کنید.

کدتون هم هرجایی میتونید بزارید مثلا توی فانکشن پوسته یا اگر یه افزونه برا خودتون میسازید توی فایل اصلیش.

برای استخراج دیتا از تیبل خودتون هم باید از global $wpdb استفاده کنید.

موفق باشید.

لینک به ارسال
register_activation_hook( __FILE__, 'endo_create_custom_table' );

function endo_create_custom_table() {

	global $wpdb;

	$table_name = $wpdb->prefix . "custom_table";

	$sql = "CREATE TABLE $table_name(
		id mediumint(9) NOT NULL AUTO_INCREMENT,
		personnel code mediumint(1) DEFAULT 0,
		UNIQUE KEY id(id)
		) COLLATE utf8_general_ci;";

	require_once(ABSPATH . '/wp-admin/includes/upgrade.php');
	
	dbDelta($sql);

}
add_action('gform_after_submission', 'endo_add_entry_to_db', 10, 2);
function endo_add_entry_to_db($entry, $form) {

	  // uncomment to see the entry object 
	  // echo '<pre>';
	  // var_dump($entry);
	  // echo '</pre>';

  	$source = $entry['source_url'];
  
	$personnel-code = $entry[3];


  	global $wpdb;
  
  	
	$result = $wpdb->get_results(
	    " select * from $wpdb->table_name");
	    foreach($result as $index => $value){
		if($value == $personnel-code){
		     
		}
		else echo 'error';
	    }
	);

}

من این کد نوشتم ولی نمیدونم درسته یا نه .ممنون میشم اگه غلطه درستشو بهم بگید...اسم افزونه فرمم gravity form هستش.

form.thumb.png.fa2650e2fe8a685397da109e011fadf8.png

این هم عکس فرمم.

لینک به ارسال

درود مجدد 

 

از اکشن خوبی استفاده نکردید این اکشن بعد از اتمام کارها اجرا میشه باید از اکشن gform_pre_submission استفاده کنید.

اگر اسم تیبلتون custom_table باشه یه چیزی توی این مایه ها باید بشه.

add_action('gform_pre_submission', 'endo_add_entry_to_db');
function endo_add_entry_to_db($form) {
	
	$personnelCode = $_POST['input_10']; // اینجا فرض شده نام فیلدی که داخلش کد پرسنلی وارد میشه input_10 باشه
	
	if(!is_numeric($personnelCode)) {
		echo "کد پرسنلی صرفا باید شامل اعداد باشد";
		exit;
	}

  	global $wpdb;
	
	$table_name = $wpdb->prefix . "custom_table";
	
	$data = $wpdb->get_row($wpdb->prepare("SELECT 'personnel code' FROM $table_name WHERE 'personnel code' = %d", (int) $personnelCode));
	
	if($data === null) {
		echo "کد پرسنلی مورد نظر یافت نشد";
		exit;
	}

}

 

لینک به ارسال
در 7 دقیقه قبل، mehran-b گفته است :

درود مجدد 

 

از اکشن خوبی استفاده نکردید این اکشن بعد از اتمام کارها اجرا میشه باید از اکشن gform_pre_submission استفاده کنید.

اگر اسم تیبلتون custom_table باشه یه چیزی توی این مایه ها باید بشه.


add_action('gform_pre_submission', 'endo_add_entry_to_db');
function endo_add_entry_to_db($form) {
	
	$personnelCode = $_POST['input_10']; // اینجا فرض شده نام فیلدی که داخلش کد پرسنلی وارد میشه input_10 باشه
	
	if(!is_numeric($personnelCode)) {
		echo "کد پرسنلی صرفا باید شامل اعداد باشد";
		exit;
	}

  	global $wpdb;
	
	$table_name = $wpdb->prefix . "custom_table";
	
	$data = $wpdb->get_row($wpdb->prepare("SELECT 'personnel code' FROM $table_name WHERE 'personnel code' = %d", (int) $personnelCode));
	
	if($data === null) {
		echo "کد پرسنلی مورد نظر یافت نشد";
		exit;
	}

}

 

درود بر شما..

اسم تیبلم custom table نیست... 

لینک به ارسال
در در 11/3/2017 at 10:40، mehran-b گفته است :

درود مجدد 

 

از اکشن خوبی استفاده نکردید این اکشن بعد از اتمام کارها اجرا میشه باید از اکشن gform_pre_submission استفاده کنید.

اگر اسم تیبلتون custom_table باشه یه چیزی توی این مایه ها باید بشه.


add_action('gform_pre_submission', 'endo_add_entry_to_db');
function endo_add_entry_to_db($form) {
	
	$personnelCode = $_POST['input_10']; // اینجا فرض شده نام فیلدی که داخلش کد پرسنلی وارد میشه input_10 باشه
	
	if(!is_numeric($personnelCode)) {
		echo "کد پرسنلی صرفا باید شامل اعداد باشد";
		exit;
	}

  	global $wpdb;
	
	$table_name = $wpdb->prefix . "custom_table";
	
	$data = $wpdb->get_row($wpdb->prepare("SELECT 'personnel code' FROM $table_name WHERE 'personnel code' = %d", (int) $personnelCode));
	
	if($data === null) {
		echo "کد پرسنلی مورد نظر یافت نشد";
		exit;
	}

}

 

با عرض معذرت

من این کد تو فایل function.php که میذارم اصلا جواب نمیگیرم...

به جای prefixباید prefix  دیتابیسمو بذارم؟

 

لینک به ارسال

سلام و درود

 

نقل قول

من این کد تو فایل function.php که میذارم اصلا جواب نمیگیرم...

آره احتمالش هم هست جواب نده.

اگر مایلید خود بنده هم به بررسی بکنم براتون از خصوصی در ارتباط باشید.

نقل قول

به جای prefixباید prefix  دیتابیسمو بذارم؟

خیر.

 

موفق باشید

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...