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

درخواست کمک ارتباط با سرور آنلاین در B4A


sedat

سوال

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

 آموزش و  عکس خطا رو میزارم

دوستان کمک کنید

1508651336289818_large.jpg

لطفا کمک کنید

**********************************************************

آموزش:

  • به هاست مراجعه کردم و دیتابیس خودم را با نام beporsam_b4a ساختم، سپس به phpmyadmin مراجعه میکنم تا جدول مورد نظرم را بسازم.
  • در محیط phpmyadmin روی نام دیتابیس کلیک و یک جدول با ۳ ستون می سازیم(id,username,password).

create-table.png

 

جدولی با فیلدهای id,username,password می سازیم، که فیلد id از نوع INT و فیلدهای username و password از نوع Text هستند.

save-table.png

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

  • و در نهایت دیتابیسی به نام beporsam_b4a و جدولی به نام b4a_register با سه فیلد id,username,password ساختیم.

view-table.png

کدهای php برای انجام عملیات ثبت نام(موضوع برنامه ثبت نام است)
 

<?php
    $conn = mysql_connect('localhost' , 'beporsam_b4a' , '12345');
    
    mysql_select_db('beporsam_b4a',$conn);
    mysql_set_charset('utf8');

    $username=$_POST['username'];
    $password=$_POST['password'];
    
    if($conn){
        $result = "INSERT INTO b4a_register(username,password) VALUES('$username','$password')";
        
        if(mysql_query($result)){
            
            echo "Done";
            
        }else{echo "Error";}
    }
 ?>

********************************************

در b4a

  • بیسیک فور اندروید را اجرا کنید و ذخیره کنید.
  • به دیزاینر رفته و دوتا EditText و دوتا Label و یک Button ایجاد کنید.
  • designer.png

ide.png

httputils.png

	#ApplicationLabel: B4A_register
	#VersionCode: 1
	#VersionName: 
	'SupportedOrientations possible values: unspecified, landscape or portrait.
	#SupportedOrientations: unspecified
	#CanInstallToExternalStorage: False
#End Region
 
#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region
 
 
Sub Globals
	Private text_pass As EditText
	Private text_user As EditText
	Private btn_register As Button
	Dim ht As HttpJob
End Sub
 
Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("lmain")
	ht.Initialize("register",Me)
End Sub
 
Sub Jobdone (job As HttpJob)
	If job.Success = True Then
		Msgbox(job.GetString,"Success")
	Else
		ToastMessageShow("خطا در برقراری اتصال" , False)
	End If
End Sub
 
 
Sub btn_register_Click
	Dim send As String
	send = "username="&text_user.Text&"&password="&text_pass.Text
	ht.PostString("https://beporsam.ir/register.php",send)
End Sub
در قسمت Sub btn_register_Click

در خط ۲ یک متغیر به نام send از نوع رشته برای ارسال مقادیر تعریف کردیم.

در خط ۳ مقدار text_user را برابر username و مقدار text_password را برابر password قرار دادیم.

در خط ۴ هم چون مقادیر ارسالی از نوع متنی هست یک ht.PostString تعریف و آدرس فایل Register.php و متغیر send را بهش دادیم.

*********************************************

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

در اکتویتی اول دکمه ای قراردهید که با کلیک روی دکمه به اکتویتی دوم بریم.

new-buttun.png

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

Sub Process_Globals
	 Dim ht2 As HttpJob
End Sub
Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("lr")
	ht2.Initialize("read",Me)
	ht2.PostString("https://beporsam.ir/b4a/readdata.php","")
End Sub
Sub JobDone (job As HttpJob)
	If job.Success=True Then
		If job.JobName="read" Then
			ProgressDialogHide
			Label1.Text=ht2.GetString
		End If
	Else 
		ToastMessageShow("خطا در برقرای اتصال",False)
	End If
End Sub

کدهای PHP برای فراخوانی اطلاعات از دیتابیس:

<?php

	$conn = mysql_connect('localhost','نام دیتابیس','رمز عبور دیتابیس');
	
	mysql_select_db('نام دیتابیس',$conn);
	mysql_set_charset('utf8');
	
	$q="SELECT * FROM نام جدول";
	$res1=mysql_query($q);
	$res2=mysql_fetch_array($res1);
	
	
	if($res2){
			echo $res2[1];	
	}
	else
	{
		echo "Error";
	}
?>

 

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

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

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

در در 1396/08/01, 00:29:43، محمدرضا شاهپیری گفته است :

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

کدها هم به صورت زیره تبدیلشون.


<?php
     
    $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");

    $username=$_POST['username'];
    $password=$_POST['password'];
  
        $result = "INSERT INTO b4a_register(username,password) VALUES('$username','$password')";
        
        if(mysqli_query($con,$result);){
            
            echo "Done";
            
        }else{
        echo "Error";
    }
 ?>

 

آقای شاهپیری

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

رمزوپسورد به عنوان مثاله مثلا با زدن ذخیره ، رمز و پسورد بر روی دیتابیس آنلاین ذخیره بشه

ضمنا این کدها خطا داره

ممنون

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

کدها موردی نداره عزیز. شما مقادیر هاست خودتون رو توی فایل php که دادم بزارید(databasehost,$databaseusername,$databasepassword$). اگه با سرور آشنایی ندارید حتما اول آموزشهای مقدماتی رو ببینید حداقل. چون سرور واقعا پیچیده اس. و حتما باید آموزشهای لازم رو ببینید.

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

در 1 ساعت قبل، محمدرضا شاهپیری گفته است :

کدها موردی نداره عزیز. شما مقادیر هاست خودتون رو توی فایل php که دادم بزارید(databasehost,$databaseusername,$databasepassword$). اگه با سرور آشنایی ندارید حتما اول آموزشهای مقدماتی رو ببینید حداقل. چون سرور واقعا پیچیده اس. و حتما باید آموزشهای لازم رو ببینید.

شرمنده

من همرو تغییر دادم به اطلاعات خودم اما پسوردو نمیشه با $ زد، خطا میده و من به این صورت '12345' وارد کردم و در قسمت دیتابیس هاست،local host$ قراردادم

با تغیراتی که خودم دادم کد جواب داد اگر این خط کدو

 if(mysqli_query($con,$result);

به این صورتی که شما گفتین وارد کنم مسیج باکس ارور نمایش میده، وقتی به صورت زیر تغییر میدم پیغم done میاد اما در دیتابیس چیزی وارد نمیشه

 if(mysqli_query>=($result);

به نظرتون مشکل چیه؟

لینکه آموزشی خوبی میتونی معرفی کنی؟

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

در 8 ساعت قبل، sedat گفته است :

شرمنده

من همرو تغییر دادم به اطلاعات خودم اما پسوردو نمیشه با $ زد، خطا میده و من به این صورت '12345' وارد کردم و در قسمت دیتابیس هاست،local host$ قراردادم

با تغیراتی که خودم دادم کد جواب داد اگر این خط کدو


 if(mysqli_query($con,$result);

به این صورتی که شما گفتین وارد کنم مسیج باکس ارور نمایش میده، وقتی به صورت زیر تغییر میدم پیغم done میاد اما در دیتابیس چیزی وارد نمیشه


 if(mysqli_query>=($result);

به نظرتون مشکل چیه؟

لینکه آموزشی خوبی میتونی معرفی کنی؟

سلام

برای اون مورد $ بجا کتیشن دابل کتیشن بذار 

برای مورد دوم که تغییر دادی به این صورت تغییر بده 

if(mysql_query($result);

بالا گفتم از mysqli باید به صورت شی استفاده بشه این نوع تستفاده غیر اصولیه

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

در در 1396/08/14, 20:08:48، حسن قاسمی نیا گفته است :

سلام

برای حذف اون پسوند text بجای این کد :


$sql = "INSERT INTO b4a_register SET username='". $_POST['username'] ."', password='". $password ."'";

که تو کدای بالا هست که برات فرستادم بجای دستور sql بالا اینو بذار :


$sql = "INSERT INTO b4a_register SET username='". str_replace('.text', '', $_POST['username']) ."', password='". str_replace('.text', '', $password) ."'";

تو دیتابیس دیگه text ذخیره نمیشه

برای مورد بعدیت برای پشت سر هم نشون ندادن شما باید json کنی اطلاعات رو و با jaon درون حلقه نمایش بدی که مدیریت داشته باشی

 

 

 

چطور میشه آخرین آی دی در هاستو در بیسیک چاپ کرد

در کدای هاست مشکل دارم

<?php
header('Content-Type: text/html; charset=utf-8');

$servername = "localhost";
$username = "maskan4a";
$password = "037";
$dbname = "masa";
	$conn = mysqli_connect($servername , $username , $password, $dbname);
    mysqli_query($conn,"SET NAMES 'utf8'");
    mysqli_query($conn,"SET CHARACTER SET 'utf8'");
    mysqli_query($conn,"SET character_set_connection = 'utf8'");
    
    if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

 $sql="SELECT * FROM b4_rter";

if ($conn->query($sql) === TRUE) {
    $last_id = $conn->insert_id;
    echo "New record created successfully. Last inserted ID is: " . $last_id;
}
else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>

 

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

در در 1396/07/30, 23:43:14، sedat گفته است :

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

اگر براتون ممکنه این چند خطو به mysqli تبدیل کنید

ممنون


<?php
    $conn = mysql_connect('localhost' , 'beporsam_b4a' , '12345');
    
    mysql_select_db('beporsam_b4a',$conn);
    mysql_set_charset('utf8');

    $username=$_POST['username'];
    $password=$_POST['password'];
    
    if($conn){
        $result = "INSERT INTO b4a_register(username,password) VALUES('$username','$password')";
        
        if(mysql_query($result)){
            
            echo "Done";
            
        }else{echo "Error";}
    }
 ?>

 

اینم تبدیلش :

<?php
	$conn = new mysqli("localhost", "beporsam_b4a", "pass", "beporsam_b4a");
	if ($conn->connect_error) {
		die("Connection failed: " . $conn->connect_error);
	}
	$sql = "INSERT INTO b4a_register SET username='". $_POST['username'] ."', password='". $password ."'";
	if ($conn->query($sql) === TRUE) {
		echo "Done";
	} else {
		echo "Error";
	}
	$conn->close();
?> 

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

اگه خطا داشتی متن خطا بذار نحوه رفعشو بهت بگم :give_heart:

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

سلام

شما به این صورت می تونید اخرین رکورد دیتابیستون رو بگیرید، حالا میخواید ایدی و یا هر فیلدی رو چاپ کنید »



SELECT *  FROM table_name ORDER BY id DESC LIMIT 1

 

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

در 8 ساعت قبل، مجید آرتا گفته است :

سلام

شما به این صورت می تونید اخرین رکورد دیتابیستون رو بگیرید، حالا میخواید ایدی و یا هر فیلدی رو چاپ کنید »




SELECT *  FROM table_name ORDER BY id DESC LIMIT 1

 

اینو نشون میده

Error: SELECT * FROM b4_rter ORDER BY id DESC LIMIT 1

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

در در 1396/08/03, 17:10:58، حسن قاسمی نیا گفته است :

اینم تبدیلش :


<?php
	$conn = new mysqli("localhost", "beporsam_b4a", "pass", "beporsam_b4a");
	if ($conn->connect_error) {
		die("Connection failed: " . $conn->connect_error);
	}
	$sql = "INSERT INTO b4a_register SET username='". $_POST['username'] ."', password='". $password ."'";
	if ($conn->query($sql) === TRUE) {
		echo "Done";
	} else {
		echo "Error";
	}
	$conn->close();
?> 

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

اگه خطا داشتی متن خطا بذار نحوه رفعشو بهت بگم :give_heart:

دمت گرم

خودم انقدر تغییردادم درست شد

مشکل جدیدم اینه که

1-وقتی از دیتابیس چیزی پاک میکنی (مثلا آی دی 10 پاک کردم) وقتی دوباره چیزی ثبت میکنی آی دی 10 پر نمیکنه از ادامه پر میکنه

2- وقتی اطلاعاتو از دیتابیسه آنلاین میخونه تنو نمایش میده ولی  همشونو با .text نمایش میده1509029165845014_large.jpg

مشکلش چیه؟

 

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

در 15 ساعت قبل، sedat گفته است :

دمت گرم

خودم انقدر تغییردادم درست شد

مشکل جدیدم اینه که

1-وقتی از دیتابیس چیزی پاک میکنی (مثلا آی دی 10 پاک کردم) وقتی دوباره چیزی ثبت میکنی آی دی 10 پر نمیکنه از ادامه پر میکنه

2- وقتی اطلاعاتو از دیتابیسه آنلاین میخونه تنو نمایش میده ولی  همشونو با .text نمایش میده1509029165845014_large.jpg

مشکلش چیه؟

 

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

2- اون پسوند text خودت یجا دستی دادی یا تو php یا تو b4a نگاه کن ببین کجا دادی وگرنه اصلا همچین چیزی قابل درک نیست برای محتوا دیتابیس پسوند بذاره

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

در در 1396/08/20, 16:42:13، sedat گفته است :

اینو نشون میده

Error: SELECT * FROM b4_rter ORDER BY id DESC LIMIT 1

سلام،

کوئری هیچ گونه مشکلی نداره دوست عزیز.

کدی رو که نوشتید قرار بدید.

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

در 4 ساعت قبل، حسن قاسمی نیا گفته است :

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

2- اون پسوند text خودت یجا دستی دادی یا تو php یا تو b4a نگاه کن ببین کجا دادی وگرنه اصلا همچین چیزی قابل درک نیست برای محتوا دیتابیس پسوند بذاره

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

	Dim send As String
	send = "na="&EditText4.Text&"&ta="&EditText5.Text&"&m="&EditText1.Text&"&mag="&EditText2.Text&"&ba="&Spinner1.SelectedItem&"&ma="&Spinner2.SelectedItem&"&mas="&Spinner3.SelectedItem&"&mab="&EditText3.Text

 طبق گفته شما بررسی کردم، من برای ادیت تکست ها ،.Text گذاشتم اما برای اسپینر ها که .SelectedItem گذاشتم پس چرا برای اسپینر ها هم تو جدول و در متن .Text میزاره؟

ضمنا این اطلاعات رو لبل خونده شده ولی هرکاری کردم رو لیست ویو نمیشه شما راهی نمیدونید؟

 

با چه کدی میتونم .text از خونه های دیتابیس پاک کنم؟

1509050698945250_large.jpg

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

مشکل شما با اتصال از طریق mysql هست که یک سالی میشه منسوخ شده وسرور ها از این ارتباطی پشتیبانی نمیکنن شما یا از mysqli استفاده کن یا از pdo. یا class db آموزش استفاده از هرسه به مقدار زیاد در نت موجود هست جستجو کنید 

 

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

سلام

برای حذف اون پسوند text بجای این کد :

$sql = "INSERT INTO b4a_register SET username='". $_POST['username'] ."', password='". $password ."'";

که تو کدای بالا هست که برات فرستادم بجای دستور sql بالا اینو بذار :

$sql = "INSERT INTO b4a_register SET username='". str_replace('.text', '', $_POST['username']) ."', password='". str_replace('.text', '', $password) ."'";

تو دیتابیس دیگه text ذخیره نمیشه

برای مورد بعدیت برای پشت سر هم نشون ندادن شما باید json کنی اطلاعات رو و با jaon درون حلقه نمایش بدی که مدیریت داشته باشی

 

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

در 1 ساعت قبل، حسن قاسمی نیا گفته است :

سلام

برای حذف اون پسوند text بجای این کد :


$sql = "INSERT INTO b4a_register SET username='". $_POST['username'] ."', password='". $password ."'";

که تو کدای بالا هست که برات فرستادم بجای دستور sql بالا اینو بذار :


$sql = "INSERT INTO b4a_register SET username='". str_replace('.text', '', $_POST['username']) ."', password='". str_replace('.text', '', $password) ."'";

تو دیتابیس دیگه text ذخیره نمیشه

برای مورد بعدیت برای پشت سر هم نشون ندادن شما باید json کنی اطلاعات رو و با jaon درون حلقه نمایش بدی که مدیریت داشته باشی

 

ممنون

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

بازم ممنون

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

سلام

شما میدونید چطور از دیتابیس آنلاین بر روی لیست ویو بخونم

الان همه ستونها و سطرها رو پشت سر هم میخونه

 

1509029165845014_large.jpg

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

در 11 ساعت قبل، حسن قاسمی نیا گفته است :

مشکل شما با اتصال از طریق mysql هست که یک سالی میشه منسوخ شده وسرور ها از این ارتباطی پشتیبانی نمیکنن شما یا از mysqli استفاده کن یا از pdo. یا class db آموزش استفاده از هرسه به مقدار زیاد در نت موجود هست جستجو کنید 

 

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

اگر براتون ممکنه این چند خطو به mysqli تبدیل کنید

ممنون

<?php
    $conn = mysql_connect('localhost' , 'beporsam_b4a' , '12345');
    
    mysql_select_db('beporsam_b4a',$conn);
    mysql_set_charset('utf8');

    $username=$_POST['username'];
    $password=$_POST['password'];
    
    if($conn){
        $result = "INSERT INTO b4a_register(username,password) VALUES('$username','$password')";
        
        if(mysql_query($result)){
            
            echo "Done";
            
        }else{echo "Error";}
    }
 ?>

 

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

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

کدها هم به صورت زیره تبدیلشون.

<?php
     
    $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");

    $username=$_POST['username'];
    $password=$_POST['password'];
  
        $result = "INSERT INTO b4a_register(username,password) VALUES('$username','$password')";
        
        if(mysqli_query($con,$result);){
            
            echo "Done";
            
        }else{
        echo "Error";
    }
 ?>

 

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

در 11 ساعت قبل، sedat گفته است :

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

اگر براتون ممکنه این چند خطو به mysqli تبدیل کنید

ممنون


<?php
    $conn = mysql_connect('localhost' , 'beporsam_b4a' , '12345');
    
    mysql_select_db('beporsam_b4a',$conn);
    mysql_set_charset('utf8');

    $username=$_POST['username'];
    $password=$_POST['password'];
    
    if($conn){
        $result = "INSERT INTO b4a_register(username,password) VALUES('$username','$password')";
        
        if(mysql_query($result)){
            
            echo "Done";
            
        }else{echo "Error";}
    }
 ?>

 

سلام من با گوشی هستم با لپ تاپ هر زمان اومدم قرار میدم. از mysqli به صورت شی استفاده کنید دوست عزیزمون آقای شاهپیری تبدیل کردن اما به صورت ساده که این روشم در حال منسوخ شدن هست 

بعد اطلاعات دیتابیس هم تو انجمن ها قرار ندید نمیشه باهاش وارد پنلتون شد ولی از طریق برنامه هایی مثل هویج یا مشابه میشه sql برای دیتابیستون اجرا کرد 

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

بایگانی شده

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

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

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