1

現在、ユーザーがスキルを追加できるページがあります。これは、スキルレベルを選択するためのテキストボックスとスライダーで構成されており、すべて機能しています。

スキルのリストを持つデータベース テーブル'skill_list'があり、ユーザーがテキスト ボックスに入力を開始すると、適切なスキルが jquery オートコンプリートで表示されます。ただし、ユーザーはほとんど何でも好きなように入力して、このスキルを保存し、 という別のデータベース テーブルに挿入できます'skills'

'skills'テキストがデータベース テーブル内のスキル名と正確に等しい場合にのみ、テキスト ボックス内のデータをデータベース テーブルに挿入できるようにしたい'skill_list'ですか? したがって、ユーザーは追加したスキルを保存できず、AJAX を使用してエラーが表示される可能性があります。

見る

<form method="post" action="skills/add" id="container">  

<script>

$.fn.addSlide = function () {
return this.each(function () {
    var $this = $(this),
        $num = $('.slide').length++,
        $name = $('<input type="text" class="inputField" id="autoskill-' + $num + '" name="skill-' + $num + '" placeholder="What\'s your skill?"></div>'),
        $slide = $('<br><div class="slide" id="slider-' + $num + '"></div><br>'),
        $amt = $('<input name="amount-' + $num + '" id="amount-' + $num + '" class="inputField" readonly placeholder="Slide to select this skill level..."/><br>');
    $this.append($name).append($amt).append($slide);
    $('.inputField').autocomplete({
        source:'skills/auto', 
        minLength:2
    });
    console.log($('#autoskill'));
    $slide.slider({
        value: 0,
        min: 0,
        max: 5,
        step: 1,
        slide: function (event, ui) {
            $amt.val(ui.value); 
        }
    });
});
}

$('body').on('click', '.addNew', function(event) {
event.preventDefault();
$('#newFields').addSlide();
}); 

var count = 0;  

$(document).ready(function(){   

$('.addNew').click( function(event){
    event.preventDefault();
    $('#length').html(count);       
    count++;
});

$('.submitButton').click( function(event){
    $('#container').append('<input type="hidden" name="count" value="' + count + '">');
});

});



</script>

<button class="addNew submitButton"> Add a Skill </button><br>

<div id="newFields"></div>

<input type="submit" class="submitButton" value="Save Skills">

</form>

コントローラ

public function auto(){

    $skill = $_GET['term'];

    $query = $this->db->query('SELECT * from skill_list WHERE name LIKE "%'.$skill.'%" ORDER by name ASC LIMIT 10');

    $data = array();

    if ( $query && $query->num_rows() ){

        foreach ($query->result_array() as $row){

            $data[$row['id']]=$row['name'];     

        }

    }

    echo json_encode($data);
    flush();

}

public function add(){

    $this->load->view('header');

    $id = $this->session->userdata('id');

    $skill_points = 0;

    for ($i = 0; $i < $_POST['count']; $i++) {

        $skill = $_POST['skill-'.$i.''];
        $level = $_POST['amount-'.$i.''];
        $points = $_POST['amount-'.$i.''] + 1;

        $query = $this->db->get_where('jobseeker_profiles', array('jobseeker_id' => $id));
        $user = $query->row_array();

        $this->db->set('jobseeker_profile_id', $user['id']);
        $this->db->set('name', $skill);
        $this->db->set('level', $level);
        $this->db->set('points_value', $points);

        $this->db->insert('skills');

        $skill_points += $points;
    }

    $this->db->set('skills_value', $skill_points);
    $this->db->where('jobseeker_id', $id);
    $this->db->update('jobseeker_profiles');

    $query = $this->db->get_where('jobseeker_profiles', array('jobseeker_id' => $id));
    $user = $query->row_array();

    $skills = $user['skills_value'];
    $qualifications = $user['qualifications_value'];
    $work_history = $user['work_history_value'];

    $total = $skills + $qualifications + $work_history;

    $this->db->set('total_points_value', $total);
    $this->db->where('jobseeker_id', $id);      
    $this->db->update('jobseeker_profiles');

    $this->db->set('points_value', $total);
    $this->db->where('jobseeker_profile_id', $user['id']);
    $this->db->update('applications');

    redirect('skills');

}   

ありがとう

4

0 に答える 0