Как извлечь значения из таблицы базы данных и выходного массива для использования в форме Formify в Concrete5 5.8 - PullRequest
0 голосов
/ 25 сентября 2019

У меня нет большого опыта работы с массивами, которые должны быть заполнены из базы данных.

В моем контроллере у меня есть

$db = \Database::connection('esco_web_connection');
$dynamicStates = $db->executeQuery('SELECT * FROM Products_Premiums ');
$this->set('dynamicState', $dynamicStates);

И, на мой взгляд, у меня есть...

foreach($dynamicStates as $dynamicState){
  echo $dynamicState . "<br>";
}

Но все, что я получаю, это ...

Array
Array
Array
Array
etc....

Я в недоумении.Мне нужны все данные для настройки условных данных в выпадающих списках.Но я не могу получить данные для отображения.

Когда я печатаю_r, я вижу ...

Array ( [wpp_UID] => 738452 [wpp_UpdateDate] => 2019-09-16 [wpp_ProductNumber] => 2-48 [wpp_MfrNumber] => 2 [wpp_MfrName] => Widex Hearing Aid Company [wpp_Model] => Inteo- ITC [wpp_Model2] => [wpp_State] => [wpp_PricingName] => Protection Plus [wpp_PricingStyle] => ITC [wpp_StateDefaultAnnual] => 201 [wpp_StateDefaultMonthly] => 18 [wpp_Channel] => Earserv ) Array ( [wpp_UID] => 738453 [wpp_UpdateDate] => 2019-09-16 [wpp_ProductNumber] => 2-47 [wpp_MfrNumber] => 2 [wpp_MfrName] => Widex Hearing Aid Company [wpp_Model] => Inteo- CIC [wpp_Model2] => [wpp_State] => [wpp_PricingName] => Protection Plus [wpp_PricingStyle] => CIC [wpp_StateDefaultAnnual] => 223 [wpp_StateDefaultMonthly] => 20 [wpp_Channel] => Earserv ) Array ( [wpp_UID] => 738454 [wpp_UpdateDate] => 2019-09-16 [wpp_ProductNumber] => 2-50 [wpp_MfrNumber] => 2 [wpp_MfrName] =>

1 Ответ

0 голосов
/ 25 сентября 2019

Попробуйте это

    <?php 
    $db = \Database::connection('esco_web_connection');
    $dynamicState = $db->executeQuery('SELECT * FROM Products_Premiums');
    $this->set('dynamicState', $dynamicState);
    ?>
    <html>
        <head>
            <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        </head>
    <body>
    <label for="state">State</label>
    <select name="state" id="state">
        <option value="" selected="selected">Please Select</option>
      <?
        foreach($dynamicState as $dynamicStates) { ?>
        <option value="<?= $dynamicStates['wpp_State'] ?>"><?= $dynamicStates['wpp_State'] ?></option>
      <?
        } ?>
    </select> 

    <label for="manufacturer">Manufacturer</label>
    <select name="manufacturer" id="manufacturer">
        <option value="" selected="selected">Please Select</option>
    </select>

    <script type="text/javascript">
        $(document).ready(function () {
            $('#state').change(function() {
                var sel_state = $(this).val();
                .ajax({
                    type: "POST",
                    url: "fetch_mfrName.php",
                    data: 'state=' + sel_state,
                    success: function(result-array) {
var result = JSON.parse(result-array);
                        result.each(function(){
                            $('#manufacturer').append('<option value="'+result['wpp_MfrName']+'">'+result['wpp_MfrName']+'</option>');
                        });
                        $('#manufacturer').change(function() {
                            ////...next ajax if you need
                        });
                    } 
                });
            }); 
        }); 
    </script>
    </body>
    </html>

Создайте php-файл с именем файла 'fetch_mfrName.php'

<?php    
include 'connect_to_db.php';
    $state = mysql_real_escape_string($_POST['state']);
    $query = "SELECT `wpp_MfrName` FROM `Products_Premiums` WHERE `wpp_State`='$state'";
    $mfr_names = mysql_query($query);

    echo mysql_fetch_assoc($mfr_names);
?>
...