выбрать несколько строк из MySQL и отправить в функцию поста jquery в php - PullRequest
0 голосов
/ 13 июня 2018

В моем приложении мне нужно загружать данные в зависимости от категории.Что я делаю, когда кликаю по категории, вызывается функция клика, где я беру идентификатор категории и передаю методу $.post на страницу php load_project.php.На этой странице я выбираю проекты на основе идентификатора категории, и мне нужно отправить обратно выбранные строки в функцию успеха.Моя проблема в том, что когда я отправляю данные обратно, в моем массиве я получу только последнюю строку при предупреждении о данных.Я не знаю, куда я иду.Может кто-нибудь, пожалуйста, помогите мне.

Php-страница:

<script>

    $(document).ready(function() {

        $("#categorylink").click(function() {
            cid = $(this).attr("data-cid");
            $.post('load_project.php', { cid: "" + cid + "" }, function(data) {
                alert(data); //here I get only one row, but there is actually 3 rows
            });

        });
    });
</script>

<ul>
    <a><li data-filter="all">>All</li></a>
    <?php $get=$config->get_cat();
        while($row = $get->fetch(PDO::FETCH_ASSOC)) {
    ?>
        <a id="categorylink" data-cid="<?php echo $row['category_id'];?>">
            <li>
                <?php echo $row['category_name'];?>
            </li> 
        </a>  //this is my categories
    <?php } ?>
</ul>

load_project.php

<?php

    require_once 'config.php';
    $config = new DBConfig;

    if(isset($_POST['cid'])) 
    {
        $cid=$_POST['cid'];


        $get=$config->getprojectbycategory($cid);

        while($row=$get->fetch(PDO::FETCH_ASSOC)) {

            $results['projects'] = $row;
        }
        echo json_encode($results);
    }
?>

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

Редактировать 1

Когда я пытаюсь так:

$results[] .= $row['project_name'];

Я получаю триимена проектов в оповещении: [[],"Private Palace","Private Villa F","23rd Floor Addax Tower"]

1 Ответ

0 голосов
/ 13 июня 2018

Эта проблема связана с тем, что значения, хранящиеся в массиве, перезаписываются предыдущими значениями.

Решением для этого является объявление $results['projects'] = array(); перед циклом while.

    $results['projects'] = array();
    while($row=$get->fetch(PDO::FETCH_ASSOC)){

    $results['projects'] = $row['project_name'];
    }
...