How to fetch values from database table and output array for use in Formify form in Concrete5 5.8

313 views Asked by At

I don't have a lot of experience with arrays that are to be populated from a database.

In my controller I have

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

And in my view I have...

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

But, all I get is ....

Array
Array
Array
Array
etc....

I am at a loss here. I need all the data to setup conditional data in form dropdowns. But, I can't get any data to display.

When I print_r I see...

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

There are 1 answers

1
Rafeeq Mohamed On

Try this

    <?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>

Create a php file, file name as '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);
?>