رفتن به مطلب

آموزش گرفتن اطلاعات دستگاه ها در دیتابیس آنلاین با php


arastooms

ارسال‌های توصیه شده

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

این آموزش با راهنمایی و کمک اسا تید عزیزم (( شهاب اسکندری در مبحث php  و دیتابیس )) و استاد امین شاهدی در بحث (( کتابخانه  کاربردی AriaAsynkTask ))  به نتیجه رسید
و تشکر از این عزیزان

 

 

توضیحات سورس :

شاید به آمار دقیق همه برنامه هاتون نیاز داشته باشید و بخواهید بدونید که چنتا نصب داشته / چه قدر کاربران نرم افزار رو استفاده میکنند / در چه زمان روز بیشترین استفاده رو دارید/  تعداد استفاده کاربران نرم افزار و .....//


شاید هم این پیام هایی که اول برنامه های آنلاین هست و میگه "" شما آخرین بار 50 روز پیش به برنامه سر زدید بهتر یه سر دیگه بزنید تا اطلاعات جدید رو ببینید "" و یا پوش نوتیفیکیشن های درون برنامه ای با این محتوا و ....

 

خوب در این آموزش و سورس شما می تونید این دیتابیس رو داشته باشید و بسازید و اطلاعات رو جمع آوری کنید تا هر استفاده ای که به ذهن بشر هم نمیرسه از این دیتابیس انجام بدید

 

که به نظرم لازمه هر توسعه دهنده ای داشتن دیتابیسی از مشتریانش هست

 

 

سطح :

پیشرفته ( حرفه ای )

 

 موضوع :

ثبت اطلاعات دستگاه ( گوشی کاربر ) در دیتابیس آنلاین و هاست شخصی ( بدون موارد تکراری )

 

 

هدف :

0-این دیتابیس شامل همه مشخصات برنامه و دستگاه است که به توسعه دهنده در داشتن آمار نصب 

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

 

1-ثبت اطلاعات دستگاه هر کاربر به محض بازکردن برنامه در صورت اتصال به اینترنت 

برای استفاده در پوش شخصی یا آمار نرم افزار ها و .....

 

2-گرفتن تمام مشخصات گوشی و دستگاه های کار بران برنامه

 

3-ارایه آمار بازدید کاربران از برنامه و گرفتن زمان آخرین استفاده از برنامه 

 

4-گرفتن تعداد دفعات استفاده از برنامه و نمایش در بیسیک 4 به کاربر
ویا جهت استفاده در برنامه 

 

پیش نیاز های این موضوع:

1-داشتن هاست و دامنه ( برای ایجاد دیتابیس و ثبت و ذخیره اطلاعات)

2- آشنایی با( ایجاد دیتابیس / یوزر دیتابیس / اتصال یوزر و دیتابیس / انتقال فایل ها به پوشه ای خاص در دیتابیس) در هاست مربوطه

3-اطلاعات لازم در مبحث php 

 

:areuok:  :areuok:  :areuok: لایک فراموش نشه تا در پست بعد قسمت دیتابیس رو شرح بدم  :areuok:  :areuok:  :areuok:  :areuok:

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

در این پست به شرح قسمت php و هاست خواهیم پرداخت 

 

 

شما برای ادامه این آموزش باید یک هاست داشته باشید (( میتونه خریداری شده باشد یا رایگان ))
در داخل هاست یک دیتابیس ایجاد کنید 

در هاست یک یوزر برای دیتابیس ایجاد کنید

یوزر و دیتابیس را به یک دیگر متصل کنید
و در این دیتابیس یک جدول ایجاد کنید

و در این جدول 14 ستون به نامهای زیر قرار دهید

 

دقت کنید ستونid و ستون  use_counters   مقادیر عددی به خود اختصاص میدهند

 

البته 

دیتابیس شما خالی خواهد بود و عکس زیر از آخرین مرحله دیتابیس است که سه دستگاه در آن ثبت شده است

 

http://s1.picofile.com/file/8265094734/%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B34.png

 

 

%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%

 

 

 

:areuok:   :areuok:   :areuok: لایک فراموش نشه تا در پست ادامه رو شرح بدم   :areuok:   :areuok:   :areuok:   :areuok:

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

با توجه به فرضیات شما باید حالا مشخصات زیر رو داشته باشید 
برای وارد کردن به فایل php 

servername = localhost
username = xxxxxxxx
password = yyyyyyyyyyy
databasename = zzzzzzzzzzzzz
اسم جدول ما در این آموزش = app_information هست

شما مشخصات رو در فایل php زیر وارد کنید و همه مراحل گام به گام در این فایل php به فارسی شرح داده شده 

 

کد های php 

<?php
//♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
//مشخصات دیتابی درون هاست/////////////////////////////////////////////
$servername = "localhost";
$username = "xxxxxxxxx";
$password = "yyyyyyyyyyy";
$dbname = "zzzzzzzzzzzz";
//♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
//♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
// داده های ارسال از طرف بیسیک 4 اندروید /////////////////////////
$date = $_POST['date'];
$time = $_POST['time'];
$appname = $_POST['appname'];
$package_name = $_POST['package_name'];
$app_ver = $_POST['app_ver'];
$store_seller = $_POST['store_seller'];
$phone_manufacturer = $_POST['phone_manufacturer'];
$phone_model = $_POST['phone_model'];
$phone_product = $_POST['phone_product'];
$phone_id = $_POST['phone_id'];
$phone_sdkversion = $_POST['phone_sdkversion'];
$version_android = $_POST['version_android'];
//♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
//♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥	
//برای تشخیص حروف فارسی در دیتابیس آنلاین این گزینه رو اضافه میکنیم
mysqli_set_charset($conn,"utf8");
//♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥	

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//♥echo "Connected successfully";
 //اینجا میایم کنترل میکنیم اگر دستگاه شماره سریالش تکراری بود
 // مقدار تاریخ وساعت قدیمی که آخرین اتصالش بوده رو به بیسیک برگردون
 // و بعد 
 // تاریخ و ساعت  جدید رو جایگزین کنترل
 //در صورتی که شماره سریال تکراری نبود یعنی دستگاه جدید هست و بیا همه مشخصات رو در دیتابیس ثبت کن
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
$sql = "SELECT * FROM app_information WHERE phone_id = '$phone_id'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
	
	//♥echo "این دستگاه از قبل نصب شده است";
	//کد زیر مقدار اولین رکورد که سریال تکراری داره رو میگیره و مقادیرش تاریخ و ساعت رو بر میگردونهبه بیسیک 4 برای ما
	
    $myResult = $conn->query("SELECT * FROM app_information WHERE phone_id = '$phone_id' ORDER BY id DESC LIMIT 1")->fetch_assoc();
//♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
// اینجا میایم چون برنامه قبلا ثبت شده 
// مقادیر تاریخ و ساعت قدیمی  رو میفرستیم به بیسیک 
// که در بیسیک به کاربر گزارش کنیم که شما آخرین بار در تاریخ فلان وارد برنامه شدید
//  رو هم ارسال میکنیم که بگیم به مثلا 15 بار از این برنامه اتفاده شدهuse_counters و مقدار 
    echo $myResult["date"]. "#" .$myResult["time"]. "#" .$myResult["use_counters"]; 
//♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥	
	// اینجا مقدار 	$new_use_counters رو تعریف میکنیم
	// میایم use_counters میگیریم 
	// $new_use_counters بهش یکی اضافه میکنیم و میدیم به پارامتر
	$new_use_counters = $myResult["use_counters"] + 1;
//♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥	
//در کد پایین تاریخ و ساعت جدید که از بیسیک رسیده و مقدار جدید 
//$new_use_counters
//رو در دیتابیس آپدیت میکنه و اطلاعات برای استفاده بعدی به روز خواهد شد
	$sql = "UPDATE app_information SET date='$date' , time='$time' , use_counters='	$new_use_counters' WHERE phone_id='$phone_id'";

		if (mysqli_query($conn, $sql)) {
			//♥echo "Record updated successfully";
		} else {
			//♥echo "Error updating record: " . mysqli_error($conn);
		}
		
} else {
	
	$sql = "INSERT INTO app_information (date,time,appname,package_name,app_ver,store_seller,phone_manufacturer,phone_model,phone_product,phone_id,phone_sdkversion,version_android)
	VALUES ('$date','$time','$appname','$package_name','$app_ver','$store_seller','$phone_manufacturer','$phone_model','$phone_Product','$phone_id','$phone_sdkversion','$version_android')";

			if ($conn->query($sql) === TRUE) {
				//♥echo "دستگاه جدید به دیتابیس افزوده شد";
			} else {
				//♥echo "Error: " . $sql . "<br>" . $conn->error;
					}
		}
$conn->close();
?>

:areuok:   :areuok:   :areuok: لایک فراموش نشه  :areuok:   :areuok:   :areuok:   :areuok:

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

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

#Region  Project Attributes 
	#ApplicationLabel: ارسال اطلاعات دستگاه 
	#VersionCode: 1
	#VersionName: 1.arastooms
	'SupportedOrientations possible values: unspecified, landscape or portrait.
	#SupportedOrientations: unspecified
	#CanInstallToExternalStorage: False
#End Region
#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region
Sub Process_Globals
	Dim phone1 As Phone						'پیش فرض در بیسیک موجود است
	Dim phon_id As PhoneId  				' پیش فرض در بیسیک موجود است
	
'این مقادیر به صورت مثال هست و شما می توانید در برنامه مقدار دهی کنید 
	
		Dim version		 As String 			' نیازی نیست به مقدار دهی
		Dim date		 As String  		' نیازی نیست به مقدار دهی
		Dim time		 As String  		' نیازی نیست به مقدار دهی
		Dim phone_manufacturer As String 	' نیازی نیست به مقدار دهی
		Dim phone_model		 As String  	' نیازی نیست به مقدار دهی
		Dim phone_product	 As String  	' نیازی نیست به مقدار دهی
		Dim phone_id		 As String  	' نیازی نیست به مقدار دهی
		Dim phone_sdkversion As String  	' نیازی نیست به مقدار دهی
		Dim version_android	 As String  	' نیازی نیست به مقدار دهی
		
		Dim app_ver		 As Int 	
		Dim package_name As String 	
		Dim appname		As String 	
		Dim store_seller As String 	
End Sub

Sub Globals
'////////////////////////////////////////////////////////////////////////
		Dim AriaAsyncTask1 As AriaAsyncTask
		Dim AriaAsyncTaskDownloader1 As AriaAsyncTaskDownloader
'//////////////////////////////////////////////////////////////////////			
'این مقادیر رو برای برگشت 
'php
'تعریف میکنیم 

	Dim mydate As String 
	Dim mytime As String 
	Dim use_counters As String 
'//////////////////////////////////////////////////////////////////////			
Private Button1 As Button

End Sub

'/////////// arastoo.ms /////// 2016/25/8
'//////////// کپی و انتشار این سورس به هر نحوی و در هر انجمن و سایتی آزاد است 
'// زیرا من فکر میکنم که با انتشار رایگان علم است که پیشرفت حاصل می شود

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("layout_test")
'
'یه لایه تعریف کردیم با یک دکمه ساده 
'که ساب دکمه  همون سابی که باید 
'در ابتدای برنامه آنلاین شما اجرا بشه 
'هر بار که برنامه باز میشه در صورت اتصال به اینترنت 
'بیاد و اطلاعات گوشی رو آپدیت میکنه در دیتابیس شما 

End Sub
'////////////////////////
Sub AriaAsyncTask1_DoInBackground(Params() As Object) As Object
	
Try		
	Dim result As String = AriaAsyncTaskDownloader1.Get(Params(0)).POST(Params(1)).String
'ما در فایل php اومدیم مقادیر ارسال شده تاریخ و ساعت و تعداد اتصال به اینترنت برنامه رو با # از هم جداکردیم و فرستادین اینجا
'خوب حالا باید با دستور ریجکس اون ها رو جدا کنیم
'چون سه مقدار فرستاده شده بود دستور به شکل زیر خواهد بود 

	Dim str() As String = Regex.Split("#",result)
		mydate=str(0 )
		mytime=str(1)
		use_counters=str(2)

	Return "done/موفق"
Catch
	Log(LastException)
	Return "error/نــــاموفق"
End Try
End Sub

Sub AriaAsyncTask1_OnPostExecute(Result As Object)
'Log(LastException)
'Log("-----------------")
'Log(Result)
'Log("-----------------")
'Log(mydate)
'Log(mytime)
'Log(use_counters)
'Log("-----------------")
'اینجا مقادیر که از فایل
'php 
'برگشت داده شده و در ریجکس جداشده 
'را در یک مسیج نمایش می دهیم 
Msgbox("تاریخ : "&mydate&CRLF&"ساعت :"&mytime&CRLF&"تعداد اتصال به اینترنت : "&use_counters,"آخرین اطلاعات تماس")	
End Sub
'////////////////////////

Sub AriaAsyncTask1_OnCancelled
End Sub

Sub AriaAsyncTask1_OnPreExecute
End Sub

Sub AriaAsyncTask1_OnProgressUpdate(Progress As Int)
End Sub
Sub Button1_Click
'//////   مقادیر رو در برنامه با مشخصات دستگاه پُر میکنه   ///////////////////////////////////////////////////////////////////////
all_string
'//////////////////////////////////////////////////////////////////////////////////////////
	AriaAsyncTask1.Initialize("AriaAsyncTask1")
	AriaAsyncTaskDownloader1.Initialize(AriaAsyncTask1)
'//////////////////////////////////////////////////////////////////////////////////////////
	If AriaAsyncTaskDownloader1.IsConnected Then
		
	'//// در خط زیر فقط آدرس فایل php 
	'////که در سایت و هاست خودتون قرار دادید رو بدیید
	'/// آدرس زیر مربوط به هاست شخصی من هست و فعال نیست فقط برای تست استفاده میشه
	'////http://tablet-group.ir/test_arastoo_login/
	'/// information8.php  هست  php  و اسم فایل 
	 
	 AriaAsyncTask1.Run(Array As String("http://tablet-group.ir/test_arastoo_login/information8.php","date="&date&"&time="&time&"&appname="&appname&"&package_name="&package_name&"&app_ver="&app_ver&"&store_seller="&store_seller&"&phone_manufacturer="&phone_manufacturer&"&phone_model="&phone_model&"&phone_product="&phone_product&"&phone_id="&phone_id&"&phone_sdkversion="&phone_sdkversion&"&version_android="&version_android))	
	Else
	ToastMessageShow("disconnected",False)
	End If
'//////////////////////////////////////////////////////////////////////////////////////////////
End Sub															   
'////////////////////////
#Region تنظیمات و اختصاص مقادیر و داده ها ی دستگاه به پارامتر ها
Sub all_string

	 app_ver = 6 
	 package_name  = "arastoo.m.s.ir"  
	 store_seller  = "google play" 
	 appname 		= "ارسال اطلاعات"
	 
	 phone_manufacturer = phone1.Manufacturer
	 phone_model 		= phone1.Model
	 phone_product 		= phone1.Product
	 phone_id 			= phon_id.GetDeviceId
	 phone_sdkversion	= phone1.SdkVersion	
		Version1
	 version_android 	= version
	 date				= DateTime.Date(DateTime.Now)
	 time 				= DateTime.Time(DateTime.Now)
'
'♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
'♥♥♥♥   log کنترل مقادیر در     ♥♥♥♥♥♥♥♥
'♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
Log ("date="&date )								'♥
Log ("time="&time )								'♥
												'♥
Log ("appname="&appname )						'♥
Log ("package_name="&package_name )				'♥
Log ("app_ver="&app_ver )						'♥
Log ("store_seller="&store_seller )				'♥
												'♥
Log ("phone_manufacturer="&phone_manufacturer )	'♥
Log ("phone_model="&phone_model )				'♥
Log ("phone_product="&phone_product )			'♥
Log ("phone_id="&phone_id )						'♥
Log ("phone_sdkversion="& phone_sdkversion)		'♥
Log ("version_android="&version_android )		'♥
'♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
End Sub
Sub Version1 
	
	If phone1.SdkVersion="19" Then
	version="4.4.2"
	else If phone1.SdkVersion="18" Then
	version="4.3"
	else If phone1.SdkVersion="17" Then
	version="4.2.2"
	else If phone1.SdkVersion="16" Then
	version="4.1.2"
	else If phone1.SdkVersion="15" Then
	version="4.0.3"
	else If phone1.SdkVersion="14" Then
	version="4.0"
	else If phone1.SdkVersion="13" Then
	version="3.2"
	else If phone1.SdkVersion="12" Then
	version="3.1"
	else If phone1.SdkVersion="11" Then
	version="3.0"
	else If phone1.SdkVersion="10" Then
	version="2.3"
	else If phone1.SdkVersion="9" Then
	version="2.3.3"
	else If phone1.SdkVersion="8" Then
	version="2.2"
	else If phone1.SdkVersion="7" Then
	version="2.1"
	else If phone1.SdkVersion="4" Then
	version="1.6"
	else If phone1.SdkVersion="3" Then
	version="1.5"
	else If phone1.SdkVersion="21" Then
	version="5.0"
	else If phone1.SdkVersion="20" Then
	version="4.4.4"
	else If phone1.SdkVersion="22" Then
	version="5.1.1"
	else If phone1.SdkVersion="23" Then
	version="6.0-6.0.1"
	else If phone1.SdkVersion>"23" Then
	version="bozorgtar-az-6"
	else If phone1.SdkVersion<"3" Then
	version="kuchektar-az-1.5"
	End If
	
End Sub
#End Region
'///////////////////////////
Sub Activity_Resume

End Sub
Sub Activity_Pause (UserClosed As Boolean)

End Sub


:areuok:   :areuok:   :areuok: لایک فراموش نشه   :areuok:   :areuok:   :areuok:   :areuok:

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

امید وارم از اولین آموزش من خوشتون اومده باشه 
این هم فایل های برنامه 

فایل php 

http://s2.picofile.com/file/8265098926/information.php.html

 

فایل بیسیک برنامه 

http://s1.picofile.com/file/8265099076/information_user_b4a_php.zip.html

 

فیل apk سورس

 

http://s2.picofile.com/file/8265099318/information_user.apk.html

 

 

:areuok:   :areuok:   :areuok:  لایک قشنگه یادتون نره   :areuok:   :areuok:   :areuok:   :areuok:

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

  • 1 ماه بعد...

درود بر شما

 

برای من ایراد میگیره

 

تیبل رو درست کردم و طبق توضیحات رفتم جلو.... ادرس فایل php رو هم به برنامه دادم.....

ولی ایراد گرفت

 

photo_2016-10-20_11-12-02.jpg

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

سلام من دیتابیس رو از روی سایتم حذف کردم 
پس مطمعناً باید آدرس دیتابیس خودتون رو بدید به برنامه 
اگر مشکل داشتید هنوز قسمت آدرس دیتابیس خودتون رو به برنامه کنترل کنید 
و یا کد هاتون رو قرار بدید تا راهنمایی کنم 
موفق باشید

 

این آدرس رو باید نسبت به هاست خودتون و به اسم فایل php قرار داده شده در هاست خودتون عوض کنید 

http://tablet-group.ir/test_arastoo_login/information8.php"
لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...