رفتن به مطلب

دو مشکل در طراحی یه افزونه


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

سلام بر دوستان و ستون های انجمن

 

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

مود اول یه ارورلاگ هست مربوط به یکی از تیبل های پلاگین که همون ارور Error Code: 1062. Duplicate entry '1' for key 'PRIMARY' هست در حالی که من قبلش چک میکنم که وجود نداشته باشه همچین ردیفی در جدول و بعد insert میکنم.

استرکچر تیبل به این شکل هست:

table.jpg.975f607b291b1534c3c02621753b1bda.jpg

خوب همون طور که مشخصه ارور مربوط به ستون hash هست و ستون id یونیک و دو ستون status و time صرفا index هستند و یونیک نیستند.

کدی که باهاش چک میکنم که همچین رکوردی هست و اگر نبود insert میکنم اینه:

foreach($post_link as $link) :
	if($wpdb->get_var($wpdb->prepare("SELECT id FROM $table_name WHERE hash = %s", hash('sha256', $link))) === null)
		$wpdb->insert($table_name, array('hash' => hash('sha256', $link), 'link' => $link, 'status' => 'Q', 'source_name' => $source_name, 'time' => date("Y-m-d H:i:s")), array('%s', '%s', '%s', '%s', '%s'));
endforeach;

خوب میریم سراغ موردی بعدی مورد بعدی هم یه ارورلاگه که مطمئنم مربوط به افزونه ام میشه ولی به یکی از فایل اصلی وردپرس اشاره میکنه ارورلاگ اینه:

Warning: Invalid argument supplied for foreach() in /www/htdocs/XXXXXXX/wordpress/wp-includes/class-wp-list-util.php on line 153

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

توابعی که از وردپرس استفاده کردم توی پلاگینم اینا هستند:

get_option();
wp_die();
apply_filters();
register_activation_hook();
$wpdb::get_var();
$wpdb::get_charset_collate();
dbDelta();
wp_insert_category();
add_action();
add_menu_page();
get_current_screen();
update_option();
add_option();
wp_remote_get();
wp_remote_retrieve_response_code();
wp_nonce_field();
$wpdb::insert();
wp_insert_post();
wp_set_post_terms();
wp_update_post();
wp_get_post_terms();
$wpdb::get_row();
$wpdb::update();

تشکر از راهنماییتون.

یا حق

ویرایش شده توسط mehran-b
لینک به ارسال

سلام

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

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

لینک به ارسال
در 1 ساعت قبل، Morteza گفته است :

سلام

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

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

اینم یه نما از تیبل.

table.jpg.32a94d1aa18fdd86e799e4061ffbbcb8.jpg

link رو base64_encode اش میکنم میریزم توی دیتابیس و hash هم الگوریتمش SHA-256 هست.

لینک به ارسال
  • 2 هفته بعد...

خطای اول شما مربوط به فیلد hash نیست ممکنه مربوط به status یا id باشه مقدار فیلد id ور (11)INT قرار بدین ببینین باز هم این خطا میاد؟

خطا در مورد وارد کردن مقدار 1 در یک فیلد که قبلا مقدار 1 درونش وجود داره صحبت میکنه

در مورد خطای دوم باید کد foreach رو قرار بدید چیزهایی که باید در نظر داشته باشید این هست که مقداری که وارد foreach میشه حتما ارایه یا ابجکت باشه و اینکه چک کنین حتما مقدار داشته باشه و نول نباشه

مثلا اگه مقدار شما اسمش values$ باشه حتما قبل حلقه چک کنین خالی نباشه

if(!empty($values)){
    foreach($values as $value){
        //کدهای حلقه
    }
}

 

لینک به ارسال

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

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

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

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

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

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

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

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

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