buzz 65 ارسال شده در بهمن 93 گزارش بازنشر ارسال شده در بهمن 93 سلاممن کدی رو نوشتم که میاد اطلاعات رو در ارایه میریزه و بعد با متغیر $wpdb-> در دیتابیس وردپرس ذخیره می کنه.foreach($table_rows as $tr) { // foreach row $row = $tr->childNodes; if($row->item(0)->tagName != 'tblhead') { // avoid headers $data[] = array( $trip ['Name' ]= trim($row->item(0)->nodeValue), $trip['LivePrice'] = trim($row->item(2)->nodeValue), $trip ['Changing']= trim($row->item(4)->nodeValue), $trip ['Lowest']= trim($row->item(6)->nodeValue), $trip['Topest']= trim($row->item(8)->nodeValue), $trip['Time']= trim($row->item(10)->nodeValue), ); } }و بعد با متغیر $wpdb-> در دیتابیس وردپرس ذخیره می کنه.foreach($table_rows as $tr) { // foreach row $row = $tr->childNodes; if($row->item(0)->tagName != 'tblhead') { // avoid headers $wpdb->insert( $wpdb->prefix . 'fafa', array( 'title' => trim($row->item(0)->nodeValue) , 'liveprice' => trim($row->item(2)->nodeValue) , 'changing' => trim($row->item(4)->nodeValue) , 'lowest' => trim($row->item(6)->nodeValue) , 'topest' => trim($row->item(8)->nodeValue) , 'time' => trim($row->item(10)->nodeValue) ), array( '%s', '%s', '%s', '%s', '%s', '%s' ) ); $wpdb->update( $wpdb->prefix . 'fafa', array( 'title' => trim($row->item(0)->nodeValue) , 'liveprice' => trim($row->item(2)->nodeValue) , 'changing' => trim($row->item(4)->nodeValue) , 'lowest' => trim($row->item(6)->nodeValue) , 'topest' => trim($row->item(8)->nodeValue) , 'time' => trim($row->item(10)->nodeValue) ), array( '%s', '%s', '%s', '%s', '%s', '%s' ) ); } }من می خوام ، بعد از اینکه داده ها رو ذخیره کرد، بار بعدی که ذخیره میشه مقادیر جدید جایگزین مقادیر قبلی بشه، نه اینکه دوباره مقادیر جدید بهشون اضافه بشه. یا در کل جدول موردنظر بعد insert ، آپدیت بشه.اگه تو کد بالا نگاه کنید بعد از اینکه مقادیر insert شدن دوباره کد نوشتم که اپدیت بشن ولی این مورد اشتباهه و باید تو حلقه if قرار بگیره که مثلا اگه تو جدول داده ای نبود داده ذخیره بشه و اگه هم بود ، داده های جدید جایگزین قبلی بشن. نقل قول لینک به ارسال
Morteza 34190 ارسال شده در بهمن 93 گزارش بازنشر ارسال شده در بهمن 93 سلامشما در آرایه و بعد در دیتابیس وارد می کنیناگر بخواین همین رویه رو داشته باشین کل اطلاعات هر سری اپدیت میشن.مگه اینکه بجای آرایه هر کدوم رو جدا جدا ذخیره کنین. 1 نقل قول لینک به ارسال
buzz 65 ارسال شده در بهمن 93 مالک گزارش بازنشر ارسال شده در بهمن 93 کد ها رو بصورت زیر تغییر دادمبا استفاده از دستورON DUPLICATE KEY UPDATE اما باز هم وقتی اجرا می کنم داده های جدید رو اضافه می کنه و جایگزین نمیشه. لطفا مشکل رو حل کنید خیلی نیاز دارم $wpdb->insert( $wpdb->prefix . 'fafa', array( 'title' => trim($row->item(0)->nodeValue) , 'liveprice' => trim($row->item(2)->nodeValue) , 'changing' => trim($row->item(4)->nodeValue) , 'lowest' => trim($row->item(6)->nodeValue) , 'topest' => trim($row->item(8)->nodeValue) , 'time' => trim($row->item(10)->nodeValue) ), array( '%s', '%s', '%s', '%s', '%s', '%s') )."ON DUPLICATE KEY UPDATE title = VALUES('title' => trim($row->item(0)->nodeValue) ) , liveprice = VALUES('liveprice' => trim($row->item(2)->nodeValue) ) , changing = VALUES('changing' => trim($row->item(4)->nodeValue) ) , lowest = VALUES('lowest' => trim($row->item(6)->nodeValue) ) , topest = VALUES('topest' => trim($row->item(8)->nodeValue) ) , time = VALUES('time' => trim($row->item(10)->nodeValue) )"; نقل قول لینک به ارسال
فرحان 997 ارسال شده در اسفند 93 گزارش بازنشر ارسال شده در اسفند 93 سلام . خوب چرا اول حذف و بعد درج انجام نمیدید ؟ نقل قول لینک به ارسال
buzz 65 ارسال شده در اسفند 93 مالک گزارش بازنشر ارسال شده در اسفند 93 میشه نمونه کد رو بنویسید؟ نقل قول لینک به ارسال
buzz 65 ارسال شده در اسفند 93 مالک گزارش بازنشر ارسال شده در اسفند 93 (ویرایش شده) کد رو الان بصورت زیر تغییر دادم.اما باز هم عمل نمی کنه.در کد زیر ابتدا بررسی آپدیت می کنه و اگر مقداری نبود ذخیره می کنه در جدول.$query = $wpdb->prepare ("INSERT INTO ".$wpdb-prefix."coin_price (id, title, liveprice, changing, lowest,topest,time)VALUES (%d, %s, %s, %s,%s, %s, %s)ON DUPLICATE KEY UPDATE title = %s, liveprice = %s, changing = %s , lowest = %s, topest = %s, time = %s",1,trim($row->item(0)->nodeValue),trim($row->item(2)->nodeValue),trim($row->item(4)->nodeValue),trim($row->item(6)->nodeValue),trim($row->item(8)->nodeValue),trim($row->item(10)->nodeValue),); ویرایش شده اسفند 93 توسط buzz نقل قول لینک به ارسال
فرحان 997 ارسال شده در اسفند 93 گزارش بازنشر ارسال شده در اسفند 93 سلام. این آخری که نوشتید خطا داره باید 13 پارامتر ارسال کنید نه 7 تا. بهتره بزارید توی ارایه و دوبار فراخوانی کنید مقادیر رو. نوع ستون id هم فکر کنم باید چک کنید که روی حالت افزایش خودکار نباشه. یا کلا یه اسم دیگه براش بزارید که قاطی نکنیم. چون ظاهرا ای دی رو خودتون تنظیم می کنید فقط. 1 نقل قول لینک به ارسال
tazeh 625 ارسال شده در اسفند 93 گزارش بازنشر ارسال شده در اسفند 93 به نظرم این راه حلی بدی نباشهخوب اول رکورد ها رو حذف کنید بعد دوباره رکورد جدید وارد کنید.برای اینکار ابتدا کوئری زیر رو قبل insert قرار بدید // این کوئری تمام رکورد ها رو حذف می کنهglobal $wpdb;$delete = $wpdb->query("TRUNCATE TABLE `wp_table_name`");بعد هم کد خودتون$wpdb->insert( $wpdb->prefix . 'fafa', array( 'title' => trim($row->item(0)->nodeValue) , 'liveprice' => trim($row->item(2)->nodeValue) , 'changing' => trim($row->item(4)->nodeValue) , 'lowest' => trim($row->item(6)->nodeValue) , 'topest' => trim($row->item(8)->nodeValue) , 'time' => trim($row->item(10)->nodeValue) ), array( '%s', '%s', '%s', '%s', '%s', '%s')ولی دقت کنید. ابتدا باید یک بار مقادیر وارد بشن و بعد دوباره حذف بشه. چون الان اگه کد کوئری حذف رکورد اجرا بشه ، چون رکوردی در دیتابیس ذخیره نشده ، خطا می ده .و نکته دیگه اگه کد شما در حلقه foreach می خواید استفاده کنید باید کوئری حذف رو قبل حلقه بذارید. 1 نقل قول لینک به ارسال
فرحان 997 ارسال شده در اسفند 93 گزارش بازنشر ارسال شده در اسفند 93 نه این کار درستی نیست که یک تیبل رو فقط برای یک ردیف اختصاص بدن. ایشون احتمالا منظورش این بوده که یک ردیف رو می خواد حذف کنه و دوباره بنویسدش. وگرنه این که کل تیبل واسه همین یک ردیف داده باشه که میشه یه چیزی مثل این شکلکه > 1 نقل قول لینک به ارسال
buzz 65 ارسال شده در اسفند 93 مالک گزارش بازنشر ارسال شده در اسفند 93 این کدی که taze نوشت کار کرد و حرف شما هم درسته.خو اونجا که گفتید تو ارایه برزید مظورتون رو نفهمیدم کدوم رو برزیم ، لطفا کد رو بنویسید. نقل قول لینک به ارسال
فرحان 997 ارسال شده در اسفند 93 گزارش بازنشر ارسال شده در اسفند 93 کد رو که وقتشو ندارم حقیقت بنویسم اما منظورم همون 6 ، 7 تا پارامتری بود که به تابع prepare فرستادید. اونا رو باید دوبار بفرستید دیگه یکی برای حالت اول دستور اس کیو التون و یکی هم برای حالت دومش برای هر %s که مینویسید باید یه پارامتر بفرستید دیگه.کدی که tazeh نوشت براتون میاد تیبل رو به کلی ریست میکنه و مسلما کار میده ! اما شما نباید یک تیبل رو به کلی برای همین یک ردیف داده اختصاص بدید ( مطمئن نیستم ولی فکر میکنم کار درستش اینه که اگر همین یک ردیف داده هست توی تیبل دیگه ای اگه دارید یه چیزی مثل wp-option یک فیلد اضافه بکنید و همه ی مقادیرتون رو توی اون سریالیز کنید و ذخیره کنید )موفق باشید. 2 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .