رفتن به مطلب

نحوه ذخیره کردن مقدار یک متغیر در پایگاه داده


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

با سلام خدمت دوستان گرامی.

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


/*****
* Show WP-PostRatings Total For Each Author
***/
function author_rating_total() {
global $wpdb;
global $ratings_sum;
$user_id = get_the_author_meta( 'ID' );
$query = array (
'author' => $user_id,
'suppress_filters' => 'true',
'posts_per_page' => -1
);
$queryObject = new WP_Query($query); while($queryObject->have_posts()) : $queryObject->the_post();

$post_ratings_data = get_post_custom(get_the_id());
$post_ratings_score = intval($post_ratings_data['ratings_score'][0]);

$ratings_array[] = $post_ratings_score;

endwhile;

$ratings_sum = array_sum($ratings_array);

if ($ratings_sum > 0) {
$ratings_sum = $ratings_sum;
}
echo $ratings_sum;

wp_reset_query();
}

من میخوام مقدار متغیر $ratings_sum رو توی پایگاه داده ذخیره کنم.

توی جدول wp-users ،البته من یه فیلد جدید به نام user_rate به این جدول اضافه کردم و میخوام مقدار توی این فیلد ذخیره بشه.

این کد رو هم امتحان کردم مثل اینکه ایراد داره و جواب نمیده:


$wpdb->update('wp_users', array( 'user_rate' => '$ratings_sum'), array( 'ID' => $user_id ) );

اگه بشه یه راهنمایی کنید که بتونم درستش کنم ممنون میشم.

لینک به ارسال

برای ذخیره اطلاعات در دیتابیس و برای کاربران از تابع های

add_user_meta() 

و

update_user_meta()

استفاده کنید

  • امتیاز 2
لینک به ارسال

این می تونه یک نمونه خیلی ساده شده اش باشه


<?php
$user_ID = get_the_author_meta( 'id');
if(get_the_author_meta( 'rating', $user_ID )) {
$rat = get_the_author_meta( 'rating', $user_ID );
}
else {
$rat = 0;
add_user_meta( $user_ID, 'rating',$rat);
}

if(isset($_GET['rat'])) {
$rat = $_GET['rat'];
update_user_meta( $user_ID, 'rating',$rat);
}
$ratup = $rat+1;
$ratdown = $rat-1;
?>
<a href="<?php the_permalink();?>/?rat=<?php echo $ratup;?>">+</a>
<a href="<?php the_permalink();?>/?rat=<?php echo $ratdown;?>">-</a>
<?php echo $rat;?>

  • امتیاز 3
لینک به ارسال

آقا ایمان ممنون.

ولی من که هر کاری کردم نشد که نشد.

اصلا مقداری به متا ها توی user meta اضافه نمیشه حتی فیلدش هم ساخته نمیشه همون فیلد rating.

ببینید من میخوام اون متغیر $ratings_sum قبل از اکو کردن توی پایگاه داده ذخیره بشه.اگه میتونید همینو بهم کمک کنید که انجام بده ممنون میشم.

لینک به ارسال

کار شما که درست نیست

چرا از user meta استفاده نکردید؟

http://davidwalsh.name/add-profile-fields

  • امتیاز 3
لینک به ارسال

کار شما که درست نیست

چرا از user meta استفاده نکردید؟

http://davidwalsh.na...-profile-fields

ممنونم آقا کسرا بهم کمک کرد.

این شکلی دارم استفاده میکنم ولی اصلا چیزی ذخیره نمیشه.


function author_rating_total() {
$user_id = get_the_author_meta( 'ID' );
if(get_the_author_meta( 'rating', $user_ID )) {
$rat = get_the_author_meta( 'rating', $user_ID );
}
else {
$query = array (
'author' => $user_id,
'suppress_filters' => 'true',
'posts_per_page' => -1
);
$queryObject = new WP_Query($query); while($queryObject->have_posts()) : $queryObject->the_post();

$post_ratings_data = get_post_custom(get_the_id());
$post_ratings_score = intval($post_ratings_data['ratings_score'][0]);

$ratings_array[] = $post_ratings_score;
endwhile;
$ratings_sum = array_sum($ratings_array);

if ($ratings_sum > 0) {
$rat = $ratings_sum;
}
add_user_meta($user_ID,'rating', $rat);

}
if(isset($_GET['rat'])) {
$rat = $_GET['rat'];
update_user_meta( $user_ID, 'rating', $rat);
}
wp_reset_query();
$rate = get_the_author_meta( 'rating');
echo $rate;
}

حتی خودم دستی مقدار به این متای جدید هم که ساختم مقدار دادم مقدار رو نشون میده اما وقتی اون مقدار رو پاک میکنم مقدار این متغیر رو ذخیره نمیکنه.

موندم توش که چیکار کنم!!!!

در ضمن مجبورم از این کوئری توش استفاده کنم چون مقدار امتیاز های داده شده به پست ها رو برمیگردونه.

لینک به ارسال

کدی که عرض کردم هم سالمه و هم راه درست کاریه که می خواهید بکنید

تصویر نمونه اش

post-336-0-98330100-1387340232_thumb.jpg

نشانی

http://wpu.ir/ubet1

البته نمونه کاملا ساده شده فقط برای درک کار با تابع

این هم کل کدش


<?php
$user_ID = get_the_author_meta( 'id');
if(get_the_author_meta( 'rating', $user_ID )) {
$rat = get_the_author_meta( 'rating', $user_ID );
}
else {
$rat = 0;
add_user_meta( $user_ID, 'rating',$rat);
}

if(isset($_GET['rat'])) {
$rat = $_GET['rat'];
update_user_meta( $user_ID, 'rating',$rat);
}
$ratup = $rat+1;
$ratdown = $rat-1;
?>
<div id="authorRatingBlock">
<a href="?rat=<?php echo $ratup;?>">+</a>
<a href="?rat=<?php echo $ratdown;?>">-</a>
<span id="authorRatingInner">
<span id="authorRating">
<?php echo $rat;?>
</span>
</span>
<div>

البته شما باید از متد post استفاده کنید و برای آی دی مطلب و یا آی دی و آی پی امتیاز دهنده هم فیلد hidden بگذارید که خودش اطلاعات رو بگیره و ذخیره کنه

این کار باعث می شه بتونید انواع کوئری ها رو هم برای گزارش بگیرید و الا با رکورد کردن کوئری تازه مشکلات فراخوانی و تداخل و ارورهای جور واجورش شروع می شه

  • امتیاز 3
لینک به ارسال

اگر منظورتون از اینکه فیلدش نمی آد اینه که در صفحه پروفایل کاربر فیلد نداره که نباید داشته باشه ولی اگر می خواهید فیلد براش اضافه کنید از کدی شبیه کد زیر در فایل functions.php استفاده کنید


function custom_user_contact_methods( $user_contact_method ) {
$user_contact_method['rating'] = __( 'User Rating Text', 'kubrick' );

return $user_contact_method; ;
}
// Hook into the 'user_contactmethods' filter
add_filter( 'user_contactmethods', 'custom_user_contact_methods' );

  • امتیاز 3
لینک به ارسال

البته شما باید از متد post استفاده کنید و برای آی دی مطلب و یا آی دی و آی پی امتیاز دهنده هم فیلد hidden بگذارید که خودش اطلاعات رو بگیره و ذخیره کنه

این کار باعث می شه بتونید انواع کوئری ها رو هم برای گزارش بگیرید و الا با رکورد کردن کوئری تازه مشکلات فراخوانی و تداخل و ارورهای جور واجورش شروع می شه

آقا ایمان خوب من این کوئری که قرار دادم همه کارا رو خودش انجام میده و مقدار نهایی رو توی متغیر rating_sum ذخیره میکنه.

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

اگر منظورتون از اینکه فیلدش نمی آد اینه که در صفحه پروفایل کاربر فیلد نداره که نباید داشته باشه ولی اگر می خواهید فیلد براش اضافه کنید از کدی شبیه کد زیر در فایل functions.php استفاده کنید


function custom_user_contact_methods( $user_contact_method ) {
$user_contact_method['rating'] = __( 'User Rating Text', 'kubrick' );

return $user_contact_method; ;
}
// Hook into the 'user_contactmethods' filter
add_filter( 'user_contactmethods', 'custom_user_contact_methods' );

اما هیچ تغییری نمیکنه فیلد ساخته شده اما متغیر درونش ریخته نمیشه.

اگه میشه کد رو طوری تغییر بدین که مقدار متغیر رو دریافت کنه ممنون میشم.

تمام کد ها هم توی پست بالا موجوده.

لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

شما بعد از اینکه وارد حساب کاربری خود شدید می توانید دیدگاهی ارسال کنید



ورود به حساب کاربری
×
×
  • اضافه کردن...