Как отображать данные с помощью переключателей на основе выпадающего списка? - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь динамически генерировать переключатели с данными перед ними. Данные, которые должны отображаться перед переключателем, основаны на раскрывающемся списке, который также отображает некоторые данные в текстовом поле с использованием JavaScript.

Я пытался взять выбранную опцию в строке и использовать ее в следующем запросе, но я знаю, что делаю это неправильно.

Подключение к базе данных

$db = pg_connect("");
$query = "select account_name,account_code,address1,address2,address3 FROM 
customers";
$result = pg_query($db,$query);

// НОВЫЙ ЗАПРОС

 $sql1= "select name from conferences";
      $result1= pg_query($db, $sql1);

// END

// Новый код

 <select class="form-control" id="conference"  name="conference">
 <option value="">Select Conference...</option>
 <?php while($rows1 = pg_fetch_assoc($result1)) { ?>
    <option value="<?= $rows1['code']; ?>"><?= $rows1['name']; ?></option>
 <?php } ?>
 </select>
                <br>

// КОНЕЦ НОВОГО КОДА

Раскрывающийся список для выбора данных.

<select onchange="ChooseContact(this)" class="form-control" 
id="account_name"  name="account_name" >

<?php
while($rows= pg_fetch_assoc($result)){ 
echo  '<option value=" '.$rows['address1'].'  '.$rows['address2'].' 
'.$rows['address3'].''.$rows['account_code'].'">'.$rows['account_name'].' 
'.$_POST[$rows['account_code']].' 
</option>';
}?>
</select> 

Отображение данных в текстовой области на основе выбранного значения с использованием JavaScript. (Код работает до сих пор)

<textarea readonly class="form-control" style="background-color: #F5F5F5;" 
id="comment" rows="5" style="width:700px;"value=""placeholder="Address..."> 
</textarea>
                <script>
                function ChooseContact(data) {
document.getElementById ("comment").value = data.value;
            }
                </script> 

Отображение данных перед переключателями на основе выбранной опции (Этот код работает, если я использую в запросе случайное значение, но не если я использую выбранное значение «account_code» из предыдущего запроса. Я использую Метод POST GET для переноса выбранного значения)

 <?php

// НОВЫЙ КОД

 $sql = "select  order_number, order_date from orders where 
 customer_account_code =  '3000614' and conference_code='DS19-'"; <-Data 
 gets displayed when put random value like this.

 $code = $_GET[$rows['account_code']];
 $conf = $_GET[$rows1['conference_code']];
 $sql = "select  order_number, order_date from orders where 
customer_account_code = '$code' and conference_code= '$conf']"; <- But I 
want to display the data against the selected value, i.e, the 'account_code' 
in the variable $code from the dropdown select 

// END

$res = pg_query($db,$sql);

while($value = pg_fetch_assoc($res) ){
echo "<input type='radio' name='answer' 
value='".$value['order_number']." ".$value['order_date']."'>" 
.$value['order_number'].$value['order_date']." </input><br />";
                    }
                    ?>

Мне нужно помочь найти способ поместить выбранный «account_code» в переменную и использовать его в запросе $ sql.

1 Ответ

0 голосов
/ 02 января 2019

Пожалуйста, попробуйте с этим кодом: (Это работает для меня)

1- Добавьте эту строку в ваш HTML <head>:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript"></script>

2- Измените свой КОД на это:

Раскрывающийся список для выбора данных:

<select class="form-control" id="account_name"  name="account_name">
    <option value=""></option>
    <?php while($rows = pg_fetch_assoc($result)) { ?>
        <option value="<?= $rows['address1'].' '.$rows['address2'].' '.$rows['address3'].'-'.$rows['account_code']; ?>"><?= $rows['account_name']; ?></option>
    <? } ?>
</select>

Отображение данных в текстовой области на основе выбранного значения с помощью jQuery:

<textarea readonly class="form-control" style="background-color: #F5F5F5;" 
id="comment" rows="5" style="width:700px;" value="" placeholder="Address..."></textarea>

JQuery код:

<script type="text/javascript">
    $('#comment').val($('#account_name').val()); // MAKE A DEFAULT VALUE
(function($) {
    $('#account_name').change(function() {
        $('#results').html(''); // REMOVE THE OLD RESULTS 
        var option = $(this).val();
        $('#comment').val(option);
        // EDIT RADIO WITH AJAX 
        $.ajax({
            type: "POST",
            url: "path/test.php",
            dataType:'JSON',
            data: $('#account_name').serialize()
        }).done(function(data) {
            for (var i = 0; i < data.length; i++) {
                // ADD RADIO TO DIV RESULTS
                $('#results').append('<input type="radio" name="answer" value="'+data[i].order_number+'">'+data[i].order_date+'</input><br>');
            }
        });
    });
})(jQuery);
</script>

после этого добавьте этот HTML-код на свою страницу, , чтобы показать РЕЗУЛЬТАТЫ ОТ AJAX DATA

<!-- RADIOs -->
<div id="results"></div>

3- Создайте новый файл, например path / test.php

в этом файле используйте этот КОД для возврата значений с JSON :)

<?php
header('Content-type: application/json');

// CONNECT (JUST USE YOUR CUSTOM CONNECTION METHOD & REQUIRE CONFIG FILE IF YOU WANT)
$db = pg_connect("");

$value = explode('-', $_POST['account_name']);

// EXPLODE AND GET LAST NUMBER AFTER < - >
$code = (int) end($value);

$sql = "select order_number, order_date from orders where customer_account_code =  '$code'";

$res = pg_query($db, $sql);

// CREATE JSON RESULTS
$is = '';
while($data = pg_fetch_assoc($res)) {
    $is .= json_encode($data).', ';
}

// AND GET ALL 
echo '['.substr($is, 0, -2).']';
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...