راهنمایی در مورد دریافت اطلاعات از سرور
با سلام:
من یک سری اطلاعات رو آنلاین از سرور می خونم و در گوشی نمایش میدم مثل لیستی از خبرها.
یک سرور local از sqlite هم داخل گوشی راه انداختم که هر بار از سرور اطلاعات لود میشه میریزه داخل sqlite گوشی.
حالا چکار کنم که هر بار دارم لود می کنم اطلاعات رو از سرور اطلاعات تکراری رو نریزه داخل slite گوشی؟ اینم کد سمت php .
اگه لازم هست کد ارسال به php رو هم بزارم.
function read(){
$connection = connectToDatabase();
$result = mysqli_query($connection, "SELECT * FROM news");
$output = array();
while($row = mysqli_fetch_array($result)) {
$record = array();
$record['news_id'] = $row['news_id'];
$record['news_title'] = $row['news_title'];
$record['news_desc'] = $row['news_desc'];
$record['news_date'] = $row['news_date'];
$output[] = $record;
}
همون خبرو آنلاین لود میکنم من متوجه نمیشم.یکمی سخت داری توضیح میدی ولی کلیت اون چیزی که برداشته منه اینه که یه سری اطلاعات از سمت سرور دریافت میکنی و در گوشی نمایش میدی.دفعه ی دیگه اون خبرهایی که نمایش داده شده رو با آنلاین شدن نمیخوای از بانک خونده بشه.
یک راه اینه که آیدی مطالبی که سمت گوشی میفرستی رو در sqlite ثبت کنی و طبق اون آیدی در سرور شرط کنی تنها آیدی هایی سلکت بشن که بزرگتر از آیدی ای که از سمت گوشی به سمت سرور میفرستی.
اولین سری چون چیزی در گوشی ثبت نشده بنابراین تمام اطلاعات دیتابیس نمایش داده میشه. و سری بعدی آخری آیدی مطلب که در گوشی نگه داشتیو باید پاس بدی سمت سرور.
شرط به این صورت در میاد: (متغیر آیدی همون آیدی هست که از سمت گوشی فرستادی)
$result = mysqli_query($connection,"SELECT * FROM news WHERE (`id` > '{$id}')");
راه دیگه اینه که تمام مطالب درون دیتابیس زمانی که ثبت میشن (سمت سرور) یک فیلد timestamp هم داشته باشن تا زمان ثبتشون مشخص باشه و طبق timestamp اطلاعات جدیدو فراخوانی کنی.
البته همون راه اول بهتره.
Bidak جان من سمت گوشی رو درست کردم و این مقدار News_id داره آخرین آیدی رو از Sql گوشی میگیره و باید بفرسته . ولی سمت php با کد بالا که دادی چطوری ست کنم؟ به جای url چی بزارم ؟ اولی کد های سمت اندروید و دومی سمت سرور.
String url = "http://192.168.0.0/android/note_server/news.php";
ArrayList params = new ArrayList();
params.add(new BasicNameValuePair("action", "read"));
params.add(new BasicNameValuePair("News_id", news_id ));
<?php if (isset($_REQUEST['action'])){ $action = $_REQUEST['action']; } else { echo "Invalid Data"; exit; } if ($action=="read"){ read(); } /** * */ function connectToDatabase(){ $connection = mysqli_connect("localhost", "", "", ""); mysqli_set_charset($connection,"utf8"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } return $connection; } function read(){ $connection = connectToDatabase(); $result = mysqli_query($connection, "SELECT * FROM news WHERE ('news_id' > '{$News_id}')"); $output = array(); while($row = mysqli_fetch_array($result)) { $record = array(); $record['news_id'] = $row['news_id']; $record['news_title'] = $row['news_title']; $record['news_desc'] = $row['news_desc']; $record['news_date'] = $row['news_date']; $output[] = $record; } echo json_encode($output); mysqli_close($connection); }
Bidak جان من این کد رو کجا بزارم که REQUEST داده باشم؟
$News_id= $_REQUEST['News_id'];
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .