بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

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

مدیریت گفتگو
mortex 11 سال پیش
آخرین تغییر: 11 سال پیش

با سلام به همه دوستان؛ من وقتی از 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); ?>

نظرات

Spirit 11 سال پیش
اون [] ها رو توی POST_$ ها حذف کن.
mortex 11 سال پیش
اینکار رو هم کردم اما جواب نداد
Spirit 11 سال پیش
فعلا ثبت تو دیتابیس رو بزارین کنار، با تابع print_r آرایه POST رو چاپ کنید ببینید اصلاً اطلاعات درست ارسال میشه؟

پاسخ‌ها 1

حمید زمانی 11 سال پیش

اول یه کلاس میسازی و عناصر مورد نیاز رو داخل اون میذاری (مثل کلاس 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);

?>

نظرات

mortex 11 سال پیش
حمید جان ممنون ، ولی کد شما تو سمت ارسال اطلاعات وقتی تعداد عناصر آرایه زیاد باشه باعث فورس کلوز شدن برنامه میشه راهی نیست که با کد sendData بتونیم یکجا آرایه رو بفرستیم و تو جدول درج کنیم؟
mortex 11 سال پیش
ممنون آقای زمانی، تقریبا مشکلم حل شد فقط این روش شما برای آرایه های بزرگ زمان زیادی میگیره فکر کنم روش بهینه تری هم باشه
حمید زمانی 11 سال پیش
خواهش می کنم ، اولا برای تشکر دکمه vote رو کلیک کنید ، دوما پیگیری کنید اگه روش بهتری بود خوشحال میشم ازتون یاد بگیرم.
حمید زمانی 11 سال پیش
در ضمن من یه آرایه ی 2000 تایی قبلا فرستاده بودم ، مشکلی پیش نیومد فقط نسبت به یدونه یکم طول کشید ، همین

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