«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
آموزش اتصال به دیتابیس mysql د b4a :: گیم اور _ بازیسازی با unity + مطالب متفرقه

گیم اور _ بازیسازی با unity + مطالب متفرقه

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

به نام خدا
--
گروه قدیم ما promakers.ir یا پرومیکرز بود که بالای هزار اموزش توش ساخته بودم به اسم sajjad3011 ولی حیف ادمین سایتش عوض کرد
حالا سوالی بود کاری بود این شمارمه

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

---
سوالی بود بذارید
نظر خصوصی نذارید
پاسخش سخته
دوست داشتید شماره بذارید تو واتساپ یا ایتا یا .... گروه بزنیم.
09358077198

بایگانی
پیوندها

آموزش اتصال به دیتابیس mysql د b4a

سه شنبه, ۱۷ آذر ۱۳۹۴، ۰۲:۵۱ ق.ظ
منبع :gameover.blog.ir
منبع:
http://www.b4x.com/android/forum/threads...rial.8339/
مترجم:
sajjad3011

این آموزش طریقه اتصال بین Android device و remote server رو نشون می ده.
در اینجا قصد اتصال به یک MySQL database رو داریم.
Android به طور مستقیم نمی تونه به database server وصل بشه.
بنابراین نیازه یک simple web service یا سرویس وب ساده بسازیم تا request ما رو به دیتابیس بفرسته و به ما response بده.

مثلا ما یه new database ایجاد کردیم که جمعیت کشور ها رو برامون لیست کنه.
.(در اینجا البته اسم دیتابیس و ... دلخواه هست مثل xxxx یا .... )
دیتابیس ما یه جدول داره به اسم "countries" با سه ستون Name+ID+Population
[تصویر: mysql_1.png]

PHP Script:
web service ما یک اسکریپت php هست که روی سایت سرور قرار میدیم.
روش های ارتباط با این اسکریپت زیاده. مثلا می تونید با ارسال و دریافت پارامترها کار کنید و ... .
می تونیم روی سایت با php یه query بگیریم با دستوای sql و محتوای دیتابیس رو بریزیم بیرون یا واکشی کنیم توی یک فایل دیگه یا یه صفحه که با php درخواست می دیم.(مثلا get.php یا...)
البته این سوریس بهتره public نباشه(تنظیمات chmod روی سایت رو طوری تنظیم کنید که فقط کاربران خاص بتونن بهش دسترسی داشه باشن یا یه سری مسائل ایمنی و رعایت کنید اگه واستون مهمه)
البته یه راهنما هم هست تا افراد نتونن sql رو inject(تزریق) کنن برای باگ یابی از بانک شما:
PHP: mysql_real_escape_string - Manual
http://php.net/manual/en/function.mysql-...string.php


ما در اینجا از روش query استفاده می کنیم.

php script:

<?

$databasehost = "localhost";
$databasename = "xxxx";
$databaseusername ="xxxx";
$databasepassword = "xxxx";

$con = mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
mysql_select_db($databasename) or die(mysql_error());
mysql_query("SET CHARACTER SET utf8");
$query = file_get_contents("php://input");
$sth = mysql_query($query);

if (mysql_errno()) {
    header("HTTP/1.1 500 Internal Server Error");
    echo $query.'\n';
    echo mysql_error();
}
else
{
    $rows = array();
    while($r = mysql_fetch_assoc($sth)) {
        $rows[] = $r;
    }
    print json_encode($rows);
}
?>

این اسکریپت با استفاده از داده ها یا پارامتری هایی که با متد POST بهش ارسال می کنیم یک query از دیتابیس mysql می گیره.یعنی طبق درخواست ما به بانک وصل میشه و نهایتا نتیجه رو البته با فرمت JSON برگشت میده.

نکته: قسمت مهم کد بالا
$query = file_get_contents("php://input");
هست که محتوای متن ارسالی توسط b4a رو در متغیر $query ذخیره می کنه.
کپی شده از http://gameover.blog.ir



Basic4android code:

[تصویر: SS-2013-01-29_16.42.32.png]
این کد یک query(یک متغیر رشته ای که شامل بازجست و دستورات SQL هست مثل select * from table1 برای انتخاب تمام ستون ها از جدول) رو send می کنه. و نتیجه ی JSON دیافت شده رو parse(تجزیه) می کنه و نمایش میده روی listView .

قسمت اصلی سورس b4a  اینطوری هست :
'Activity module
Sub Process_Globals
	Private COUNTRIES_LIST = "countries_list", COUNTRY_POPULATION = "country_population" As String
End Sub

Sub Globals
	Type TwoLines (First As String, Second As String)
	Dim lblPopulation As Label
	Dim ListView1 As ListView
	Dim lblCountry As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("1")
	FetchCountriesList
End Sub
Sub FetchCountriesList
	ProgressDialogShow("Fetching list of countries")
	'Gets all the available countries
	ExecuteRemoteQuery("SELECT name, id FROM countries ORDER BY id", COUNTRIES_LIST)
End Sub


Sub ListView1_ItemClick (Position As Int, Value As Object)
	Dim tl As TwoLines
	tl = Value
	lblCountry.Text = tl.Second
	lblPopulation.Text = "Calling server..."
	ExecuteRemoteQuery("SELECT population FROM countries WHERE id='" & tl.First & "'", COUNTRY_POPULATION)
End Sub

Sub ExecuteRemoteQuery(Query As String, JobName As String)
	Dim job As HttpJob
	job.Initialize(JobName, Me)
	job.PostString("http://www.basic4ppc.com/android/countries.php", Query)
End Sub

Sub JobDone(Job As HttpJob)
	ProgressDialogHide
	If Job.Success Then
	Dim res As String
		res = Job.GetString
		Log("Response from server: " & res)
		Dim parser As JSONParser
		parser.Initialize(res)
		Select Job.JobName
			Case COUNTRIES_LIST
				Dim COUNTRIES As List
				COUNTRIES = parser.NextArray 'returns a list with maps
				For i = 0 To COUNTRIES.Size - 1
					Dim m As Map
					m = COUNTRIES.Get(i)
					'We are using a custom type named TwoLines (declared in Sub Globals).
					'It allows us to later get the two values when the user presses on an item.
					Dim tl As TwoLines
					tl.First = m.Get("id")
					tl.Second = m.Get("name")
					ListView1.AddTwoLines2(tl.First, tl.Second, tl)
				Next
			Case COUNTRY_POPULATION
				Dim l As List
				l = parser.NextArray
				If l.Size = 0 Then
					lblPopulation.Text = "N/A"
				Else
					Dim m As Map
					m = l.Get(0)
					lblPopulation.Text = NumberFormat2(m.Get("population"),0, 0, 0, True) & " (K)"
				End If
		End Select
	Else
		ToastMessageShow("Error: " & Job.ErrorMessage, True)
	End If
	Job.Release
End Sub

Sub Activity_Resume

End Sub

در کد فوق اطاعات یا query بهcountries.php ارسال میشه (ما فرض کردیم همون فایل get.php که بالا اوردیم هست. اسمشون رو خودتون یکی کنید و ادرس رو به هاست یا سایت خودتون تغییر بدید و لینک دقیق فایل php)
اینم سورس رایگان که خودم هم تست کردم کاملا کار می کنه:
http://www.mediafire.com/download/gb2b3a2ka1dye8p/MySQL.zip




خرید آموزش b4a فارسی با قیمت کم:
http://gameover.blog.ir/1395/04/03/%DA%A9%D8%AA%D8%A7%D8%A8-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A7%D9%85%D9%88%D8%B2%D8%B4-b4a-%D8%B3%D8%A7%D8%AE%D8%AA-%DA%AF%DB%8C%D9%85-%D8%A2%D9%88%D8%B1
موافقین ۰ مخالفین ۰ ۹۴/۰۹/۱۷
مدیرکل

نظرات (۵)

انصافا دمتون گرم بابا خیلی بکار اومد واقعا که دسست تون درد نکنه داداشی های گل مرسی از اینکه این کد بسیار جالب و بدرد بخور رو در اختیار مبتدی هایی مثل من قرار میدید
پاسخ:
ممنون. موفق باشید.
سلام ببخشید من تو قسمت php مشکل دارم امکان داره راهنمایی کنید؟
دیتابیس رو ایجاد میکنم و وقتی تیبل رو میسازم نمیدونم چه اطلاعاتی رو بهش بدم و هر کدوم از فیلد ها چجوری باشه.و وقتی که فایل php  رو با نام دیتابیسم ست میکنم اصلا نمیشناسه

چیکار کنم که بشناسه؟
تیبل ها به چه صورتی باشه و ایا میشه تیبل از قبل ساخته شده رو براش آپلود کرد؟
اگه میشه لطفا زحمتشو بکشید تیبل رو برام ایمیل کنید

خیلی ممنون میشم اگر راهنمایی که دو ماهه دنبال همچین روشی هستم و فقط تو سایت شما به این مطالب دسترسی پیدا کردم.اگر کمک کنید واقها ازتون نمیدونم چجوری تشکر کنم
پاسخ:
سلام.
دو حالت داریم :
یکی افلاین روی Local host که سیستم رو به سرور شبیه سازی می کنیم و محلی هست. برای اینکار بایستی XAMPP رو نصب کنی(ومپ و لمپ و ایزی پی اچ پی و غیره هم وا بده)
بعدش سرویس های آپاچی و مای س کیو ال و بیار بالا، بعدش برو http://localhost رو با فایرفاکس باز کن برو قسمت phpMyAdmin و قسمتی به نام mySQL یا قسمت برای ایجاد دیتابیس و جداولت هست که می تونی هم insert و هم create و DROP و غیره کنی و دستورات ایجاد جدولت رو به صورت SQL اکسپورت کنی و روی هاست ایمپورت کنی تا ساخته بشه. بعدشم که کدنویسی هست که بای فایل هاتو بریزی توی مسیر C:\xampp\htdocs که همون http://localhost  هست... اگه توی یک پوشه مثل ali بریزی ادرسش میشه http://localhost/ali
بعدشم توی مرورگر فایرفاکس بزن بیاد...
-


روش دوم : انلاین روی هاست
شما اول یک هاست رجیستر کن روی هر جا دوست داری رایگان مثل gigfa.com بعد رو توی public_html و فایل هاتو توی یه پوشه بریز بعد بدون این public_html ادرسش همون اسم هاستته مثل test.gigfa.com/ali
بقیه هم توی php my admin و قسمت mySQL هاست در سایتت هست..
برای اپلود فایل ها برو قسمت Files Manager
--
بقیه با خودت...
--
سوال بود بپرس
ممنون از پاسختون
من روش دومی که گفتید رو میخوام انجام بدم
حالا که دیتابیس رو ساختم و میخوام داخلش تیبل ها رو بسازم نمیدونم چجوری باشه تیبل ها و هر کدوم از فیلد ها چه مشخصالتی داشته باشه
و اینکه این تیبلی که میسازم رو چجوری با php  به همدیگه متصل کنم که بشناستش
ایا فیط به معرفی دیتابیس به فایل php  کار تموم میشه یا نه باید هر کدم از تیبل ها بصورت جدا گانه به تیبل های معرفی بشه

به فرض من یه دیتابیس با اسم xxx ساختم و داخلش دو تا فیلد یکی تکست"name" و دیگری اینتجر"id" خب حالا اینو چجوری  (Browser transformation,MIME )
type,Comments,A_I,Length/Values,Default,Collation,Attributes,Index

اینا نوعشون چیه؟اگه میشه هر دوم رو بگید باید چجوری باشه
بعد که اینارو درست کردم فایل php  رو نیازی هست که بصورت جدا بسازم یا همونی که دیتابیس رو بهش معرفی کردم کافیه؟

ممنون که لطف میکنید پاسخ میدید
با عکس توضیح بدید خیلی خوب میشه.عکس بگیرید از نوعش و تو جایی اپلود کنید لینک بدید
سلام خودم بالاخره فهمیدم چجوریه،الان تو ارسال مشکل دارم شما لطف میکنید یه مدی بدید که برای همین دیتابیس یه تا کلمه رو ارسال کنه?

ممنون میشم اگه کمک کنید
با سلام لطفا فایل php رو هم بدید ممنون



countries.php
پاسخ:
سلام.چیز خاصی نداره باید اصول کار با mySQL در php و نوشتن یک برنامه ساده برای نمایش محتوای جدول رو بدونی:
یک فایل ساده برای اتصال به دیتا بیس که اطلاعات رو از دیتابیس fetch کنید و نمایش بدید.
مثل این :
<?php
  $host = "mysql7.000webhost.com";
   $user = "a6089184_user1";
   $pass = "a123456";
//-----
   $conn=mysql_connect($host, $user, $pass);
   
   if(! $conn ) {
      die('Could not connect to server: ' . mysql_error());
   }
//-----      
   mysql_select_db('a6089184_db1',$conn);
   $sql = "SELECT * FROM tblScore ORDER BY score DESC LIMIT 5";
   
   $result = mysql_query( $sql, $conn );
//-----  
   if(! $result ) //age natije sefr nabud yani khata darim
   {
      die('Could not save score: ' . mysql_error());
   }
//-----   
echo("Name   |   Score <br>");

WHILE($rows = mysql_fetch_assoc($result)){
$esm= $rows['esm'];
$score = $rows['score'];
echo("$esm  |   $score <br>");
}
//-----   
   mysql_close($conn);

   
   

?>

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی