رفتن به مطلب
  • 0

دریافت اطلاعات کاربر از دیتابیس انلاین


mja89

سوال

با سلام خدمت دوستان

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

دوستان بنده تو نرم افزارم امکان ثبت نام رو قرار دادم و همه چیز اوکی هست.

برای قسمت ورود هم کد php و کدهای بیسیک رو نوشتم و درست عمل میکنه بدون هیچ مشکلی.

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

البته نحوه ذخیره کردن تو دیتابیس افلاین اوکی هست و مشکلی نیست مشکل کار من سورس php صحیح برای گرفتن اطلاعات فیلد کاربر با توجه به نام کاربریش هست که با جیسون همخوانی داشته باشه و تو بیسیک خطا نده.

خودم از این سورس php استفاده میکنم  که متاسفانه تو بیسیک خطا میده :

<?php
    $databasehost = "Domain.ir";
    $databasename = "user";
    $databaseusername ="";
    $databasepassword = "";
    
        $con = mysqli_connect($databasehost,$databaseusername,$databasepassword) or die(mysqli_error($con));
        mysqli_select_db($con,$databasename) or die(mysqli_error($con));
        mysqli_query($con,"SET CHARACTER SET utf8");

        $query = file_get_contents("php://input");
        $res = mysqli_query($con, $query);

            $rows = array();
            
        while ($r = mysqli_fetch_assoc($res)) {
          $rows[] = $r;
         }

         $result = json_encode($rows);
            echo $result;
 ?>

 همچنین توی بیسیک هم از این کد استفاده کردم :

phone_txt = File.ReadString(File.DirInternal,"phone_txt.txt")
			Dim j As HttpJob
			j.Initialize("",Me)
			j.PostString("http:/Domain.ir/user/get_user.php","SELECT * FROM tbl_user WHERE phone="&phone_txt)
				Wait For (j) JobDone(j As HttpJob)
					If j.Success Then
						ProgressDialogHide
						Dim res As String
						res = j.GetString
						Dim parser As JSONParser
						parser.Initialize(res)
						Dim dat As List
						dat = parser.NextArray /// داخل بیسیک اینجا خطا میده و میگه :
												////java.lang.RuntimeException: JSON Array expected.
						For i = 0 To dat.Size -1
						Dim m As Map
						m = dat.Get(i)
							NameFamily = m.Get("username"
							phone = m.Get("phone")
							Email = m.Get("email")
							pass = m.Get("pass")
							ProfileUrl = m.Get("profilurl")
						Next
						
Dim C4 As Cursor
C4 = Main.sql1.ExecQuery("UPDATE tbl_profile SET Name_Family = '"& NameFamily &"',Phone = '"& phone_txt &"',Email = '"& Email &"',Pass = '"& pass &"',Profile_Url = '" & ProfileUrl &"' ")
							C4.Position = 0
							C4.Close
						
						Else
							log(j.error)
						End If

خطایی که میده رو بالا با //// مشخص کردم.

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

همچنین بنا به دلایلی فقط میتونم از کتابخانه okhttpuntils2 استفاده کنم در حالی که Persian fast network رو هم خریدم اما باگ داره و متاسفانه پاسخی از جناب شاهپیری نگرفتم و مجبور شدم تمام کد ها رو مجدد عوض کنم و با همین httpuntils2  انجام بدم.

پس ممنون میشم فقط با این کتابخانه راه حل رو ارائه بدید

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

10 پاسخ به این سوال تاکنون داده شده است

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

در 9 ساعت قبل، mja89 گفته است :

$query = file_get_contents("php://input");

query شما مشخص نیست؟

مثال

$query = "SELECT * FROM TBL_USERS WHERE id = $id";

مقدار $id رو شما براش می فرستید و مقادیر همون کاربر رو بهتون نشون میده

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

اصلا

در 5 ساعت قبل، abdgod گفته است :

query شما مشخص نیست؟

مثال


$query = "SELECT * FROM TBL_USERS WHERE id = $id";

مقدار $id رو شما براش می فرستید و مقادیر همون کاربر رو بهتون نشون میده

بحث من نحوه پیدا کردن کاربر نیست دوست عزیز  :

$query = file_get_contents("php://input")

این قطعه کد همون چیزی که شما میگید رو انجام میده و منظورش اینه کوئری رو از ادرس php بگیر که توی بیسیک مشخص کردم منظورم اینجاس :

http:/Domain.ir/user/get_user.php","SELECT * FROM tbl_user WHERE phone="&phone_txt

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

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

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

در ضمن توی کدهاتون دو تا for دارید ولی یه دونهnext داری فکر کنم ایراد اونجاست

زیر کدی که خطا میده یه next بنویس

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

در 4 ساعت قبل، msd313 گفته است :

سلام بله میدونم؛ سوالی هست در خدمتم؟؟

خیلی ممنون؛ ولی میخواستم دوستمون که سوال کردن رو راهنمایی کنم؛قبلش خواستم بدونم در چه حد بلدن و از کجا راهنمایی رو شروع کنم

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

در در 1397/10/01, 14:49:01، msd313 گفته است :

در ضمن توی کدهاتون دو تا for دارید ولی یه دونهnext داری فکر کنم ایراد اونجاست

زیر کدی که خطا میده یه next بنویس

داداش او for که شما میگید Wait For هست و کارائیش فرق داره و نیازی به next نداره.

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

 

در 3 ساعت قبل، davoodebrahimi گفته است :

خیلی ممنون؛ ولی میخواستم دوستمون که سوال کردن رو راهنمایی کنم؛قبلش خواستم بدونم در چه حد بلدن و از کجا راهنمایی رو شروع کنم

اره با لاگین مشکلی ندارم و انجام میشه فقط یه صفحه دارم واسه گرفتن اطلاعات کاربر که بتونه ویرایش شون کنه اونجا گیر کردم قبلا انجامش داده بودم الان نمیدونم چیه با همون کدهای قبلی روی:

JsonArray توی بیسیک گیر میده میخوام کد php  رو جوری در بیارم که نیازی به ارایه نداشته باشه چون متعاقبا یه دونه کاربر بیشتر نیست و اطلاعات نیازی نیست تو حلقه قرار بگیره 

هم کدای php و هم کدای بیسیکش رو میخواستم

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

در در 1397/10/02, 17:52:59، mja89 گفته است :

 

اره با لاگین مشکلی ندارم و انجام میشه فقط یه صفحه دارم واسه گرفتن اطلاعات کاربر که بتونه ویرایش شون کنه اونجا گیر کردم قبلا انجامش داده بودم الان نمیدونم چیه با همون کدهای قبلی روی:

JsonArray توی بیسیک گیر میده میخوام کد php  رو جوری در بیارم که نیازی به ارایه نداشته باشه چون متعاقبا یه دونه کاربر بیشتر نیست و اطلاعات نیازی نیست تو حلقه قرار بگیره 

هم کدای php و هم کدای بیسیکش رو میخواستم

سلام مجدد

خب وقتی این ارور رو میده شما توی php به اسم ستون ها و  تعداد درست براکت ها { } و سمی کالن ها : دقت کنید.وقتی لاگین انجام میشه توی php حتما یه حالت برگشتی گذاشتی به کاربر یه توستی چیزی بده,شما بیا در ادامه کدات در صورتی که موفقیت آمیز بود کوئری سلکت رو با شرط نام کاربری کاربر بنویس؛اونطوری بعد از لاگین شدن راحت میتونین اطلاعات کاربری کاربر رو در برگشت بگیرین.

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

      Dim jsn As JSONParser
      jsn.Initialize(job.GetString)
      Dim mylist As List=jsn.NextArray
      Dim map1 As Map=mylist.get(0)

   

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

dim user_name as string = map1.get("user_name")
dim phone_number as int = map1.get("phone_number")

*داخل پرانتز اسم ستون ها نوشته میشه

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

بایگانی شده

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

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

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