Ситуация:
У меня есть объект, который был перенесен через AJAX в мой файл PHP, который должен вставить одну или несколько строк в мою базу данных.
В файле PHP я использую json_decode, чтобы заставить мой объект работать на PHP
$insertDatesArray = json_decode($_REQUEST['insertDatesArray']);
Когда я вывожу этот объект, я получаю это в PHP:
object(stdClass)#2 (4) {
["alterstufe"]=>
array(3) {
[0]=> string(1) "1"[1]=> string(1) "1"[2]=> string(1) "1"}
["sunday"]=>
array(3) {
[0]=> string(10) "14.09.2014"[1]=> string(10) "21.09.2014"[2]=> string(10) "28.09.2014"}
["help1"]=>
array(3) {
[0]=> string(1) "6"[1]=> string(1) "7"[2]=> string(1) "8"}
["help2"]=>
array(3) {
[0]=> string(1) "7"[1]=> string(1) "8"[2]=> string(1) "6"}
}
Это код, который генерирует мой объект:
var date = new Array();
var alterstufen = new Array();
var helpperson1 = new Array();
var helpperson2 = new Array();
var elems2 = $('#plan tbody tr');
var count2 = elems2.length;
$('#plan tbody tr').each(function(){
alterstufen.push($('.pp-age').val());
date.push($('#pp-service-date', this).val());
helpperson1.push($('.selector-help1', this).val());
helpperson2.push($('.selector-help2', this).val());
});
var days = new Object();
days.alterstufe = alterstufen;
days.sunday = date;
days.help1 = helpperson1;
days.help2 = helpperson2;
var insertDatesArray = JSON.stringify( days );
План:
Теперь то, что я должен иметь, это:
Мне нужно вставить каждую строку (с одним значением из каждого свойства объекта) в мою базу данных через PHP :: PDO
Прямо сейчас я застрял в том, как я могу установить переменные для каждого значения.
Мой код выглядит так прямо сейчас:
foreach ($insertDatesArray as $obj => $val) {
$alterstufe = $val->alterstufe;
$date = $val->date;
}
Эта проблема:
Я не знаю, как я могу получить значение из каждого свойства объекта, чтобы установить их вместе и вставить данные в мою базу данных.
Вы можете сделать это так:
$entriesCount = count($insertDatesArray->alterstufe);
for($i = 0; $i < $entriesCount; ++$i) {
var_dump($insertDatesArray->alterstufe[$i]);
var_dump($insertDatesArray->sunday[$i]);
var_dump($insertDatesArray->help1[$i]);
var_dump($insertDatesArray->help2[$i]);
// execute your query here with the data above
}
Но, как первый комментарий ниже, ваш вопрос говорит о том, что, вероятно, проще и чище изменить клиентскую часть.
Поэтому я бы изменил часть JS вместо:
var data = new Array();
$('#plan tbody tr').each(function(){
data.push({
alterstufen: $('.pp-age').val()
date: $('#pp-service-date', this).val(),
help1: $('.selector-help1', this).val(),
help2: $('.selector-help2', this).val()
});
});
Тогда вы получите хороший пакет «все в одном» на стороне сервера.
Других решений пока нет …