انجمن سایت کلیدستان



استفاده از تصاویر آپلود شده بر روی دیتابیس اینترنتی (در برنامه نویسی اندروید)زمان کنونی: ۱۳۹۵/۰۹/۱۷، ۰۶:۵۱ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: O.M.I.D
آخرین ارسال: O.M.I.D
پاسخ 5
بازدید 2573

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از تصاویر آپلود شده بر روی دیتابیس اینترنتی (در برنامه نویسی اندروید)

استفاده از تصاویر آپلود شده بر روی دیتابیس اینترنتی (در برنامه نویسی اندروید)

#1
Question 
سلام اساتید محترم
ابتدا عذر خواهی میکنم چون سوال مشابهی را روی همین فروم دیدم ، ولی موضوع جدید ایجاد کردم چون قصد پرسش از جنبه هایی مختلفی دارم.
من قصد نوشتن برنامه ای دارم که تصاویر را از روی دیتابیس روی هاست بخونه و نمایش بده به این صورت که ابتدا تصاویر کوچک روی آیتم های لیست ویو نمایش داده بشه و با لمس ایتم به صفجه جدید منتقل بشیم  که در آون تصویر بزرگ به همراه توضیحاتی درباره تصویر قرار داشته باشه .
1- تا حد امکان میخوام دیتابیس استفاده کنم و تصاویر را مستقیم روی هاست نذارم ، (استفاده از تصاویر روی هاست را کار کردم قبلا)
2- میخواستم بدونم روشی هست که من یک temp از عکس اصلی داشته باشم تا بدون این که عکس اصلی را دانلود کنم temp اون را روی ایتم لیست ویو نشون بدم؟
3- بهتره تصویر را مستقیم روی دیتا بیس بذارم یا ابتدا به رشته تبدیلش کنم و بعد از ش استفاده کنم.
4-برای انتقال تصاویر میشه از JSON یا XML استفاده کرد؟
5- وقتی به وسیله یک صفحه php از  دیتابیس خروجی رشته ای میگیریم این خروجی را نیازی هست به JSON تبدیل کنیم و بعد از آموزشی که در کلید 2651 قرار دادید استفاده کنیم ؟ یا مستقیم میتونیم بدون این تبدیل از آموزش کلید 2651 استفاده کنیم.
و آخرین سوال
6-چطور میشه مقدار بازگشتی از یک دیتابیس mysql را مستقیما به JSON تبدیل کرد ، مثلا وقتی نتیجه کوئری چند ردیف از دیتا بیس میشه ، مستقیما ما رشته JSON این ردیف ها را دریافت کنیم.

یک خواهش هم داشتم ، 
اخیرا گوگل توصیه کرده به جای AsynTask کتابخانه volley در مبحث ارتباط با سرور مورد استفاده قرار بگیره ، من یه مثال آموزشی خوب ازش دیدم ، اگر ممکنه این مثال را تشریح کنید و یک کلید آموزشی ازش ایجاد کنید

http://www.androidhive.info/2014/07/andr...ng-volley/

با تشکر
پاسخ

استفاده از تصاویر آپلود شده بر روی دیتابیس اینترنتی (در برنامه نویسی اندروید)

#2
سلام.
1- ابتدا توصیه می کنم که در مورد قرار دادن تصاویر در database خوب تحقیق کنید. یعنی دوست ندارم وقتتان را روی آن بگذارید، بعد متوجه بشوید که اشتباه بوده و قرار دادن تصاویر به همان شکل سنتی بهتر است. بنده یک جانبه نظر نمی دهم (به همین دلیل گفتم تحقیق کنید) ولی به نظرم اگر database را درگیر منابع نکنید، بهتر است (به هر حال روی سرعت پاسخگویی database ، پردازش و ... اثر می گذارد). منظورم از منابع، مواردی مثل عکس، آهنگ، فیلم و ... است که آنها را به صورت فایل جداگانه می توانیم داشته باشیم. 
مثلا سایت های بزرگ که با حجم بزرگی از اطلاعات سر و کار دارند، منابع خود را در ((هاست دانلود)) قرار می دهند. یعنی دو هاست دارند، یکی ((هاست اصلی)) که ساختار و کدهای سایتشان در آن قرار دارد و دیگری ((هاست دانلود)) که تنها منابعی چون عکس و فیلم و ... را بر روی آن قرار می دهند و قرار نیست که در آن کد خاصی اجرا شود یا اطلاعات در پایگاه داده ذخیره شده باشد. قیمت هاست دانلود نیز معمولا برای این موارد مناسب تر است. پس ابتدا در این مورد خوب تحقیق کنید.

2- اگر قرار است که تا زمان دانلود عکس، عکس دیگری به جای آن نمایش داده شود، بهتر است که یک عکس ثابت (تنها یک لوگو) و موجود در خود برنامه اندروید باشد. مثلا در فروشگاه های اندروید، در لیست ابتدایی، عکس های کوچی از لوگوی برنامه نمایش داده می شود که باید از اینترنت دانلود شود، بنابراین تا هنگامی که عکس کامل دانلود نشده، یک عکس لوگوی کوچک را به جای آن نمایش می دهند. با کلیک روی برنامه، در صفحه بعد هم به همین شکل است و فقط باید عکس بزرگتری ار لوگو دانلود شود که تا آن زمان، یک عکس به طور موقتی نمایش داده می شود.
در کلید زیر که در مورد دانلود و cache کردن عکس ها است، همین روند نمایش یک عکس موقتی تا زمان دانلود کامل عکس (و بعد نمایش آن) اجرا می شود :

کلید شماره 2777

3- اگر قرار است که عکس ها در database ذخیره شوند، ابتدا باید به رشته (متن) تبدیل شوند (اطلاعات معادل عکس)، اما اگر قرار نیست با database سر و کار داشته باشیم، باید تبدیل به رشته و این موارد را کنار بگذارید. با بررسی کدهای ذخیره سازی عکس در database ، این مورد را متوجه می شوید.
4- json و xml هر متنی را از شما دریافت می کنند و از این بابت مشکلی نیست، فقط باید حواستان به کاراکترهای معنی دار برای آن روش ها باشد. به عنوان مثال، کلید زیر را ببینید :

کلید شماره 2901

5- هیچ اجباری برای استفاده از روش json نیست، فقط هنگامی که تعدادی اطلاعات ساختاریافته را می خواهیم دریافت کنیم، روش json ، کار ما را آسان تر می کند. البته خود بنده سعی می کنم که حتی اگر قرار است تنها یک متن (یک متن تکی و بدون مقادیر جداگانه و ساختاریافته) را از یک صفحه php دریافت کنم، باز هم آن را با روش json طراحی کرده و با آن متن را دریافت نمایم تا اگر در آینده تصمیم داشتم که مثلا از آن صفحه php ، علاوه بر آن متن، یک متن جداگانه دیگر را نیز دریافت کنم، خیلی مجبور نشوم که کدها را بازنویسی کنم و چون قبلا روش json به کار رفته، تنها کافی است که در طراحی صفحه، یک گره (node) دیگر را اضافه کرده و در برنامه اندروید نیز، اعلام کنم که اطلاعات یک گره با این نام را از متن دریافت شده، استخراج نماید.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط O.M.I.D

استفاده از تصاویر آپلود شده بر روی دیتابیس اینترنتی (در برنامه نویسی اندروید)

#3
با عرض سلام و خسته نباشید و همچنین تشکر بابت توجه و وقتی که برای پاسخ بنده قرار دادید.
در مورد قرار ندادن عکس در دیتا بیس حق با شماست به نظره بنده هم قرار دادن تصویر در دیتا بیس کاره درستی نیست ، ولی قصد دارم یکبار برای همیشه اینکارا امتحان کنم اونم با یک دیتا بیس مستقل که جداول دیگری درگیرش نباشند ، البته به هر حال استفاده از سرور های اشتراکی به هر نحوی ایجاد مشکل میکنه ولی ممکنه این بار هم ازش بگذرم و سراغ شیوه عادی برم.
در مورد  JSON سوال بنده این بود که راهی نیست که مسقیما بشه بعد از دستور mysql_fetch_arrey خروجی دستورا به JSON کرد ، بدون این که نیاز باشه ببریم داخل حلقه و فیلد ها را تک به بتک استخراج کنیم و بعد به JSON تبدیل کرد.
و همچنین اگر ممکنه درباره کتابخاهنه volley و متد هاش یه توضیحی بدید البته عذر میخوام من لینک بالا را داخل تگ کد PHP قرار داده بودم ولی فکر کنم مشکلی پیش امده چون الان که دیدم به صورت لیک قرار گرفته.
 
پاسخ
 سپاس شده توسط admin

استفاده از تصاویر آپلود شده بر روی دیتابیس اینترنتی (در برنامه نویسی اندروید)

#4
اگر از زبان PHP برای اتصال که پایگاه داده MySQL استفاده می کنید، عبارت زیر را در گوگل جستجو کنید :

کد پی‌اچ‌پی:
php mysql to json 

کدهای زیادی در نتایج می آید که باید آنها را تست کنید و ببینید کدامیک برای شما مناسب است.

-------------------

آن را خودم به لینک تبدیل کردم که کاربران راحت به آن صفحه سر بزنند.

-------------------

در مورد Volley اطلاعات خاصی ندارم، توصیه می کنم در سایت های انگلیسی زبان جستجو کنید، حتما یک راهنمای مناسب و کامل پیدا خواهید کرد.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط O.M.I.D

استفاده از تصاویر آپلود شده بر روی دیتابیس اینترنتی (در برنامه نویسی اندروید)

#5
با عرض سلام مجدد من از اسکریپت زیر استفاده کردم برای تبدیل مقادیر از mysql به json و خوب جواب داد 

کد پی‌اچ‌پی:
<?php
//این هدر زمانی استفاده می شود که مقادیر فارسی را بخواهیم در خروجی نشان دهیم
header('Content-Type: application/json; charset=utf-8');

$conectionstring mysql_connect("localhost","username","password");
$conectionstring or die(mysql_error());
mysql_select_db("databasename",$conectionstring) or die(mysql_error());

$result mysql_query("SELECT * FROM tablename"
or die(
mysql_error()); 

$resultArray = array();
$tempArray = array();

while(
$row mysql_fetch_assoc($result))
{
    
// Add each row into our results array
    
$tempArray $row;
    
array_push($resultArray$tempArray);
}
//در صورتی که همه مقادیر انگلیسی باشد
//echo json_encode($resultArray);
//
//***
// درصورتی از این دستور استفاده می کنیم که در خورجی مقادیر فارسی داشته باشیم
echo preg_replace("/\\\\\\\\u([a-f0-9]{4})/e""iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))"json_encode($resultArray));
//***
// closing connection : successful!
mysql_close($conectionstring);
?>

به کامنت های فارسی داخل اسکریپت توجه کنید ، یکی از خط ها فقط زمانی استفاده میشه که بخواهیم از مقادیر فارسی استفاده کنیم


درصورتی که فقط بخواهید از فیلد های مشخصی از دیتا بیس استفاده کنید یا نام گره  هاتون در json تغییر کنه میتونید از  اسکریپت زیر استفاده کنید.

کد پی‌اچ‌پی:
<?php
    
//Create Database connection
    
$conectionstring mysql_connect("localhost","username","password");
    if (!
$conectionstring) {
        die(
'Could not connect to db: ' mysql_error());
    }
 
    
//Select the Database
    
mysql_select_db("databasename",$conectionstring);
    
    
//Replace * in the query with the column names.
    
$result mysql_query("select ID,Name,Email,Url from tablename"$conectionstring);  
    
    
//Create an array
    
$json_response = array();
    
    while (
$row mysql_fetch_array($resultMYSQL_ASSOC)) {
        
$row_array['id'] = $row['ID'];
        
$row_array['name'] = $row['Name'];
        
$row_array['email'] = $row['Email'];
        
$row_array['url'] = $row['Url'];
        
        
//push the values in the array
        
array_push($json_response,$row_array);
    }
    echo 
json_encode($json_response);
    
    
//Close the database connection
    
mysql_close($conectionstring);
 
?>

هر دو این اسکریپت ها تست شده و جواب میده ، فقط نکته ای که وجود داره اینه که در بعضی از json ها یک نام آرایه نیز قرار میدند مثل همون نمونه ای که در کلید 2651 استفاده شده که اگر بخواهید اون را هم داشته باشید خودتون باید در قسمت echo بسازیدش .
 
در مورد کتابخانه volley هم یک روز وقت صرفش کردم و چند نمونه ای کد هم باهاش نوشتم ، کتابخانه فوق العاده ای برای کار با imageview و  imageloader ولی پیچیده است و نتونستم خیلی تحلیلش کنم ولی میتونید با توجه به مثال ها ازش استفاده کنید.
پاسخ
 سپاس شده توسط admin


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)