Ajax Modal: вернуть выбранное значение из выпадающего списка в форму обновления - PullRequest
0 голосов
/ 16 мая 2018

Я искал везде на этом сайте и перепробовал много решений, но ни одно из них не помогло мне!Моя проблема заключается в следующем:

У меня есть 2 таблицы:

TABLE INFO_STATUS (status_id, status_desc)
и
TABLE INFO_MARQUES (comp_id, comp_desc, comp_status(INT))

Я связываю comp_status и status_id чтобы строка в INFO_MARQUES получала текущий статус.

Что бы я хотел сделать?(ИЗДАНО ЗДЕСЬ)
2.получить текущее значение состояния info_marques, расположенное в comp_status, автоматически выбираемое в раскрывающемся списке при открытии формы обновления

Пример Я хочу обновить эту компанию:

comp_id : 15
comp_desc : WEISS
comp_status : 1

Предполагая, что в таблице info_status:

status_id = 1
status_desc = FOLLOW-UP

Когда я открываю форму обновления, я хочу видеть это: Проверьте это

MyМодально: (РАБОТАЕТ)

                        <select class="form-control" name="select_status">
                        <option value=''>Selectionner</option>
                    <?php 
try {
                    $user = new USER();
                    $output = array();
                    $stmt = $user->runQuery("SELECT * FROM info_status");
                    $stmt->execute();
                    $result=$stmt->fetchAll();

                    foreach($result as $row) {
                        echo '<option value='.$row["status_id"].'>'.$row["status_desc"].'</option>';
                    }
}
                    catch(PDOException $e) {
                    printf('Erreur MySQL %d : %s', $e->getCode(), $e->errorInfo[2]);
                    exit;

}
?>
                    </select>

Мой Ajax

$(document).on('click', '.update', function(){ 
        var user_id = $(this).attr("id");
        var array = [];
        $('select :selected').each(function(i,value)
        {
        array[i] = $(this).val();
        });     
        $.ajax({
            url:"partials/test/fetch_single.php",
            method:"POST",
            data:{user_id:user_id},
            dataType:"json",
            success:function(data)
            {
                $('#userModal').modal('show');
                $('#comp_name').val(data.comp_name);
                $('#comp_parent').val(data.comp_parent);

                $.each($('.select_status option'),function(a,b){

                if($(this).val()== data.comp_status){   
                $(this).attr('selected',true)
                }

                });

                $('.modal-title').text("Modifier un fichier client");
                $('#user_id').val(user_id);
                $('#user_uploaded_image').html(data.user_image);
                $('#action').val("Edit");
                $('#operation').val("Edit");

            }

        })
    });

тогда моя страница PHP: (РАБОТАЕТ)

if(isset($_POST["user_id"]))
{
    $output = array();
    $statement = $connection->prepare(
        "SELECT * 
FROM info_marques AS m 
LEFT JOIN info_status AS s 
ON s.status_id = m.comp_status 
WHERE m.id = '".$_POST["user_id"]."' 
LIMIT 1"
    );
    $statement->execute();
    $result = $statement->fetchAll();
    foreach($result as $row)
    {
        $output["comp_name"] = $row["comp_name"];
        $output["comp_parent"] = $row["comp_parent"];
        $output["comp_status"] = $row["status_desc"];

    }

    echo json_encode($output);
}

Что мне здесь не хватает?

Приветствия

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Я нашел решение, которое сработало, но не уверен, что оно очень чистое.

Для тех, кому интересно знать:

HTML

<select class="form-control" name="select_status" id="status">
                        <option value=''>Selectionner</option>
                    <?php 
try {
                    $user = new USER();
                    $output = array();
                    $stmt = $user->runQuery("SELECT * FROM info_status");
                    $stmt->execute();
                    $result=$stmt->fetchAll();

                    foreach($result as $row) {
                        echo '<option value='.$row["status_id"].'>'.$row["status_desc"].'</option>';
                    }
}
                    catch(PDOException $e) {
                    printf('Erreur MySQL %d : %s', $e->getCode(), $e->errorInfo[2]);
                    exit;

}
?>
                    </select>

Мы перечисляем все опции в моей таблице в раскрывающемся списке

AJAX

$(document).on('click', '.update', function(){
        var user_id = $(this).attr("id");   
        $.ajax({
            url:"partials/test/fetch_single.php",
            method:"POST",
            data:{user_id:user_id},
            dataType:"json",
            success:function(data)
            {
                $('#userModal').modal('show');
                $('#comp_name').val(data.comp_name);
                $('#comp_parent').val(data.comp_parent);
                $('#status').val(data.select_status);
  • выбор правильного значения со страницы PHP и отправка в раскрывающийся список, так что это значение выбирается при открытииформа (ПРОБЛЕМА БЫЛА ЗДЕСЬ)

            $('.modal-title').text("Modifier un fichier client");
            $('#user_id').val(user_id);
            $('#user_uploaded_image').html(data.user_image);
            $('#action').val("Edit");
            $('#operation').val("Edit");
    
        }
    
    })
    

    });

PHP

if(isset($_POST["user_id"]))
{
    $output = array();
    $statement = $connection->prepare(
        "SELECT * 
FROM info_marques AS m 
LEFT JOIN info_status AS s 
ON s.status_id = m.comp_status 
WHERE m.id = '".$_POST["user_id"]."' 
LIMIT 1"
    );
    $statement->execute();
    $result = $statement->fetchAll();
    foreach($result as $row)
    {
        $output["comp_name"] = $row["comp_name"];
        $output["comp_parent"] = $row["comp_parent"];
        $output["status"] = $row["status_id"]; 

мы возвращаем значение совпадения

    }

    echo json_encode($output);
}
0 голосов
/ 16 мая 2018

Я не уверен, что если вы хотите заполнить раскрывающийся список или выбрать данные на основе вашего ответа, но если вы хотите выбрать данные и у вас уже есть варианты в раскрывающемся списке, вы можете сделать это:

 $.each($('#select_status option'),function(a,b){

    if($(this).val() == data.comp_status){
              $(this).attr('selected',true)
    }

    });

Но если вы хотите заполнить, вам придется добавить его с помощью .append ().Дайте мне знать, если проблема - что-то другое, и я могу дать вам решение.

Как вы говорите, вам нужен весь статус, а затем покажите текущий статус.то, что я хотел бы предложить, это использовать метод .done () ajax.Это пригодится, как:

$("#select_status").prop('disabled',true)
$('#select_id').append('<option>Please wait... Fetching status</option>');
var status_options;
$.ajax({
 url:"your_page_for_all_status.php",
 success: function(e){
    //add <option> tags to a variable using loop
 }

}).done(function(){
 $.ajax({
   //ajax call to get current data. Compare and select data here. write your $.each here
  }).done(function(){
     $("#select_status").prop('disabled',false);
  });
});

Тебе должно быть хорошо идти сейчас !!!Мне жаль, если я сделал это сложным.

...