buzz

ذخیره و اپدیت دیتابیس وردپرس با wpdb

11 پست در این موضوع قرار دارد

سلام

من کدی رو نوشتم که میاد اطلاعات رو در ارایه میریزه و بعد با متغیر $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 قرار بگیره که مثلا اگه تو جدول داده ای نبود داده ذخیره بشه و اگه هم بود ، داده های جدید جایگزین قبلی بشن

.

0

به اشتراک گذاری این پست


لینک به پست

سلام

شما در آرایه و بعد در دیتابیس وارد می کنین

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

مگه اینکه بجای آرایه هر کدوم رو جدا جدا ذخیره کنین.

1

به اشتراک گذاری این پست


لینک به پست

کد ها رو بصورت زیر تغییر دادم

با استفاده از دستور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) )";

0

به اشتراک گذاری این پست


لینک به پست

سلام . خوب چرا اول حذف و بعد درج انجام نمیدید ؟

0

به اشتراک گذاری این پست


لینک به پست

میشه نمونه کد رو بنویسید؟

0

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

کد رو الان بصورت زیر تغییر دادم.

اما باز هم عمل نمی کنه.

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


$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),

);

ویرایش شده در توسط buzz
0

به اشتراک گذاری این پست


لینک به پست

سلام. این آخری که نوشتید خطا داره باید 13 پارامتر ارسال کنید نه 7 تا. بهتره بزارید توی ارایه و دوبار فراخوانی کنید مقادیر رو. نوع ستون id هم فکر کنم باید چک کنید که روی حالت افزایش خودکار نباشه. یا کلا یه اسم دیگه براش بزارید که قاطی نکنیم. چون ظاهرا ای دی رو خودتون تنظیم می کنید فقط.

1

به اشتراک گذاری این پست


لینک به پست

به نظرم این راه حلی بدی نباشه

خوب اول رکورد ها رو حذف کنید بعد دوباره رکورد جدید وارد کنید.

برای اینکار ابتدا کوئری زیر رو قبل 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

به اشتراک گذاری این پست


لینک به پست

نه این کار درستی نیست که یک تیبل رو فقط برای یک ردیف اختصاص بدن. ایشون احتمالا منظورش این بوده که یک ردیف رو می خواد حذف کنه و دوباره بنویسدش. وگرنه این که کل تیبل واسه همین یک ردیف داده باشه که میشه یه چیزی مثل این شکلکه > :wacko:

1

به اشتراک گذاری این پست


لینک به پست

این کدی که taze نوشت کار کرد و حرف شما هم درسته.

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

0

به اشتراک گذاری این پست


لینک به پست

کد رو که وقتشو ندارم حقیقت بنویسم اما منظورم همون 6 ، 7 تا پارامتری بود که به تابع prepare فرستادید. اونا رو باید دوبار بفرستید دیگه یکی برای حالت اول دستور اس کیو التون و یکی هم برای حالت دومش برای هر %s که مینویسید باید یه پارامتر بفرستید دیگه.

کدی که tazeh نوشت براتون میاد تیبل رو به کلی ریست میکنه و مسلما کار میده ! اما شما نباید یک تیبل رو به کلی برای همین یک ردیف داده اختصاص بدید ( مطمئن نیستم ولی فکر میکنم کار درستش اینه که اگر همین یک ردیف داده هست توی تیبل دیگه ای اگه دارید یه چیزی مثل wp-option یک فیلد اضافه بکنید و همه ی مقادیرتون رو توی اون سریالیز کنید و ذخیره کنید )

موفق باشید.

2

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط behnamstar
      سلام و عرض ادب
      من یه سایت وردپرسی دارم که به تازگی تغییر دامنه روش انجام دادم که بعد ازینکار مشکل عجیبی اتفاق افتاده 
      من دامنه ی https://damane1.co m رو ریدایرکت کردم به https://damane2.co m الان اتفاقی که میفته دامنه 1 ریدایرکت میشه روی دامنه 2 
      ولی زیر دامنه ها ریدایرکت نمیشن 
      مثلا روی این لینک کلیک بشه (https://damane1.co m/linksite) باید این لینک باز شه (https://damane2.co m/linksite)
      ولی این لینکها جدا جدا باز میشن 
      فقط دامنه https://damane1.co m روی https://damane2.co m ریدایرکت میشه بقیه ی لینک ها همه جدا جدا باز میشن.
      ممنون میشم از دوستان کمک کنن 
      حتی به هاست پشتیبانی هم تیکت دادم ولی متوجه مشکل نشدن.
    • توسط Timecity.ir
      سلام دوستان خسته نباشید . 
      من یک « پک فونت ایران سنس » خریداری کردم ، اما نمیدونم چجوری باید روی قالب وردپرس نصبش کنم .
      یه بار امتحان کردم سایت ارور مرگ صفحه سفید داد و با کلی تلاش تونستم آخرین بک آپی که داشتم رو اجرا کنم . 
      ممنون میشم اگه کسی راهنمایی کنه چجوری این فونت رو نصب کنم .
    • توسط nnmmss
      سلام
      من كاملا در وردپرس تازه كار هستم. سايتي با پوسته RealNews طراحي شده. منوهايي دارم كه داراي منو و زير منو هستند. وقتي يك نوشته را به زير منو اختصاص ميدم بعد روي منو ميروم كليه نوشته هاي زير منو را هم نشان ميدهد. مثلا من به اين صورت است
      منو1
      زيرمنو 1-1
      زير منو1-2
       
      من اگر روي زير منو 1-1 كليك كنم فقط نوشته هاي زير منو 1-1 را نشان ميده ولي وقتي روي منو1 كليك كنم تمام نوشته هاي منو1   ,    زيرمنو1-1 و زيرمنو1-2 را نشان ميدهد. چطور ميتوانم اين موضوع را تصحيح كنم كه با كليك كردن روي منو1 فقط نوشته مربوط به منو1 را نشان دهد
    • توسط rendesharif
      با سلام 
      24 ساعت پیش در حال آپدیت تب های وبسایت بودم که اینترنت قطع شد و هنگامی که سعی کردم دوباره وارد کنترل پنل بشم دیدم صفحات ساختار خودشون رو از دست دادن و به نحوی بصورت لایت بارگزاری میشن برای حل این مشکل چیکار میتونم بکنم آیا راه حلی هست.
      تصویر قسمت لاگین هم اضافه کردم میتونید ببینید که دیگه خبری از ساختار اصلی نیست در مابقی صفحات کنترل پنل هم به همین شکل هست

    • توسط naff
      سلام.
      من  میخوام یه صفحه ی استاتیک رو روی ftp  آپلود کنم به عنوان  index اصلی و بعد از کلیک روی دکمه ی مورد نظر کاربر منتقل بشه به سایت اصلی یا همون قالب وردپرس.
       مشکل اینجاست که وقتی صفحه ی  html  رو روی  ftp  آپلود میکنم سایت فقط این صفحه رو به عنوان  index  میشناسه و  این رو جایگزین  index وردپرس میکنه و این صفحه  رو  front page  میشناسه.
       در صورتی که من هر دوتاش رو  میخوام . و صفحه ی html  رو به عنوان  index  میخوام یعنی با وارد کردن اسم سایت اسن صفحه ظاهر بشه.
      صفحه ی اچ دی ام ال:
      https://altourneur.com/new.html
       صفحه ی اصلی سایت:
      https://altourneur.com