رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

دریافت اطلاعات از سرور


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

سلام

برای دریافت تعداد لایک از دیتابیس سرور باید چه ترفندی زد که برنامه هنگ نکنه ! یا دیر بالا نیاد !!

چون مثلا 1000 تا اطلاعات رو بخواد یه جا از سرور بگیره کلا کمی برنامه هنگ میکنه !!!

کسی ایده ای داره لطفا بگه !! چون واقعا من راهی به ذهنم نمیاد.

مرسی از کمکتون

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

لایک دیگه !! برای یک موضوعی کاربرا لایک کردن که ثبت شده تو دیتابیس !!

حالا میخوام اونارو دریافت کنم

چطوری :)؟؟

ممنون اگر بگی

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

یه کلاس هست خودم نوشتم ! برای وصل شدن PHP به دیتابیس :‌

<?php
if (!isset($_SESSION)) {
   session_start();
}

class ItemsManager
{
   private $item = NULL;

   public function Print_Split($splitby, $string, $limit, $from)
   {
       $words = explode($splitby, $string);
       return implode($splitby, array_splice($words, $from, $limit));
   }

   public function Do_Split($splitby, $string)
   {
       $words_a = explode($splitby, $string);
       return $words_a;
//        return str_word_count($words);
   }
}

/**
* @author Peyman Aslani
* @desc Work with files and folders in PHP
* @version 1.0.1
* @example $myVar = new fileManagement(); $myVar->functions($var1,$var2,...);
*/
class fileManagement
{
   /**
    * this function creates a zip file from a folder
    * @param the name of the folder you want to zip it: $folderName
    * @param the name of zip file you want to create: $zipFileName
    * @return true or false
    * @example  if($myVar->create_zip("yourFolder","YourZipNameFile"))
    *           {
    *               echo "folder has been ziped";
    *           }
    *           else
    *           {
    *               echo "can not zip this folder";
    *           }
    */
   public function create_zip($folderName, $zipFileName)
   {
       $zip = new ZipArchive();
       if (is_dir($folderName)) {
           $zip_archive = $zip->open($zipFileName . ".zip", ZIPARCHIVE::CREATE);
           if ($zip_archive === true) {
               $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folderName));
               foreach ($iterator as $key => $value) {
                   $zip->addFile(realpath($key), $key);
               }
               $zip->close();
               if (file_exists($zipFileName . ".zip")) {
                   return true;
               } else {
                   return false;
               }
           }
       } else {
           return false;
       }
   }

   /**
    * this function extracts a zip file
    * @param your zip file: $zipFileName
    * @param Location in which you want to extract: $pasteLocation
    * @return true or false
    * @example if($myVar->extract_zip("YourZipNameFile.zip","YourPasteLocation"))
    *          {
    *              echo "folder has been extract";
    *          }
    *          else
    *          {
    *              echo "can not extract folder";
    *          }
    */
   public function extract_zip($zipFileName, $pasteLocation)
   {
       if (!is_dir($pasteLocation)) {
           mkdir($pasteLocation);
       }
       $zip = new ZipArchive();
       if ($zip->open($zipFileName) === TRUE) {
           for ($i = 0; $i < $zip->numFiles; $i++) {
               $zip->extractTo($pasteLocation, array($zip->getNameIndex($i)));
           }
           $zip->close();
           if (is_dir($pasteLocation) or is_file($pasteLocation)) {
               return true;
           } else {
               return false;
           }
       } else {
           return false;
       }
   }

   /**
    *
    * this function copies a directory to another directory
    * @param Your source directory: $source
    * @param target location directory: $destination
    * @return No return
    */
   public function copy_directory($source, $destination)
   {
       if (is_dir($source)) {
           @mkdir($destination);
           $directory = dir($source);
           while (FALSE !== ($readdirectory = $directory->read())) {
               if ($readdirectory == '.' || $readdirectory == '..') {
                   continue;
               }
               $PathDir = $source . '/' . $readdirectory;
               if (is_dir($PathDir)) {
                   self::copy_directory($PathDir, $destination . '/' . $readdirectory);
                   continue;
               }
               copy($PathDir, $destination . '/' . $readdirectory);
           }

           $directory->close();
       } else {
           copy($source, $destination);
       }
   }

   /**
    *
    * this function deletes a directory
    * @param address of your directory: $directory
    * @return true or false
    */
   public function recursiveDelete($directory)
   {
       // if the path is not valid or is not a directory ...
       if (!file_exists($directory) || !is_dir($directory)) {
           return false;
       } elseif (!is_readable($directory))// ... if the path is not readable
       {
           return false;
       } else // ... else if the path is readable
       {
           // open the directory
           $handle = opendir($directory);

           // and scan through the items inside
           while (false !== ($item = readdir($handle))) {
               // if the filepointer is not the current directory
               // or the parent directory
               if ($item != '.' && $item != '..') {
                   // we build the new path to delete
                   $path = $directory . '/' . $item;

                   // if the new path is a directory
                   if (is_dir($path)) {
                       // we call this function with the new path
                       self::recursiveDelete($path);
                   } else // if the new path is a file
                   {
                       // remove the file
                       unlink($path);
                   }
               }
           }

           // close the directory
           closedir($handle);

           // try to delete the now empty directory
           if (@!rmdir($directory)) {
               return false;
           }

           return true;
       }
   }
}

class DB
{
   private $con = null;

   public function __construct()
   {
       $this->connect();
   }

   private function connect()
   {
       if ($this->con == null) {
       	// به ترتیب نام کاربری دیتابیس کلمه عبور و نام جدول رو وارد میکنی
           $this->con = new mysqli('localhost', 'smf8', '12344321', 'smflog');
           if ($this->con->connect_error) {
               trigger_error('Database connection error : ' . $this->con->connect_error, E_USER_ERROR);
           }
           mysqli_query($this->con, 'SET NAMES \'utf8\'');
           mysqli_set_charset($this->con, 'utf8');
       }
   }

   public function AffectedRows()
   {
       $this->connect();
       return mysql_affected_rows($this->con);
   }

   public function ArrayQuery($query)
   {
       $result = array();
       $rows = $this->Query($query);
       if ($rows && mysqli_num_rows($rows) > 0) {
           while ($row = mysqli_fetch_assoc($rows)) {
               $result[] = $row;
           }
           mysqli_free_result($rows);
       }
       return $result;
   }

   public function Query($query)
   {
       $this->connect();
       return mysqli_query($this->con, $query);
   }

   public function Escape($value)
   {
       $this->connect();
       return mysql_real_escape_string($value, $this->con);
   }

   public function __destruct()
   {
       $this->Disconnect();
   }

   public function Disconnect()
   {
       if ($this->con) {
           // mysql_close();
       }
   }
}

?>

خب کلاس DB رو بسته به اطلاعاتت ویرایش کن. شما تعداد لایک ها رو توی یه تیبل ذخیره کن بعدش با Json بگریش! شما میخواید تعداد like ها توی برنامه اندروید محاسبه بشه که این کار خیلی سنگینه و باعث لگ شدنه برنامه میشه. اگه کدش رو خواستی بگو بزارم !

$db->ArrayQuery("SELECT `likes` FROM `table` WHERE(`id` = 'id matlab')");

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

$JsonData = $db->ArrayQuery("SELECT `likes` FROM `table` WHERE(`id` = 'id matlab')");
echo json_encode($JsonData);

سوالی بود در خدمتم

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

خودم یه کاری کردم که از دیتابیس لایک رو به صورت جیسون دریافت میکنه ! اما شما حساب کن مثلا 1000 تا جیسون هست ! حالا میخواد بیاد یه جا بگیره داخل دیتابیس برنامه جاگذاری کنه ! خب لحظه ای زمان میخواد !

من داخل برنامه ی طنزعکس اینکارو کردم ! اما پس از مدتی برنامه دیر اجرا میشه چون بش گفتم قبل از اجرای برنامه اجرا بشه !! تازه هنوز خیلی نیست ! یعنی حدود 1400 خونه ی جیسونه !!

میخوام بدونم راهی داره که طوری این تعداد رو بگیرم که اصلا زمانی نبره !!

معمولا همه یه کاری میکنن ! مثلا برنامه های شبکه اجتماعی صد در صد یه کاری کردن که خوب اجرا میشه !

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

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

ببین عزیز من ! شما داری این کارو میکنی که لایک ها رو تو اندروید حساب کنی که این کار غلطه ! باید توی سرور حساب کنی ! اگه یه نگاهی به کدت بندازم سورسشو میتونم بدم که چجوری توی سرور محاسبه کنید


شما نباید به ازای هر like یه json بسازی ! باید تعداد لایک ها رو در یه table ذخیره کنی و بعدش به ۱ request بگیریشون ! به ID مطلب هم مرتبطش کنی

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

نه اشتباه نکن ! من هزارتا جیسون نساختم یک آرایه جیسون که 1000 تا خونه داره ! دقیقا همین کاری که میگی رو کردم !

یعنی از دیتابیس سرور گرفتم ! تبدیل کردم به جیسون ! کلا 2 تا خونه دارم id , like که آیدی هم کلیده دیتابیسه داخلیه برنامس ! کسی که لایک میکنه آیدی رو میگیره داخل دیتابیس اضافه میکنه ! اگرم بود که +1 لایک بش اضافه میکنه !

دقیقا همون کاری که میگی رو کردم ! اما این کار اصولی نیست!

[shcode=java]

mysql_select_db($db,$con) or die("db selection failed");

$r=mysql_query("select * from getlike",$con);

$arr=array();

while($row=mysql_fetch_array($r))

{

$idapp=$row['idapp'];

$likes=$row['likes'];

$arr[]=array('idapp'=>$idapp,'likes'=>$likes);

}

print(json_encode($arr));

mysql_close($con);

?>

[/shcode]

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

آهان ! مشکل شما تعداد لایک ها نیست. مشکل شما اینه اگه تعداد فایل ها ( عکس ها ) زیاد شه چیکار کنه ؟

خب بینید شما نباید یه table جدا درست کنید ! باید یه field به تیبل عکس ها به اسم likes اضافه کنید. اگه اشتباه میکنم بفرمایید

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

نمیدونم ! فعلا برنامه طنزعکس که 1000 نفر دانلود شد ! برای اینکه نگرفت کلا لایک رو حذف کردم !

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

هر چند که اصلا ایده ندارم فعلا :)

مرسی

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

خب گفتم که ! اگه میخوای هاست رو بده برات کدشو بزنم :) نا امید نشو ! فکر نکنم تاحالا به اندازه من شکست خورده باشید. دقیق ۱۱ بار گند زده شد بهم

پ.ن : البته ۱ بارش واقعا به موفیقت بزرگی رسیدم

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

آدمهای موفق قطعا زمین زیاد خوردن !! نامید نشدن

ما هم ناامید نیستیم ! ولی اینطورم نیست که با این امید زندگی کنیم !

اگر درآمده ثابتی داشتم غمم نبود :)

ممنون از کمکت

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

من الان حرف از درامد زدم :|  حرفی از پول شد :D گفتم کمک ! کمک یعنی سود رساندن بی منت و مزد :( به هر حال در خدمتم

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

من الان حرف از درامد زدم :|  حرفی از پول شد :D گفتم کمک ! کمک یعنی سود رساندن بی منت و مزد :( به هر حال در خدمتم

نه

من اصلا منظورم به شما نبود !!

همینطوری گفتم !

سو تفاهم شد :)

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

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...