Ajax / JSON возвращает только 1 результат из файла PHP / SQL - не могу найти решение - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь получить данные на основе AJAX / JSON, возвращает массив из другого файла, где у меня есть цикл PHP While, но он возвращает только 1 данные и ничего больше.У меня есть 11 строк, чтобы показать.

Я пытался найти в Google, YouTube и многих других местах, что я делаю неправильно.Я использую последнюю версию jQuery и jQuery UI.Я пытался прочитать данные console.log в разных местах, и я также пытался с разными именами.Все еще ничего.

HTML:

$HTMLOUT .= '<div class="container">';
    $HTMLOUT .= '<h4 class="text-center mt-3">Quick Search</h4>';
    $HTMLOUT .= '<form>';
        $HTMLOUT .= '<div class="form-row py-3">';
            $HTMLOUT .= '<div class="col-12 col-md-3">';
                $HTMLOUT .= '<select id="AJAX_ID_category" class="custom-select custom-select-sm">';
                    //$HTMLOUT .= '';
                $HTMLOUT .= '</select>';
            $HTMLOUT .= '</div>';
            $HTMLOUT .= '<div class="col-12 col-md-3">';
                $HTMLOUT .= '<select id="AJAX_ID_brand" class="custom-select custom-select-sm">';
                    //$HTMLOUT .= '';
                $HTMLOUT .= '</select>';
            $HTMLOUT .= '</div>';
            $HTMLOUT .= '<div class="col-12 col-md-3">';
                $HTMLOUT .= '<select id="AJAX_ID_model" class="custom-select custom-select-sm">';
                    //$HTMLOUT .= '';
                $HTMLOUT .= '</select>';
            $HTMLOUT .= '</div>';
            $HTMLOUT .= '<div class="col-12 col-md-3">';
                $HTMLOUT .= '<button type="submit" class="btn btn-danger" name="FORM_NAME_submit">Quick Search</button>';
            $HTMLOUT .= '</div>';
        $HTMLOUT .= '</div>';
    $HTMLOUT .= '</form>';
$HTMLOUT .= '</div>';

PHP:

// (index.php) = Quick Search > Categories
if(isset($_POST['action']) && $_POST['action'] == "get_categories") {
    //header('Content-Type: application/json'); // not needed, but a good idea to set!
    $connect = mysqli_connect("localhost","root","","backup_job_v1_www_oppulense_com_backup_1");
    $sql = "SELECT * FROM vehicle_category";
    $result = mysqli_query($connect, $sql);
    $json = array();
    $json['ARRAY_get_categories']['count_total_returns'] = 0;
    //while($row = mysqli_fetch_array($result)) {
    while($row = mysqli_fetch_assoc($result)) {
        $json['ARRAY_get_categories']['id'] = $row['category_id'];
        $json['ARRAY_get_categories']['name'] = (!$row['category_name'] == NULL ? $row['category_name'] : "None");
        $json['ARRAY_get_categories']['count_total_returns']++;
    }
    echo json_encode($json);
}

// (index.php) = Quick Search > Brands
if(isset($_POST['action']) && $_POST['action'] == "get_brands_from") {
    header('Content-Type: application/json'); // not needed, but a good idea to set!
    $connect = mysqli_connect("localhost","root","","backup_job_v1_www_oppulense_com_backup_1");
    $sql = "SELECT * FROM vehicle_brand WHERE v_b_FK_category_id = ".$_POST['id_cat']."";
    $result = mysqli_query($connect, $sql);
    $json = array();
    while($row = mysqli_fetch_array($result)) {
        $json['ARRAY_get_brands']['id'] = $row['brand_id'];
        $json['ARRAY_get_brands']['name'] = (!$row['brand_name'] == NULL ? $row['brand_name'] : "None");
    }
    echo json_encode($json);
}

// (index.php) = Quick Search > Models
if(isset($_POST['action']) && $_POST['action'] == "get_models_from") {
    //header('Content-Type: application/json'); // not needed, but a good idea to set!
    // Models
}

jQuery:

var base_route = "";
$(document).ready(function() {
    get_categories();
});
function get_categories() {
    var items = "<option selected value=''>SELECT CATEGORY</option>";
    $.ajax({
        type: "POST",
        url: base_route+"inc/ajax-handler.php",
        data: {action:"get_categories"},
        dataType: 'JSON',
        success:function(response){
            if(response != null){
                $.each(response, function(index, value){
                    console.log(index);
                    console.log(value);
                    if(value.name != 'None'){
                        items+="<option value='"+value.id+"'>"+value.name+"</option>";
                    }
                });
                $("#AJAX_ID_category").html(items);
            }
        }
    });
}
function get_brands_from(category){
    var items = "<option selected value=''>SELECT BRAND</option>";
    $.ajax({
        type: "POST",
        url: base_route+"inc/ajax-handler.php",
        data: {action:"get_brands_from", id_cat:category},
        dataType: 'JSON',
        success:function(response){
            if(response != null){
                $.each(response, function(index, value){
                    console.log(index);
                    console.log(value);
                    if(value.name != 'None'){
                        items+="<option value='"+value.id+"'>"+value.name+"</option>";
                    }
                });
                $("#AJAX_ID_brand").html(items);
                $("#AJAX_ID_brand").selectmenu('refresh', true);
            }
            //$("#AJAX_ID_model").html("<option selected value=''>SELECT MODEL</option>");
            //$("#AJAX_ID_model").selectmenu('refresh', true);
        }
    });
}
function get_models_from(category, brand){
    var items = "<option value=''>Select a Model</option>";
    $.ajax({
        type: "POST",
        url: base_route+"inc/ajax-handler.php",
        data: {action:"get_models_from", id_cat:category, id_brand:brand},
        dataType: 'json', success:function(response){
            if (response != null){
                $.each(response, function(index, value){
                    console.log(index);
                    console.log(value);
                    if(item.name.indexOf(' in ') < 0){
                        items+="<option value='"+value.name.split(' ').join('-').toLowerCase()+"'>"+value.name+"</option>";
                    }
                });
                $("#AJAX_ID_model").html(items);
                $("#AJAX_ID_model").selectmenu('refresh', true);
            }
        }
    });
}
$( "#AJAX_ID_category" ).selectmenu({
    change: function( event, ui ){
        var category = $(this).val();
        get_brands_from(category);
    }
});
$( "#AJAX_ID_brand" ).selectmenu({
    change: function( event, ui ){
        var brand = $(this).val();
        var category = $("#sel_category").val();
        get_models_from(category, brand);
    }
});
$( "#AJAX_ID_model" ).selectmenu({
    change: function( event, ui ){
        var model = $(this).val();
        window.location.href = location.href+"car/"+model
    }
});

У меня есть 3 различных выбора / опции htmlкоробки.Я хочу извлечь категории, марки и транспортные средства.В первом выпадающем списке категорий я хочу просто извлечь каждую категорию, запустив AJAX.Я не в состоянии сделать это.Это дает мне 1 результат и больше ничего не возвращает, хотя я знаю, что у меня есть 11 различных строк в базе данных MySQL (PhpMyAdmin).

После выбранной категории я хочу показать параметры в следующем выбранномлиния, основанная на идентификаторе из категорий и после выбора категории бренда, я хотел бы показать транспортные средства, конечно же, на основе обоих идентификаторов.В этом случае теперь из категории И идентификатор бренда.

После того, как транспортное средство было выбрано, я бы хотел, чтобы кнопка отправки появлялась в виде постепенного появления через jquery.

Когданажата кнопка отправки, пользователь должен быть перенаправлен на страницу (details.php? id = x).

Обратите внимание, что код все еще не завершен, я только что боролся с этой частьюкода на некоторое время сейчас и до сих пор делают.Надеюсь, вы можете помочь.Заранее большое спасибо.

1 Ответ

0 голосов
/ 03 февраля 2019

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

Каждый раз, когда он добавляет содержимое (в одном назначении), используя [], я также использую null coalesce (??), чтобы установить имя ...

while($row = mysqli_fetch_assoc($result)) {
    $json['ARRAY_get_categories'][] = ['id' => $row['category_id',
                 'name' => $row['category_name'] ?? "None"];
    $json['ARRAY_get_categories']['count_total_returns']++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...