آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

سوال خیلی مهم در ارتباط با کار با Arraylist و ارسال به سرور

mortex  11 سال پیش  11 سال پیش
+1 0

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

//سمت کلاینت
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("name", "ali"); params.add(new BasicNameValuePair("family", "rezaee"); sendData(params);
//تابع send data
private void sendData(ArrayList<NameValuePair> params) { String result = Webservice.readUrl("http://mydomain.ir/test/insert.php", params); }

//سمت سرور
<?php $con=mysqli_connect("localhost","user_root","123456","my_db"); $name = $_POST['name']; $family = $_POST['family']; $result=mysqli_query($con, "INSERT INTO mytb VALUES ('$name', '$family')" mysqli_close($con); ?>

ولی وقتی می خوام با یک حلقه به پارامترهای Arraylist مقادیر خودمو بدم و بفرستم به سرور ، تو جدول فقط رکوردهای خالی درج میشن، لطفا کمکم کنید. این هم از کدهاش:

//سمت کلاینت
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
for(int i=0;i<20;i++){
params.add(new BasicNameValuePair("name[" + i + "]", "test_name");
params.add(new BasicNameValuePair("family[" + i + "]", "test_family");
sendData(params);
//تابع send data
private void sendData(ArrayList<NameValuePair> params) { String result = Webservice.readUrl("http://mydomain.ir/test/insert.php", params); }

//سمت سرور
<?php $con=mysqli_connect("localhost","user_root","123456","my_db"); $name[] = $_POST['name[]']; $family[] = $_POST['family[]']; for($i=0;$i<20;$i++) $result=mysqli_query($con, "INSERT INTO mytb VALUES ('$name[$i]', '$family[$i]')" mysqli_close($con); ?>
0 0
اون [] ها رو توی POST_$ ها حذف کن. (11 سال پیش)
0 0
اینکار رو هم کردم اما جواب نداد (11 سال پیش)
0 0
فعلا ثبت تو دیتابیس رو بزارین کنار، با تابع print_r آرایه POST رو چاپ کنید ببینید اصلاً اطلاعات درست ارسال میشه؟ (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
حمید زمانی  11 سال پیش
0 0

اول یه کلاس میسازی و عناصر مورد نیاز رو داخل اون میذاری (مثل کلاس Note در آموزش پروژه Note استاد - بخش دوازدهم) :

 public class Person{
public String name;
public String family;
}

بعد کد ارسال اطلاعات رو به کد زیر تغییر میدی( بخش دوازدهم آموزش ها) :

 //سمت کلاینت
for(int i=0; i<personList; i++){
Person person = personList.get(i);
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("name", person.name);
params.add(new BasicNameValuePair("family", person.family);
sendData(params);
}

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

 ArrayList<Person> personList = new ArrayList<Person>();

سمت سرور رو هم تغییر نده :

 //سمت سرور
<?php
$con=mysqli_connect("localhost","user_root","123456","my_db");

$name = $_POST['name'];
$family = $_POST['family'];

$result=mysqli_query($con, "INSERT INTO mytb VALUES ('$name', '$family')"

mysqli_close($con);

?>
0 0
حمید جان ممنون ، ولی کد شما تو سمت ارسال اطلاعات وقتی تعداد عناصر آرایه زیاد باشه باعث فورس کلوز شدن برنامه میشه راهی نیست که با کد sendData بتونیم یکجا آرایه رو بفرستیم و تو جدول درج کنیم؟ (11 سال پیش)
0 0
من چند باری تست کردم مشکل نداشت (11 سال پیش)
0 0
ممنون آقای زمانی، تقریبا مشکلم حل شد فقط این روش شما برای آرایه های بزرگ زمان زیادی میگیره فکر کنم روش بهینه تری هم باشه (11 سال پیش)
0 0
خواهش می کنم ، اولا برای تشکر دکمه vote رو کلیک کنید ، دوما پیگیری کنید اگه روش بهتری بود خوشحال میشم ازتون یاد بگیرم. (11 سال پیش)
+1 0
در ضمن من یه آرایه ی 2000 تایی قبلا فرستاده بودم ، مشکلی پیش نیومد فقط نسبت به یدونه یکم طول کشید ، همین (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .