PDA

View Full Version : مشکل در ارسال داده به mongodb



usb.mini
شنبه 12 مهر 1393, 10:34 صبح
سلام دوستان
من برای یک پروژه از mongodb استفاده میکنم و چون تازه کار هستم در زیمینه این پایگاه داده مشکلی دارم. کدهای زیر رو توسط php نوشتم آرایه ای بنام $subitems در کد وجود داره که قصد ارسال این آرایه رو به یکی از فیلدهای پایگاه داده دارم اما تمام اعضای این آرایه به پایگاه داده منتقل نمیشه.

if($_SERVER["REQUEST_METHOD"] == "POST"){
$errors = array();
$alarm = array();

$item_name = data::test_input($_POST["item_name"]);
$folder_name = data::test_input($_POST["folder_name"]);
$subitem_num = data::test_input($_POST["subitem_num"]);


for($i=1;$i<=$subitem_num;$i++){
${"subitem_name$i"} = data::test_input($_POST["subitem_name".$i]);
${"subitem_file$i"} = data::test_input($_POST["subitem_file".$i]);
if(count($errors)==0){
$subitems = array(${"subitem_name$i"}=>${"subitem_file$i"});
}
}

if(empty($item_name)){
$errors['item_name']= "insert item";
}
if(empty($folder_name)){
$errors['folder_name']= "insert folder";
}
if(count($errors)==0){
$query = array(
"item_name" => $item_name,
"status" => 0,
"folder_name" => $folder_name,
"subitem" => $subitems
);
$result = items::insert($query);
if($result) $alarm['success_additem'] = "submit done";
} }

برای مثال میخوام به صورت زیر در پایگاه داده ثبت بشه آیا امکانش هست: یعنی تمام اعضای آرایه در یک فیلد از کالکشن items ثبت بشه

{ "_id" : ObjectId("542e71b333e916542a00002e"), "item_name" : "users management", "status" :0, "folder_name" : "users", "subitem" : { "a" : "a.php","b" : "b.php" },"c" : "c.php" }

مبین رنجبر
شنبه 12 مهر 1393, 18:59 عصر
سلام دوستان
من برای یک پروژه از mongodb استفاده میکنم و چون تازه کار هستم در زیمینه این پایگاه داده مشکلی دارم. کدهای زیر رو توسط php نوشتم آرایه ای بنام $subitems در کد وجود داره که قصد ارسال این آرایه رو به یکی از فیلدهای پایگاه داده دارم اما تمام اعضای این آرایه به پایگاه داده منتقل نمیشه.

if($_SERVER["REQUEST_METHOD"] == "POST"){
$errors = array();
$alarm = array();

$item_name = data::test_input($_POST["item_name"]);
$folder_name = data::test_input($_POST["folder_name"]);
$subitem_num = data::test_input($_POST["subitem_num"]);


for($i=1;$i<=$subitem_num;$i++){
${"subitem_name$i"} = data::test_input($_POST["subitem_name".$i]);
${"subitem_file$i"} = data::test_input($_POST["subitem_file".$i]);
if(count($errors)==0){
$subitems = array(${"subitem_name$i"}=>${"subitem_file$i"});
}
}

if(empty($item_name)){
$errors['item_name']= "insert item";
}
if(empty($folder_name)){
$errors['folder_name']= "insert folder";
}
if(count($errors)==0){
$query = array(
"item_name" => $item_name,
"status" => 0,
"folder_name" => $folder_name,
"subitem" => $subitems
);
$result = items::insert($query);
if($result) $alarm['success_additem'] = "submit done";
} }

برای مثال میخوام به صورت زیر در پایگاه داده ثبت بشه آیا امکانش هست: یعنی تمام اعضای آرایه در یک فیلد از کالکشن items ثبت بشه

{ "_id" : ObjectId("542e71b333e916542a00002e"), "item_name" : "users management", "status" :0, "folder_name" : "users", "subitem" : { "a" : "a.php","b" : "b.php" },"c" : "c.php" }



سطر داده ای زیر بدون مشکل در دیتابیس اضافه میشه :


{ "_id" : ObjectId("542e71b333e916542a00002e"), "item_name" : "users management", "status" :0, "folder_name" : "users", "subitem" : { "a" : "a.php","b" : "b.php" },"c" : "c.php" }

اما من احتمال میدم سطر داده ای که کد PHP شما تولید میکنه برابر ساختارش به صورت بالا نیست. کوئری رو قبل از اینکه به پایگاه داده ارسال کنید echo کنید و اون رو مقایسه کنید.

usb.mini
شنبه 12 مهر 1393, 22:31 عصر
تشکر از پاسخ شما
بله من هم با کد php مشکل دارم به هر نحوی که کد رو تغییر دادم مشکل حل نشده است و تنها آخری عضو آرایه subitems به دیتابیس منتقل شده است مثلا فقط c و c.php ممنون میشم اگر راهنمایی کنید و یا در تصحیح این بخش یاری کنید چون دو روزه درگیر این مسئله هستم و رفع نشده...

مبین رنجبر
سه شنبه 15 مهر 1393, 21:00 عصر
تشکر از پاسخ شما
بله من هم با کد php مشکل دارم به هر نحوی که کد رو تغییر دادم مشکل حل نشده است و تنها آخری عضو آرایه subitems به دیتابیس منتقل شده است مثلا فقط c و c.php ممنون میشم اگر راهنمایی کنید و یا در تصحیح این بخش یاری کنید چون دو روزه درگیر این مسئله هستم و رفع نشده...

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