2017-11-23 1 views
2

양식이 있고 고용 기록이 될 수 있습니다. 작업 제목, 작업 기간 및 작업 위치의 세 가지 입력 행에 표시됩니다. 당신은 더 많은 데이터를 추가 할 수있는 빈 입력 집합을 추가하는 고용을 추가 할 수 있습니다.동적 데이터를 PHP로 전송

HTML 양식을 AJAX를 통해 PHP 스크립트로 보내고 있습니다. 동일한 이름의 입력을 모두 별도로 보내므로 배열이 아닙니다. PHP 쪽에서 나는 포스트 변수를 배열에 넣어 인코딩하는 json입니다. $json_data

문제는 PHP 스크립트가 마지막 입력 집합 만 저장한다는 것입니다. 그래서 3 개의 작업을 입력하면 마지막 작업 만 저장됩니다.

<!-- employment row --> 

    <p class="mt-3 text-left"> Employment history </p> 
    <div class="row employment_block"> 

     <div class="col-md-3"> 
      <input type="text" name="job_title[]" placeholder="Job title"> 
     </div> 

     <div class="col-md-3"> 
      <input type="text" name="job_duration[]" placeholder="Duration (i.e. 3 months/1 year)"> 
     </div> 

     <div class="col-md-3"> 
      <input type="text" name="job_location[]" placeholder="Country"> 
     </div> 
     <div class="col-md-3 text-center"> 
     <button href="#" class="able_btn m-0 w-100 disabled" disabled aria-disabled="true" style="opacity:0.5"> remove </button> 
     </div> 

    </div> 

     <div class="text-center mb-3 mt-3"> 
      <a class="add_employment" href=""> Add employment </a> 
     </div> 



<!-- JS --> 

$(document).ready(function(){ 

$(".account_cv_update_form").submit(function(evt){ 
evt.preventDefault(); 

     var formData = new FormData($(this)[0]); 
    $.ajax({ 
     url: 'handlers/cv_update.php', 
     type: 'POST', 
     data: formData, 
     async: false, 
     cache:false, 
     contentType: false, 
     processData: false, 
     dataType: "json", 
    success: function (response) { 

     switch(response.message){ 
     case 'success': success(); 
     break; 
     case 'error': error(); 
     break; 

     } 

    } 
    }); 
return false; 
}); 

}); 



$('.add_employment').click(function(evt) { 
evt.preventDefault(); 

    $('.employment_block:last').after('<div class="row employment_block"><div class="col-md-3"><input type="text" name="job_title" placeholder="Job title"></div><div class="col-md-3"><input type="text" name="job_duration" placeholder="Duration (i.e. 3 months/1 year)"></div><div class="col-md-3"><input type="text" name="job_location" placeholder="Country"></div><div class="col-md-3 text-center"><button class="able_btn m-0 w-100 remove_employment"> remove </button></div></div>'); 
}); 



<!-- PHP code --> 

$json_data = array(
     'job_title' => $job_title, 
     'job_location' => $job_location, 
     'job_duration' => $job_duration); 


$cv_data = json_encode($json_data); 

    $stmt = $dbh->prepare("UPDATE table SET profile_picute=:profile_picute, first_name=:first_name, last_name=:last_name, phone_number=:phone_number, email_address=:email_address, data=:data WHERE id=:id"); 

    $stmt->bindParam(':profile_picute', $new_file_name); 
    $stmt->bindParam(':first_name', $first_name); 
    $stmt->bindParam(':last_name', $last_name); 
    $stmt->bindParam(':phone_number', $phone_number); 
    $stmt->bindParam(':email_address', $email_address); 
    $stmt->bindParam(':data', $cv_data); 
    $stmt->bindParam(':id', $user_id); 


if($stmt->execute()){ 
$response["message"] = 'success'; 
}else{ 
$response["message"] = 'error'; 
$errors++; 
} 

echo json_encode($response); 
exit(); 
+0

* "// 여기에 mysql에 $ cv_data를 저장하십시오."* - php/mysql이 정확한지 어떻게 알 수 있습니까? 나는 이것이 보이는 것보다 더 깊이 간다고 생각한다. –

+1

JS에 대해 많이 알지는 못하지만,'$ ('. employment_block : last'). ..... .....의 입력은 위의 입력에 대한 것과 같이 배열'[]'이 없으므로 나는 그들이 그들도 있어야하는지 확신하지 못한다. –

+0

@ Fred-ii- coz 그것은 mysql에 들어가고있다 ... – bob

답변

0

내가 코멘트 영역에 명시된 바와 같이 :

내가 그 많은 JS 모르겠지만, 그 위의 입력에 대해 가지고있는 $('.employment_block:last').after.....의 입력은 배열을 []을 가지고 있지 않기 때문에 나는 그들이 그들도 있어야하는지 확신하지 못한다.

영업 :

예, 난 그냥 체크. 당신이 옳았. 대답을 작성하면 올바르게 표시됩니다. - 밥

그래서 내가 옳았다 나는 따라서이 라인 일부 JS 오늘 ;-)

을 배운 :

$('.employment_block:last').after('<div class="row employment_block"><div class="col-md-3"><input type="text" name="job_title" placeholder="Job title"></div><div class="col-md-3"><input type="text" name="job_duration" placeholder="Duration (i.e. 3 months/1 year)"></div><div class="col-md-3"><input type="text" name="job_location" placeholder="Country"></div><div class="col-md-3 text-center"><button class="able_btn m-0 w-100 remove_employment"> remove </button></div></div>'); 
}); 

뿐만 읽고 입력에 대해 []를 추가해야 :

$('.employment_block:last').after('<div class="row employment_block"><div class="col-md-3"><input type="text" name="job_title[]" placeholder="Job title"></div><div class="col-md-3"><input type="text" name="job_duration[]" placeholder="Duration (i.e. 3 months/1 year)"></div><div class="col-md-3"><input type="text" name="job_location[]" placeholder="Country"></div><div class="col-md-3 text-center"><button class="able_btn m-0 w-100 remove_employment"> remove </button></div></div>'); 
}); 

배열로 처리하기 위해.

+0

그 점에 대해 감사드립니다. – bob

+0

@bob 당신이 가장 환영받는 밥, * 환호 * –

관련 문제