Проблема с выводом json массива

273
15 ноября 2017, 02:04

Всем привет. Такая проблемка, с сервера загружаю объявления, в том числе и пути к изображениям. Объясню суть, я посылаю запрос серверу, он формирует список объявлений в текущей категории и пытаюсь создать массив уже в текущем массиве img_name[]. Перед добавлением строк в массив я создаю запрос в БД (если 'id_ads равен $row['id'], то добавить строку. Строки добавляются, но и добавляются те, которые ни как не подходят под моё условие. Т.е. например я вытаскиваю пути изображений для объявления с id=233, в базе которого 2 фото(пути), а в объявлении с id=234, 1 фото(путь) то в ответе от сервера я получаю на каждое объявление не нужные мне пути к фоткам. Пример:

"id": "234",
        "user_id": "1",
        "img_name": [
            "1_img.jpg" --- id_ads == 234
        ]
 "id": "233",
        "user_id": "1",
        "img_name": [
            "1_img.jpg", --- id_ads == 234 !!!! - откуда?
            "2_img.jpg", --- id_ads == 233
            "3_img.jpg"  --- id_ads == 233
        ]

В общем приложу скрины ещё, объяснил как мог. Помогите пожалуйста. Вот серверная функция

function adsLoading($cat) { 
    $sql = mysql_query('SELECT * FROM `ads` WHERE `new_ads` = "0" AND `cat` = '.$cat.' ORDER BY `id` DESC');
    if(mysql_num_rows($sql) > 0) {
        while($row = mysql_fetch_array($sql)) {
            $id = $row['id'];
            $data['id'] = id;   
            $user_id = $row['user_id'];
            $data['user_id'] = $user_id;    
            $picAds = mysql_query('SELECT * FROM `upload_img_ads` WHERE `user_id` = 1 AND `temp` = 0 AND `id_ads` = '.$id.'');
            if(mysql_num_rows($picAds) > 0) {
                while($img = mysql_fetch_array($picAds)) {
                    $image = $img['img_name'];
                    $id_ads = $img['id_ads'];
                    $data['img_name'][] = $image;   
                }
            }       
            $vrl['data'][] = $data;
        }
    } else {
        $data['id'] = 0;
        $vrl['data'][] = "";    
    }
    exit(json_encode(array("data" => $vrl['data'])));
}

На скриншоте видно, что в массиве с id=232, каким то чудом добавляются данные не принадлежащие данному id, не смотря на то, что в условии выборки так и обозначено.

Answer 1

Вы просто должны понять что Вы переиспользуете уже заполненный массив.
Лишние строки остаются там с предыдущих итераций цикла.

function adsLoading($cat) { 
    $sql = mysql_query('SELECT * FROM `ads` WHERE `new_ads` = "0" AND `cat` = '.$cat.' ORDER BY `id` DESC');
    if(mysql_num_rows($sql) > 0) {
        while($row = mysql_fetch_array($sql)) {
            $id = $row['id'];
            /*
             * Инициализация!
             */
            $data = array();
            $data['id'] = id;   
            $user_id = $row['user_id'];
            $data['user_id'] = $user_id;    
            $picAds = mysql_query('SELECT * FROM `upload_img_ads` WHERE `user_id` = 1 AND `temp` = 0 AND `id_ads` = '.$id.'');
            if(mysql_num_rows($picAds) > 0) {
                while($img = mysql_fetch_array($picAds)) {
                    $image = $img['img_name'];
                    $id_ads = $img['id_ads'];
                    $data['img_name'][] = $image;   
                }
            }       
            $vrl['data'][] = $data;
        }
    } else {
        $data['id'] = 0;
        $vrl['data'][] = "";    
    }
    exit(json_encode(array("data" => $vrl['data'])));
}
READ ALSO
Загрузка товаров на сайт WordPress c помощью db (php)

Загрузка товаров на сайт WordPress c помощью db (php)

Всем привет! в этом деле нет большого опыта, но вот столкнулся с задачей когда на сайт на WP нужно загрузить каталог ( 100 + позиций) подскажите...

316
Скачать с Google Cloud Storage PHP

Скачать с Google Cloud Storage PHP

Получаю объект, ссылку на файл, но не понимаю как скачать

216
DOC to PDF converter

DOC to PDF converter

Подскажите какой-то удобный конвертерХорошо если это будет либа php-шная, но пойдет и какая-то даже программа (разумеется под линукс) которую...

246
Как преобразование строки в дату на примере?

Как преобразование строки в дату на примере?

ПриветствуюМне необходимо перевести из строки в дату переменную

239