Динамически сохранять данные php - PullRequest
2 голосов
/ 27 июня 2019

У меня есть данные AJAX со всеми данными из формы.Пользователи могут динамически добавлять блоки со строками для предыдущих работодателей.[empName] может быть 10 или 20 ... или 2 ... Как отследить количество предыдущих работодателей и сохранить его в переменной?Вот почтовые данные:

["step-3"]=> string(1065) "{
"empYrXp":"min10yexp",
"empName-1":"TEST PAYPAL TEST",
"empStr-1":"TEST ORDER PAYPAL",
"empCity-1":"Pleven",
"empState-1":"CT",
"empContactPerson-1":"mbnmbnmbnm",
"empContactPersonPhone-1":"999-999-9999",
"empFromDate-1":"08-2013",
"empToDate-1":"06-2019",
"empPositionHeld-1":"bnmb",
"empReasonForLeaving-1":"nmbnmbnmbnm",
"empWereSubject-1":"No",
"empWasPrevJobDesignated-1":"No",
"empName-2":"TEST PAYPAL TEST",
"empStr-2":"TEST ORDER PAYPAL",
"empCity-2":"Pleven",
"empState-2":"CA",
"empContactPerson-2":"fghfhfhfgh",
"empContactPersonPhone-2":"999-999-9999",
"empFromDate-2":"02-2008",
"empToDate-2":"08-2013",
"empPositionHeld-2":"fghfgh",
"empReasonForLeaving-2":"fghfghfgh",
"empWereSubject-2":"No",
"empWasPrevJobDesignated-2":"No",
"empName-3":"TEST TEST",
"empStr-3":"TEST ORDER PAYPAL",
"empCity-3":"Pleven",
"empState-3":"CA",
"empContactPerson-3":"sdfsdfsdfsdf",
"empContactPersonPhone-3":"999-999-9999",
"empFromDate-3":"01-2006",
"empToDate-3":"01-2006",
"empPositionHeld-3":"sdfsdfs",
"empReasonForLeaving-3":"dfsdfsdfsdf",
"empWereSubject-3":"No",
"empWasPrevJobDesignated-3":"No"
}" 

Я пытаюсь сосчитать преобладающего работодателя, как это

$countAllEmp = ( count($jsonDecode3) - 1 ) / 12;

, но когда я пытаюсь сохранить данные, бесконечный поворот запроса ... вот чтоя пробовал:

for($b = 1; $b <= $countAllEmp; $b++){

if(isset($jsonDecode3["empName-".$b.""]) && $jsonDecode3["empName-".$b.""]!=''){
$empName.$b = $jsonDecode3["empName-".$b.""];
}else{
$empName.$b = '';
}
if(isset($jsonDecode3["empStr-".$b.""]) && $jsonDecode3["empStr-".$b.""]!=''){
$empStr.$b = $jsonDecode3["empStr-".$b.""];
}else{
$empStr.$b = '';
}
if(isset($jsonDecode3["empCity-".$b.""]) && $jsonDecode3["empCity-".$b.""]!=''){
$empCity.$b = $jsonDecode3["empCity-".$b.""];
}else{
$empCity.$b = '';
}
if(isset($jsonDecode3["empState-".$b.""]) && $jsonDecode3["empState-".$b.""]!=''){
$empState.$b = $jsonDecode3["empState-".$b.""];
}else{
$empState.$b = '';
}
if(isset($jsonDecode3["empContactPerson-".$b.""]) && $jsonDecode3["empContactPerson-".$b.""]!=''){
$empContactPerson.$b = $jsonDecode3["empContactPerson-".$b.""];
}else{
$empContactPerson.$b = '';
}
if(isset($jsonDecode3["empContactPersonPhone-".$b.""]) && $jsonDecode3["empContactPersonPhone-".$b.""]!=''){
$empContactPersonPhone.$b = $jsonDecode3["empContactPersonPhone-".$b.""];
}else{
$empContactPersonPhone.$b = '';
}
if(isset($jsonDecode3["empFromDate-".$b.""]) && $jsonDecode3["empFromDate-".$b.""]!=''){
$empFromDate.$b = $jsonDecode3["empFromDate-".$b.""];
}else{
$empFromDate.$b = '';
}
if(isset($jsonDecode3["empToDate-".$b.""]) && $jsonDecode3["empToDate-".$b.""]!=''){
$empToDate.$b = $jsonDecode3["empToDate-".$b.""];}else{$empToDate.$b = '';
}
if(isset($jsonDecode3["empPositionHeld-".$b.""]) && $jsonDecode3["empPositionHeld-".$b.""]!=''){
$empPositionHeld.$b = $jsonDecode3["empPositionHeld-".$b.""];
}else{
$empPositionHeld.$b = '';
}
if(isset($jsonDecode3["empReasonForLeaving-".$b.""]) && $jsonDecode3["empReasonForLeaving-".$b.""]!=''){
$empReasonForLeaving.$b = $jsonDecode3["empReasonForLeaving-".$b.""];
}else{
$empReasonForLeaving.$b = '';
}
if(isset($jsonDecode3["empWereSubject-".$b.""]) && $jsonDecode3["empWereSubject-".$b.""]!=''){
$empWereSubject.$b = $jsonDecode3["empWereSubject-".$b.""];
}else{
$empWereSubject1.$b = '';
}
if(isset($jsonDecode3["empWasPrevJobDesignated-".$b.""]) && $jsonDecode3["empWasPrevJobDesignated-".$b.""]!=''){
$empWasPrevJobDesignated.$b = $jsonDecode3["empWasPrevJobDesignated-".$b.""];
}else{
$empWasPrevJobDesignated.$b = '';
}
}

это кнопка для добавления нового окна со всеми входами:

function addEmployers(years) {
var $ = jQuery,
    html = '<div class="employers"> <div class="employer"> <p class="text-center">Employer #1 : (the most recent)</p><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>Name: *</label> </div><div class="col-sm-6 form-group"> <input type="text" class="form-control" id="empName-1" name="empName-1" data-validation="length" data-validation-length="1-100"> </div></div><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>Street: *</label> </div><div class="col-sm-6 form-group"> <input type="text" class="form-control" id="empStr-1" name="empStr-1" data-validation="letternumeric" data-validation-allowing="-,.\'` "> </div></div><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>City: *</label> </div><div class="col-sm-6 form-group"> <input type="text" class="form-control" id="empCity-1" name="empCity-1" data-validation="length" data-validation-length="1-100"> </div></div><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>State: *</label> </div><div class="col-sm-6 form-group"> <select class="form-control" id="empState-1" name="empState-1" data-validation="length" data-validation-length="min1">' + genStates() + '</select> </div></div><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>Contact person: *</label> </div><div class="col-sm-6 form-group"> <input type="text" class="form-control" id="empContactPerson-1" name="empContactPerson-1" data-validation="length" data-validation-length="1-100"> </div></div><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>Phone number: *</label> </div><div class="col-sm-6 form-group"> <input type="text" class="form-control phone-mask" id="empContactPersonPhone-1" placeholder="123-456-7890" name="empContactPersonPhone-1" data-validation="custom" data-validation-regexp="^([0-9]{3}\-[0-9]{3}\-[0-9]{4})$"> </div></div><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>Date from: *</label> </div><div class="col-sm-6 form-group"> <input type="text" class="form-control datepicker-no-day" id="empFromDate-1" name="empFromDate-1" data-validation="' + years + '" data-validation-format="mm-yyyy" readonly> </div></div><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>Date to: *</label> </div><div class="col-sm-6 form-group"> <input type="text" class="form-control datepicker-no-day" id="empToDate-1" name="empToDate-1" data-validation="' + years + '" data-validation-format="mm-yyyy" readonly> </div></div><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>Position held: *</label> </div><div class="col-sm-6 form-group"> <input type="text" class="form-control" id="empPositionHeld-1" name="empPositionHeld-1" data-validation="length" data-validation-length="1-100"> </div></div><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>Reason for leaving: *</label> </div><div class="col-sm-6 form-group"> <input type="text" class="form-control" id="empReasonForLeaving-1" name="empReasonForLeaving-1" data-validation="length" data-validation-length="1-100"> </div></div><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>Were you subject to the Federal Motor Carrier Safety Regulations (FMCSRs) while employed by the previous employer? *</label> </div><div class="col-sm-6 form-group"> <label class="radio-inline"> <input type="radio" name="empWereSubject-1" value="Yes" data-validation="required"> Yes </label> <label class="radio-inline"> <input type="radio" name="empWereSubject-1" value="No" data-validation="required"> No </label> </div></div><div class="row"> <div class="col-sm-5 col-sm-offset-1 text-right"> <label>Was the previous job position designated as a safety sensitive function in any DOT regulated mode, subject to alcohol and controlled substances testing requirements as required by 49 CFR Part 40? *</label> </div><div class="col-sm-6 form-group"> <label class="radio-inline"> <input type="radio" name="empWasPrevJobDesignated-1" value="Yes" data-validation="required"> Yes </label> <label class="radio-inline"> <input type="radio" name="empWasPrevJobDesignated-1" value="No" data-validation="required"> No </label> </div></div></div><div class="text-center"> <button class="text-center btn btn-danger add-prev-emp" onclick="addPrevEmp(\'' + years + '\')" disabled>Add previous employer</button> </div></div>';

$(html).insertAfter($('.empAfterHere'));
setTimeout(function () {
    setupValidate();
    $('.datepicker-no-day').datetimepicker({
        format: 'MM-YYYY',
        ignoreReadonly: true,
        maxDate: moment()
    });
    $('.datepicker-no-day').on('dp.change', function (e) {
        var target = $(e.currentTarget);
        var id = target.attr('id');
        var idNum = parseInt(id.substring(id.length - 1));
        if (target.is('[id^="empFromDate"]')) {
            $('#empToDate-' + idNum).data('DateTimePicker').minDate(e.date);
            if ($('#empFromDate-' + (idNum + 1)).length > 0) {
                $('#empFromDate-' + (idNum + 1)).data('DateTimePicker').maxDate(e.date);
                $('#empToDate-' + (idNum + 1)).data('DateTimePicker').maxDate(e.date);
            }
        }
    });

    // Mask some fields
    $('.phone-mask').mask('999-999-9999');
}, 500);

}

1 Ответ

1 голос
/ 27 июня 2019

Не знаю, как вы получаете свой JSON, но формы поддерживают именование с [], что приводит к массивам на стороне сервера:

<input name="someName[]" />
<input name="someName[]" />
<input name="someName[]" />

Попробуйте вывести $_POST['someName'], это будет 0-индексированный массив с 3 элементами.

Кроме того, вы можете явно определить индексы в []:

<input name="someName[11]" />
<input name="someName[12]" />
<input name="someName[13]" />

Попробуйте вывести $_POST['someName'], это будет массив с 3 ключами - 11, 12, 13.

Итак, вы должны переименовать свои поля вместо empName-, empStr- и т. Д. - используйте [] запись: empName[], empStr[] и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...