اشکان

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

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

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

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


/*****
* 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 ) );

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

0

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


لینک به پست

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

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 قبل از اکو کردن توی پایگاه داده ذخیره بشه.اگه میتونید همینو بهم کمک کنید که انجام بده ممنون میشم.

0

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


لینک به پست

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

چرا از 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;
}

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

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

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

0

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


لینک به پست

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

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

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' );

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

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

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

0

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


لینک به پست

بجای rating بگذارید rating_sum و تست کنید

2

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


لینک به پست

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

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

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

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


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

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

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


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