favorite ساختن سمت سرور
سلام برو بچس عزیز
بنده پروژ] ای تحت وب رو شروع کردم و توی دیتابیس وبم یگ رکوردی به اسم isfavorite تشکیل دادم که از نوع بولین هست و من از اپلیکیشنم میام و مثلا مطلبی رو فیوریت میکنم و اون مقدار صفر رو مثلا 1 میکنم که برنامه هم به خوبی کار میکنه ! اما مسله اینه !! :
هر نفر که این اپو دانلود کنه ازون فیلد isfavorite که آخرین شخص تغییرش داده میخونه و در نتیجه هرکسی تغییر بده توی رکورد مورد علاقه یا همون favorite نفر بعدی هم میتونه اونو تغییر بده .... حالا بگید چه کار کنم !!!؟؟؟؟؟؟؟؟؟؟؟؟
اگه نیاز به اینه که یک دیتابیس روی لوکال داشته باشم خداوکیلی نگین که سکته میکنم ! که حتما از وب بخوتم بریزم رو لوکال ! حالا اگه روششم اونه لطفا توضیح بدین یا اینکه بشه با پریفرنسس یجوری سوری سوری ردش کرد
هر دستگاهی یک شناسه منحصر بفرد رو داره (AID) که میتونین موقع درخواست به سرور این AID رو هم ارسال کنید.
حالا شما یک فیلد به جدول اون favorite ها اضافه کنین بنام user_aid
هرموقع کاربری مطلبی رو isfavorite کرد، شما AID اون کاربر رو هم به سرورت بفرست و توی دیتابیست ذخیره کن که سری بعد اگه میخواد isfavorite ترو یا فالس بشه، از طریق اون AID توی دیتابیس Where بشه و فیلد رو تغییر بده.
به همین راحتی :)
برای گرفتن Device ID :
//getting unique id for device String id = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
ببین من فیلدهام ایناس
news_id که کلیده
news_desc
is_fav
بعد حالا میام با کوعری سمت وب آپدیتش میکنم به این صورت :
mysqli_query($connection, "UPDATE news SET is_fav = not is_fav WHERE news_id=$id");
به صورت تاگل مانند عمل میکنه کدم و همونطوری ک خودت توی برنامه ها دیدی روی قلب که میزنه فیوریت میکنه و با زدن مجدد اون از لیست خارج میشه ... مدل کد اینجوریه
حالا که گفتی فیوریتو بر اساس اون کد گوشی طرف آپدیت کنم گیج شدم آیا نیاز به اینه که یک جدول مخصوص کاربرا بسازم یا هرچی ؟
pggco عزیز این کد رو میزنم برادر کار میده ولی تا زمانی که where رو نگذاشنتم میخوام اگه یکبار یک خبری که اسم فیلدش news_id هست دیگه توی جدول تکرار نشه و یبار برای هر کاربری فیوریت بشه ... فقط به من بگو چرا این where کار نمیکنه ! ؟؟ قابل ذکره که این آی دی آخری که میبینی میاد و ازون جدول دیگه آی دی اون خبرو میگیره و توی خودش ذخیره میکنه به دلیل اینکه هر کاربر باید یکسری خبرو فیوریت کنه در نتیجه این فیلد آی دی در جدول کاربرم نمیشه که کلید یا یونیک هم باشه .. فقط یک شرط میخوام بزارم که موقعی اینزرت کن که آی دی جدیدی که از سمتت اندروید خوندی توی جدول اون شخص نباشه
mysqli_query($connection, "INSERT INTO user VALUES (0,'$user_id', $is_fav, $id )WHERE $id=1 ");
1- واسه Insert کردن دیگه Where به کار نمیاد و بکاربردنش اشتباس.
2- شما یک جدول جدید ساختین بنام user، چرا حالا user ؟ میتونستین بزارین is_fav
3- جدول is_fav باید دوتا تا فیلد داشته باشه: news_id , aid که news_id از جنس Int و aid هم از جنس TEXT.
4- حالا وقتی کاربر روی دکمه "مورد علایقه" کلیک کرد، یک درخواست که شامل aid اون دستگاه و news_id که مال اون مطلب هستش به سرور ارسال میشه.
6- سرور این درخواست رو میگیره و با کوئری زیر به دیتابیس انتقالش میده.
<?php
$news_id = $_POST['news_id'];
$aid = $_POST['aid'];
mysqli_query($connection, "INSERT INTO `is_fav` (`news_id`, `aid`) VALUES ('$news_id', '$aid')");
مشگل حل شد از دوست عزیزم احمد یا همون Criss هم که به من همقکری داد متشکرم ... واقعا به همه پیشنهاد میکنم دیتابیسی رو برای فیوریت روی اس دی بسازید .. کاری که من کردمو نکنید بسیار به سختی مشکل حل شد ...
دوست عزیز من تا اینجا رو متوجه شدم ولی کوئری فرستادن اطلاعات رو باید چی جوری بنویسم یه کوئری نوشتم ولی مثل اینکه اشتباهه. کمک کنین ممنون میشم.
function readDataFav(){
$conn = connectToDataBase();
$id=$_POST['item'];
$aid =$_POST['aid'];
//$id=1;
$sql = "SELECT * FROM isfav,app WHERE app_id=$id AND a_id=$aid";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
$output=array();
while($row = $result->fetch_assoc()) {
$record=array();
$record['app_id']=$row['serial_id'];
$record['app_name']=$row['serial_name'];
$record['app_vote']=$row['serial_vote'];
$record['app_rating']=$row['serial_rating'];
$record['app_logourl']=$row['serial_logourl'];
$record['app_pic1']=$row['serial_pic1'];
$record['app_pic2']=$row['serial_pic2'];
$record['app_pic3']=$row['serial_pic3'];
$record['app_pic4']=$row['serial_pic4'];
$record['fav_id']=$row['fav_id'];
$output[]=$record;
}
} else {
echo "0 results";
}
echo json_encode($output);
$conn->close();
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .