Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275

Из БД вытащить данные в массив

25.01.2023, 16:36. Показов 1821. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет!...

мне нужно из БД вытащить данные и вставить в массив.
пример массива таков:

Code
1
2
3
4
5
6
7
8
9
10
$arModels = array(
    'AC' => array(
        '1-series' => '1-series',
        '2-series' => '2-series',
        '3-series' => '3-series',
        '4-series' => '4-series',
        '5-series' => '5-series',
    ),
 
);
Пытался делать запросом и циклом - таким вариантом:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$arModels = array(
    $array_models_db = mysqli_query($db,"SELECT * FROM `section`");
    if (!$array_models_db)
    {
    echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
    exit(mysqli_error());
    }
    if (mysqli_num_rows($array_models_db) > 0){
    $array_models_db_row = mysqli_fetch_array($array_models_db);
    do
    {
 
    }
    while ($array_models_db_row = mysqli_fetch_array($array_models_db));
    }
);
но мне выдает ошибку на эту строчку:

PHP
1
$array_models_db = mysqli_query($db,"SELECT * FROM `section`");
Code
1
Parse error: syntax error, unexpected ';', expecting ')' in D:\OSPanel\domains\***\settings\cars.php on line 4
думал сразу вывести данные из двух таблиц и не получается. подскажите что не так делаю
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2023, 16:36
Ответы с готовыми решениями:

Как вытащить из свойства fields recordset вытащить данные в массив
Как вытащить из свойства fields recordset вытащить данные в массив ассоциативный , подскажите плиз

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

Найти в запросе нужную колонку и вытащить данные в массив
Доброго времени суток. Прошу помощи, программирую сейчас в Rad Studio 2010(Delphi), до этого в основном на php. Так вот, вытаскиваю из...

44
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
25.01.2023, 19:29
Студворк — интернет-сервис помощи студентам
...В общем примеров нету
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.01.2023, 19:32  [ТС]
Phantom-84,
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Вот прям так, как я написал.
вот я примерно сделал так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
include('db.php');
 
$arModels = array();
$array_series_db = mysqli_query($db,"SELECT * FROM `category` WHERE `section`='".$arModels."'");
if (!$array_series_db)
{
echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
exit(mysqli_error());
}
if (mysqli_num_rows($array_series_db) > 0){
$array_series_db_row = mysqli_fetch_array($array_series_db);
$arModels[] = $array_series_db_row['section'];
do
{
$arModels[] = $array_series_db_row['category'];
}
while ($array_series_db_row = mysqli_fetch_array($array_series_db));
}
 
 
?>
или я что то не допонял
0
Эксперт PHP
 Аватар для liris
5512 / 1195 / 164
Регистрация: 16.01.2023
Сообщений: 2,841
25.01.2023, 19:33
Цитата Сообщение от kuzmich-kz Посмотреть сообщение
или я что то не допонял
Пока выглядит так, что вы вообще не понимаете, что делаете, и хаотичными действиями пытаетесь подобрать комбинацию, которая сработает.
1
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.01.2023, 19:37  [ТС]
liris,
PHP
1
2
3
4
5
6
// Добавление элемента по ключу
$arr['city'] = 'Moscow';
 
// Добавление элемента в конец списка
$arr2[] = 'BMW';
$arr2[] = 'Mercedes';
PHP
1
$arr['city']
- я так понимаю массив берет данные из столбца city

остальные массивы можно использовать для извлечение данных их второй таблицы
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
25.01.2023, 19:38
Цитата Сообщение от kuzmich-kz Посмотреть сообщение
или я что то не допонял
Начните с учебника и простых задач. Не засоряйте форум подобным кодом.
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.01.2023, 19:38  [ТС]
Phantom-84,
Цитата Сообщение от Phantom-84 Посмотреть сообщение
...В общем примеров нету
зачем вообще тогда тратить свое время если не можете, а я бы сказал не хотите. могли бы пройти мимо
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
25.01.2023, 19:45
Цитата Сообщение от kuzmich-kz Посмотреть сообщение
зачем вообще тогда тратить свое время
Чтобы объяснить вам, как нужно учиться. У вас какой-то невменяемый подход. Это не стеб. Я пишу это, чтобы вам помочь.
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.01.2023, 19:47  [ТС]
Phantom-84,
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Чтобы объяснить вам, как нужно учиться. У вас какой-то невменяемый подход. Это не стеб. Я пишу это, чтобы вам помочь.
так вот попробуйте объяснить как это делает liris.

я реально не понимаю это хочу понять как реализовать
0
Эксперт PHP
 Аватар для liris
5512 / 1195 / 164
Регистрация: 16.01.2023
Сообщений: 2,841
25.01.2023, 20:02
Цитата Сообщение от kuzmich-kz Посмотреть сообщение
PHP
1
$arr['city']
- я так понимаю массив берет данные из столбца city
В моём примере не берёт, а кладёт.

Добавлено через 53 секунды
Про мой пример. Он не связан с базой и таблицами вообще.
Массив != БД. Это вообще разные вещи. Но часто встречаются вместе.
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.01.2023, 20:11  [ТС]
liris, только что нашел один пример и сделал так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
include('db.php');
 
$arModels = array();
if (isset($_GET['title'])){
        
    // переводим все лишние символы в html сущности
    $title = htmlspecialchars($_GET['title'],ENT_QUOTES);
    echo $title;
    // выполняем запрос
    $res = mysqli_query($db,"SELECT `category` FROM `category` WHERE `section` = '".$title."'");
    if ($res){
        if (mysqli_num_rows($res) > 0){
            while($arr = mysqli_fetch_assoc($res)){
                $arModels[] = $arr;
            }
        }
    }
}
 
// отдаем результат
echo json_encode($arModels);
 
?>
теперь выходит такое если я в адресной строке наберу - http://findparts/settings/cars.php?title=AC
Code
1
AC[{"category":"AC 378 GT Zagato"},{"category":"AC 428"},{"category":"AC 428 Fastback"},{"category":"AC Ace"},{"category":"AC Ace II"},{"category":"AC Aceca"},{"category":"AC Cobra IV"},{"category":"AC Mamba"},{"category":"AC ME"}]
0
Эксперт PHP
 Аватар для liris
5512 / 1195 / 164
Регистрация: 16.01.2023
Сообщений: 2,841
25.01.2023, 20:16
Цитата Сообщение от kuzmich-kz Посмотреть сообщение
теперь выходит такое
Всё верно
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.01.2023, 20:53  [ТС]
liris,

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<select name="model" onchange="loadCar(this)">
    <option>Модель</option>
    <?php
    require_once('settings/cars.php');
 
$models_db = mysqli_query($db,"SELECT * FROM `section`");
if (!$models_db)
{
echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
exit(mysqli_error());
}
if (mysqli_num_rows($models_db) > 0){
$models_db_row = mysqli_fetch_array($models_db);
    do
    {
        echo '<option value="' . $models_db_row['title'] . '">' . $models_db_row['title'] . '</option>';
    }
    while ($models_db_row = mysqli_fetch_array($models_db));
}
 
    ?>
</select>
<select name="series">
    <option>Выберите модель</option>
</select>
 
<script>
function loadCar(select){
    var carSelect = $('select[name="series"]');
    $.getJSON('settings/ajax.php', {
        action:'getModels',
        model:select.value
    }, function(seriesList){
        carSelect.html('');
        $.each(seriesList, function(i){
            carSelect.append('<option value="' + i + '">' + this + '</option>');
        });
    });
}
</script>
теперь вроде как ничего, но второй селект теперь не работает. подскажите пожалуйста в чем дело?
0
Эксперт PHP
 Аватар для liris
5512 / 1195 / 164
Регистрация: 16.01.2023
Сообщений: 2,841
25.01.2023, 20:58
Цитата Сообщение от kuzmich-kz Посмотреть сообщение
теперь вроде как ничего, но второй селект теперь не работает. подскажите пожалуйста в чем дело?
Что означает "не работает"? Не отображается? Не заполняется? Не открывается?
В консоли браузера есть ошибки? Данные с сервера приходят? В ответе сервера есть ошибки?
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.01.2023, 21:41  [ТС]
liris, ошибок в браузере нету. первый селект выбираю, а второй селект не отображается

Добавлено через 17 минут
liris, если разобраться подробнее то он передает action=getModels и model=AC

если вернуть старый массив то работает. в своем коде я поменял на model и ничего

Добавлено через 21 минуту
по старому массиву выходит так:
Code
1
{"1-series":"1-series","2-series":"2-series","3-series":"3-series","4-series":"4-series","5-series":"5-series"}
на коде который я сделал выходит так:
Code
1
AC[{"category":"AC 378 GT Zagato"},{"category":"AC 428"},{"category":"AC 428 Fastback"},{"category":"AC Ace"},{"category":"AC Ace II"},{"category":"AC Aceca"},{"category":"AC Cobra IV"},{"category":"AC Mamba"},{"category":"AC ME"}]["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0430\u0440\u043a\u0443"]
если это смотреть по аяксу
0
Эксперт PHP
 Аватар для liris
5512 / 1195 / 164
Регистрация: 16.01.2023
Сообщений: 2,841
25.01.2023, 21:52
JavaScript
1
2
3
$.each(seriesList, function(i){
            carSelect.append('<option value="' + i + '">' + this + '</option>');
        });
Обратите внимание на этот цикл. Похоже у вас структура данных отличается от сборки в цикле.
0
4 / 2 / 1
Регистрация: 24.01.2017
Сообщений: 74
25.01.2023, 22:00
А что вам мешает сразу запрос из БД в массив засовывать, а далее работать с ним, т.е делить как нужно?

Например так:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//Создаём пер с ошибками
$er = '';
 
//Делаем запрос
$array_models_db = mysqli_query($db,"SELECT * FROM `section`");
 
//Создаём переменную с количеством данных полученых с запроса
$array_models_db_num = mysqli_num_rows($array_models_db);
 
//Проверяем если ли данные в запросе
if($array_models_db_num != '0'){
    //выводим ошибку, например
    $er .= 'Запрос из выборки базы данных не прошел. Напишите об этом администратору.';
}
//Проверяем ошибку
if($er == ''){
    //Все ок, генерируем цикл
    while($array_models_db_row = mysqli_fetch_assoc($array_models_db)){
        //Стоим массив
    }
}else{
    //Выводим ошибку
    echo 'Ошибка';
}


А уже в теле цикла стройте любой массив
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.01.2023, 22:40  [ТС]
EvgeniiVIP,
сделал так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
include('db.php');
 
//$arModels = array();
if (isset($_GET['model'])) {
        
$array_section_db = mysqli_query($db,"SELECT * FROM `category` WHERE `section`='".$_GET['model']."'");
if (!$array_section_db)
{
echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
exit(mysqli_error());
}
if (mysqli_num_rows($array_section_db) > 0){
$array_section_db_row = mysqli_fetch_array($array_section_db);
echo "{";
do
{
echo '"'.$array_section_db_row['category'].':"'.$array_section_db_row['category'].'",';
}
while ($array_section_db_row = mysqli_fetch_array($array_section_db));
echo "}";
}
 
    
}
 
// отдаем результат
echo json_encode($arModels);
 
?>
выводит так:
Code
1
{"AC 378 GT Zagato:"AC 378 GT Zagato","AC 428:"AC 428","AC 428 Fastback:"AC 428 Fastback","AC Ace:"AC Ace","AC Ace II:"AC Ace II","AC Aceca:"AC Aceca","AC Cobra IV:"AC Cobra IV","AC Mamba:"AC Mamba","AC ME:"AC ME",}null["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0430\u0440\u043a\u0443"]
вопрос - как убрать это?

Code
1
null["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0430\u0440\u043a\u0443"]
0
Эксперт PHP
 Аватар для liris
5512 / 1195 / 164
Регистрация: 16.01.2023
Сообщений: 2,841
25.01.2023, 22:50
Цитата Сообщение от kuzmich-kz Посмотреть сообщение
выводит так:
Code
1
{"AC 378 GT Zagato:"AC 378 GT Zagato","AC 428:"AC 428","AC 428 Fastback:"AC 428 Fastback","AC Ace:"AC Ace","AC Ace II:"AC Ace II","AC Aceca:"AC Aceca","AC Cobra IV:"AC Cobra IV","AC Mamba:"AC Mamba","AC ME:"AC ME",}null["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0430\u0440\u043a\u0443"]
Дубли не смущают? "Я два раза не повторяю не повторяю"
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.01.2023, 22:57  [ТС]
liris, если смотреть изначальный массив то там идут дубли
0
Эксперт PHP
 Аватар для liris
5512 / 1195 / 164
Регистрация: 16.01.2023
Сообщений: 2,841
25.01.2023, 23:15
Цитата Сообщение от kuzmich-kz Посмотреть сообщение
Code
1
null["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0430\u0440\u043a\u0443"]
Если вы раскодируете это, там написано "Выберите марку".

P.S. У вас в профиле написано, что вы РНР-разработчик с опытом 3-5 лет. Это правда? Мы вторую страницу обсуждаем вопрос, который даже для джуна очень простой. И я по-прежнему уверен, что вы вообще не понимаете, что пишете в коде.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2023, 23:15

Пытаюсь вытащить данные из двух таблиц, но данные попадает только из одной. Что мне делать?
Здравствуйте вот таким образом пытаюсь вытащить с двух таблиц данные но данные попадает только с одного что мне делать вот полный код: ...

Как вытащить данные данные из цикла?
Добрый день. У меня возникла необходимость записать содержимое цикла в файл. Данные берутся из БД после чего заносятся в цикл. Результат...

Вытащить данные с HDD. Данные видны
Есть внешний диск (usb 3.0), он неисправен, но данные на нём видны. При копировании папки как только попадает на битую область система...

Вытащить данные из БД
Здравствуйте! обращаюсь к вам с такой проблемой: на форме есть кнопка дублирования заказа, нажимая заказ соответственно должен...

Вытащить данные в vw
Как с помощью $('#mama').css('width') вытащить данные не в px а в vw? Даже если уже в .css записано в vw


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru