رفتن به مطلب

سرچ در دیتابیس آنلاین


arastooms

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

با سلام به همه اساتید عزیز 
با توجه به اینکه من بسیار بسیار مبتدی هستم در زمینه php نیاز به کمک و راهنمایی اساتید دارم در زمینه زیر 

 

داده های مسئله : :malih: 
من با بیسیک 4 کار میکنم 

یک هاست داریم و یک دیتابیس با یوزر و ... 

یک جدول 5 ستونی در دیتابیس داریم 

نام دیتابیس masterdb

نام جدول tbl1

نام ستونها  id / name / famil /codemeli/tel

 

خوب اومدم دربیسیک این مقادیر رو از کاربر میگیرم و با دستور و کتابخانه okhttputils2  ورژن 2و20

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

با این دستور 

jobadd.PostString("http://xxx.ir/xxxxx/xxxxxxxxxx.php","name="&name&"&famil="&famil&"&tel="&tel&"&codemeli="&codemeli)
 

حالا مشکل اینجاست

:sorry:  :sorry:  :sorry:  :sorry:  :sorry:  :sorry:

در دیتابیس باید کنترل کنم که اگر "" کد ملی "" codmeli 
تکراری بود 2تا کار انجام بده 

1-مقادریر مربوط به کد ملی تکراری رو  برگردونه به بیسیک با مشخصات موجود اون کد تکراری که من بتونم به کاربرم نشون بدم

مثلا بگم در یک مسیج 

این کد ملی قبلا به نام ..... و فامیل ..... و تلفن ...... ثبت شده است!

و دوم 

2- دیگه در دیتابیس ثبتش نکنه 

 

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


$con = mysql_connect("localhost","xxxxxxx","xxxxxxx");
mysql_query("SET character_set_results=utf8,character_set_client=utf8,character_set_connection=utf8, character_set_database=utf8,character_set_server=utf8",$con);
mysql_select_db("xxxxxxxxxxx", $con);

mysql_query("SET CHARACTER SET utf8;");
mysql_query("SET SESSION collation_connection = 'utf8_persian_ci'");
///////////////////////////

$name = $_POST['name'];
$famil = $_POST['famil'];
$tel = $_POST['tel'];
$codmeli = $_POST['codmeli'];

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

mysql_query("INSERT INTO tbl1 (name,famil,tel,codmeli) VALUES ('$name','$famil','$tel','$codmeli')");
لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام دادا خوبی؟

چه خبر؟  :DD:

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

ببین :

زمانی که کلیک انجام میشه کلا بیا یک php جداگونه رو اجرا کن مخصوص سرچ !

<?php
$con = mysql_connect("localhost","bupir_user","basic4android.org");

mysql_query("SET character_set_results=utf8,character_set_client=utf8,character_set_connection=utf8, character_set_database=utf8,character_set_server=utf8",$con);

mysql_select_db("bupir_dblearn", $con);
$Search= $_POST['family'];
$izadi = mysql_query("SELECT * FROM izadi WHERE family='".$Search."'");
$result = mysql_fetch_array($izadi);
echo $result['id']. "#" .$result['name']. "#" .$result['family']."<br>";
mysql_close($con);
?>

حالا من توی کد بالا اومدم family رو search کردم... تو بیا کد ملی رو سرچ کن

بگو خب !

گفتی؟

آفرین حالا توی برنامت بیا توی Button_Click که میخواد اطلاعات پست بشه اول فقط و فقط search = code melli رو post کن

بعد توی jobDone شرط بزار :

if job.GetString.Contains)"##")

یعنی خالی بود خلاصه !

خب این یعنی اینکه کد ملی پیدا نشده و قبلا ثبت نشده

در غیر این صورت اگر

job.GetString.Contains("code melli")

بود ... خب یعنی کد ملی قبلا ثبت شده

پس توی خط بعدش میایی خط زیر رو میزنی که post انجام بشه :

jobadd.PostString("http://xxx.ir/xxxxx/xxxxxxxxxx.php","name="&name&"&famil="&famil&"&tel="&tel&"&codemeli="&codemeli)

در همین حد بلد هستم و 100% هم کارت راه میوفته

حالا روش های حرفه ای و ... دیگه باید اساتید php و ... بیان جواب بدن  :DD: 

 

موفق باشید

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

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

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

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

سلام ارسطو جان

با mysqli کار کن به نظرم ، جالب تره

<?php
/**
 * Created by PhpStorm.
 * User: shahab
 * Date: 8/23/2016
 * Time: 10:44 AM
 */
$con = mysqli_connect('localhost','username','pass','dbname');
mysqli_set_charset($con,"utf8");
$name = $_POST['name'];
$famil = $_POST['famil'];
$tel = $_POST['tel'];
$codmeli = $_POST['codmeli'];
if($con->query("SELECT * FROM tbl1 WHERE codmeli = '$codmeli'")->num_rows > 0){
    $result = $con->query("SELECT * FROM tbl1 WHERE codmeli = '$codmeli'")->fetch_assoc();
    echo $result["id"]."#".$result["name"]."#".$result["famil"]."#".$result["tel"]."#".$result["codmeli"];
}else{
    if($con->query("INSERT INTO tbl1 (name,famil,tel,codmeli) VALUES ('$name','$famil','$tel','$codmeli')")===true){
        echo  "done";
    }
}
?>
لینک ارسال
به اشتراک گذاری در سایت های دیگر

با mysqli کار کن به نظرم ، جالب تره

<?php/** * Created by PhpStorm. * User: shahab * Date: 8/23/2016 * Time: 10:44 AM */$con = mysqli_connect('localhost','username','pass','dbname');mysqli_set_charset($con,"utf8");$name = $_POST['name'];$famil = $_POST['famil'];$tel = $_POST['tel'];$codmeli = $_POST['codmeli'];if($con->query("SELECT * FROM tbl1 WHERE codmeli = '$codmeli'")->num_rows > 0){    $result = $con->query("SELECT * FROM tbl1 WHERE codmeli = '$codmeli'")->fetch_assoc();    echo $result["id"]."#".$result["name"]."#".$result["famil"]."#".$result["tel"]."#".$result["codmeli"];}else{    if($con->query("INSERT INTO tbl1 (name,famil,tel,codmeli) VALUES ('$name','$famil','$tel','$codmeli')")===true){        echo  "done";    }}?>

عالی عالی عالی

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

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

شهاب جان تنها سوالم اینه که من بلد نیستم در صورتی که کد ملی وجود از قبل در دیتابیس آنلاین وجود داشت و مقادیر به بیسیک فرستاده شد

در بیسیک اونها رو بگیرم

این خط

echo $result["id"]."#".$result["name"]."#".$result["famil"]."#".$result["tel"]."#".$result["codmeli"];

در مثال بالا چه طور میتونم داده های ارسالی رو با کتابخونه okhttputils بگیرم و در یک مسیج نشون بدم

با تشکر و سپاس

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

بازم ارسطو جان توصیه ام اینه که aria async task استفاده کن که کمی سرعت پردازش اطلاعاتت بره بالا تر، البته برای یه بررسی کوچیک که نیاز نیست

اینا رو یه نگا بنداز دلاور


Sub Activity_Create(FirstTime As Boolean)
Dim ht As HttpJob
ht.Initialize("ht1",Me)
ht.PostString("http://address.php","name="&name&"&famil="&famil&"&tel="&tel&"&codemeli="&codemeli)
End Sub

Sub jobdone (job As HttpJob)
	If job.Success = True Then
		If job.JobName = "ht1" Then
			Msgbox(job.GetString,"result")
			Dim str1,str() As String = Regex.Split("#",job.GetString)
			For i = 0 To str.Length - 1
				str1 = str1 &CRLF& str(i)
			Next
			Msgbox(str1,"regexed")
		End If
	End If
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

بازم ارسطو جان توصیه ام اینه که aria async task استفاده کن که کمی سرعت پردازش اطلاعاتت بره بالا تر، البته برای یه بررسی کوچیک که نیاز نیست

اینا رو یه نگا بنداز دلاور


Sub Activity_Create(FirstTime As Boolean)
Dim ht As HttpJob
ht.Initialize("ht1",Me)
ht.PostString("http://address.php","name="&name&"&famil="&famil&"&tel="&tel&"&codemeli="&codemeli)
End Sub

Sub jobdone (job As HttpJob)
	If job.Success = True Then
		If job.JobName = "ht1" Then
			Msgbox(job.GetString,"result")
			Dim str1,str() As String = Regex.Split("#",job.GetString)
			For i = 0 To str.Length - 1
				str1 = str1 &CRLF& str(i)
			Next
			Msgbox(str1,"regexed")
		End If
	End If
End Sub

سلام استاد

میشه یه سمپل یا توضیحی در مورد کار با aria async task بدید؟!

 

همزمان چندین متد پست و گت انجام میشه توی اپ و همین باعث کندی میشه 

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

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

این کتابخونه از سایت یک مقدار جانسون بر میگردونه که باید ریجکس بشه و بعد نمایش داده بشه ؟؟
درسته ؟؟
 

Sub jobdone (job As HttpJob)
	If job.Success = True Then
		If job.JobName = "ht1" Then
			Msgbox(job.GetString,"result")
			Dim str1,str() As String = Regex.Split("#",job.GetString)
			For i = 0 To str.Length - 1
				str1 = str1 &CRLF& str(i)
			Next
			Msgbox(str1,"regexed")
		End If
	End If

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

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

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

این کتابخونه از سایت یک مقدار جانسون بر میگردونه که باید ریجکس بشه و بعد نمایش داده بشه ؟؟

درسته ؟؟

 

Sub jobdone (job As HttpJob)
	If job.Success = True Then
		If job.JobName = "ht1" Then
			Msgbox(job.GetString,"result")
			Dim str1,str() As String = Regex.Split("#",job.GetString)
			For i = 0 To str.Length - 1
				str1 = str1 &CRLF& str(i)
			Next
			Msgbox(str1,"regexed")
		End If
	End If

 و اینکه احتمالا در کتابخونه ای که راهنمایی کردی 

یه متد برای این کار استاد شاهدی در نظر گرفته !!!

و در آخر ممکنه فقط این متد رو برام بنویسی تا برم تو انجمن در بارش تحقیق کم 

مرسی شهاب عزیز 

ارسطو جان جیسونه داداش : )))) ♥♥

نه ، این جیسون نیست ، این اومده بین هر فیلده دیتابیس ، یه # گذاشته که بعدا بشه جداش کرد

همین

متد چی رو برات بنویسم؟

برای این گفتم از اریا ایسینک تسک استفاده کن چون توی متد Do in backGroun میتونی کارای پردازشی مثلا ریجکس کردن یا پارس کردن جیسون رو انجام بدی که سرعتت رو واقعا بالاتر میبره چون توی ترد اصلی برنامه نیست

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

ارسطو جان جیسونه داداش : )))) ♥♥

نه ، این جیسون نیست ، این اومده بین هر فیلده دیتابیس ، یه # گذاشته که بعدا بشه جداش کرد

همین

متد چی رو برات بنویسم؟

برای این گفتم از اریا ایسینک تسک استفاده کن چون توی متد Do in backGroun میتونی کارای پردازشی مثلا ریجکس کردن یا پارس کردن جیسون رو انجام بدی که سرعتت رو واقعا بالاتر میبره چون توی ترد اصلی برنامه نیست

:DD:  :oops:  :oops:  :oops: (( جیسونه )) پس !!! 

شرمنده من زبانم خوب نیست  :heart:  :heart: 

دم شما هم گرم استاد اسکندری عزیز بابت راهنمایی 

من تمام مطالب آریا رو خوندم ولی برام خیلی گنگ بود حیلی حیلی گنگ بود 

مثال کاملی هم ندیدم در مطالب که بتونم تحقیق کنم در باره متد فرستادن و گرفتن اطلاعات در دیتابیس آنلاین  که شما می فرمایید 

در این پست که محبت کردید دوستس رو راهنمایی کردید مطالبی بود شبیه به موضوع مطرح شده اینجا 

که اگر محبت کنید مطا لعه بفرمایید و من رو راهنمایی کنید ممنون میشم

http://answercenter.ir/topic/15834-%D9%81%D8%B1%D9%85-%D8%AB%D8%A8%D8%AA-%D9%86%D8%A7%D9%85%D8%8C-%D8%A7%DA%AF%D8%B1-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C-%D8%A8%D8%A7-%D8%A2%D9%86-%D8%A7%D8%B3%D9%85-%D9%82%D8%A8%D9%84%D8%A7-%D8%AB%D8%A8%D8%AA-%D9%86%D8%A7%D9%85-%DA%A9%D8%B1%D8%AF/

 

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

:DD:  :oops:  :oops:  :oops: (( جیسونه )) پس !!! 

شرمنده من زبانم خوب نیست  :heart:  :heart:

دم شما هم گرم استاد اسکندری عزیز بابت راهنمایی 

من تمام مطالب آریا رو خوندم ولی برام خیلی گنگ بود حیلی حیلی گنگ بود 

مثال کاملی هم ندیدم در مطالب که بتونم تحقیق کنم در باره متد فرستادن و گرفتن اطلاعات در دیتابیس آنلاین  که شما می فرمایید 

در این پست که محبت کردید دوستس رو راهنمایی کردید مطالبی بود شبیه به موضوع مطرح شده اینجا 

که اگر محبت کنید مطا لعه بفرمایید و من رو راهنمایی کنید ممنون میشم

http://answercenter.ir/topic/15834-%D9%81%D8%B1%D9%85-%D8%AB%D8%A8%D8%AA-%D9%86%D8%A7%D9%85%D8%8C-%D8%A7%DA%AF%D8%B1-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C-%D8%A8%D8%A7-%D8%A2%D9%86-%D8%A7%D8%B3%D9%85-%D9%82%D8%A8%D9%84%D8%A7-%D8%AB%D8%A8%D8%AA-%D9%86%D8%A7%D9%85-%DA%A9%D8%B1%D8%AF/

 

نفرما داداش، خوده خوده زبانی ، استاده زبان خودمم بودی قبلا ، ایتالیایی یادم میدادی ♥♥

این دقیقا کده اریا ایسینک تسک هست که کاری که انجام دادیم با okayhttp رو انجام میده

منم برای راحتی کارت ، 4-5 تا متغیر تعریف کردم و اسم و اینا رو که از نتیجه جدا کردیم ریختم توشون

همین دیگه


Sub Globals
Dim aria As AriaAsyncTask
Dim dlr As AriaAsyncTaskDownloader
Dim myid,myname,myfamil,mytel,mycodemeli As String
End Sub

Sub Activity_Create(FirstTime As Boolean)
aria.Initialize("aria")
dlr.Initialize(aria)
If dlr.IsConnected Then
	aria.Run(Array As String("http://address.php","name="&name&"&famil="&famil&"&tel="&tel&"&codemeli="&codemeli))
End If
End Sub

Sub aria_DoInBackground(Params() As Object) As Object
	Try
		Dim result As String = dlr.Get(Params(0)).POST(Params(1)).String
		Dim str() As String = Regex.Split("#",result)
		Msgbox(result,"")
		myid = str(0)
		myname = str(1)
		myfamil = str(2) 
		mytel = str(3)
		mycodemeli = str(4)
		Return "done"
	Catch
		Log(LastException)
		Return "error"
	End Try
End Sub
Sub aria_OnPostExecute(Result As Object)
	Log(Result)
End Sub








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

ارسطو جان جیسونه داداش : )))) ♥♥

نه ، این جیسون نیست ، این اومده بین هر فیلده دیتابیس ، یه # گذاشته که بعدا بشه جداش کرد

همین

متد چی رو برات بنویسم؟

برای این گفتم از اریا ایسینک تسک استفاده کن چون توی متد Do in backGroun میتونی کارای پردازشی مثلا ریجکس کردن یا پارس کردن جیسون رو انجام بدی که سرعتت رو واقعا بالاتر میبره چون توی ترد اصلی برنامه نیست

این رو برمیگردونه چرا شهاب جان؟؟

aaaaaa.png

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

این رو برمیگردونه چرا شهاب جان؟؟

aaaaaa.png

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

هر چیزی که اون صفحه نتیجه بده ، بر میگردونه برات

حالا ببین ادرس رو درست زدی یا درست پست میکنی یا ...

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

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

هر چیزی که اون صفحه نتیجه بده ، بر میگردونه برات

حالا ببین ادرس رو درست زدی یا درست پست میکنی یا ...

شهاب جان دقیقا عین کدی که دادی رو بهش دادم و در این خط بهش گفتیم این پارامتر ها رو برگردونه 

(پست شماره 3 همین موضوع )

echo $result["id"]."#".$result["name"]."#".$result["famil"]."#".$result["tel"]."#".$result["codmeli"];
لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

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

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