С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
1

Выгрузка товара с базы данных в таблицу по id

09.10.2018, 12:31. Показов 5000. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Недавно начал изучать php и чтобы лучше усвоить сразу стал писать.
Поставил себе задачу выгружать товары с база данных магазина на отдельную страничку.
Приконектился к базе создал шапку таблицы, и удачно вывел с 1 таблицы все что нужно.
Но вот когда попытался выводить туда же данные с 2 других таблиц чтобы получить полный вывод товара возникли трудности.
Что я хочу в идеале вывести.
id Модель Цена Скидка XS S M L XL Количество
В вложение есть выгрузка с БД.
Вот мой код с выводом только с таблицы oc_product .
Направьте в нужное русло.
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
<?php include "revise/connect.php" // Конет с базой ?> 
<style type="text/css"><? include "revise/style.css" // немного внешнего вида ?></style> 
<title>Сверка</title>
<?php include "revise/table.php" // шапка таблицы ?> 
 
    <?php 
    $oc_product = mysqli_query($connection, "SELECT * FROM `oc_product`");
    $oc_product_special = mysqli_query($connection, "SELECT * FROM `oc_product_special`");
    $oc_product_option = mysqli_query($connection, "SELECT * FROM `oc_product_option`");
    $oc_product_option_value = mysqli_query($connection, "SELECT * FROM `oc_product_option_value`");
    ?> 
    <?php 
    while ( $product = mysqli_fetch_assoc ($oc_product))
    {   
    echo 
        '<table>' ,
            '<tr>' ,
                '<td> ',
                    $product['product_id'],         
                '</td>',    
                '<td> ',
                    $product['model'], 
                '</td>',    
                '<td> ',
                    round ($product['price']),  // убрал лишние ноли
                '</td>',    
                '<td> ',
                    $product['quantity'],   
                '</td>',                
            '</tr>',
        '</table>';
    }
?>
Вложения
Тип файла: zip test_bd.zip (2.0 Кб, 13 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.10.2018, 12:31
Ответы с готовыми решениями:

Выгрузка из базы данных
доброе утро Выгрузка данных из базы данных. при выгрузуке из базы данных в отчеты в формате .xls...

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

Выгрузка из базы данных
Подскажите как можно сделать выгрузку s sqlplus чтобы она выгружалась в txt и к примеру ставила...

Выгрузка данных в таблицу
Помогите освежить знания, всё забылось. Необходимо заполнить листы 2, 3, 4 используя данные из...

22
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.10.2018, 12:59 2
Kifir4ik, если есть связь товаров по id то используем JOIN и вывод все что надо из 2 и более таблиц

SQL
1
SELECT * FROM `oc_product` p INNER JOIN oc_product_special p_s ON p.id = p_s.product_id
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
09.10.2018, 13:04  [ТС] 3
Ругается
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /var/www/chlatto66/data/www/мой_сайт/revise.php on line 12
Сделал так
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 "revise/connect.php" // Конет с базой ?> 
<style type="text/css"><? include "revise/style.css" // немного внешнего вида ?></style> 
<title>Сверка</title>
<?php include "revise/table.php" // шапка таблицы ?> 
 
    <?php 
    $oc_product = mysqli_query($connection, "SELECT * FROM `oc_product` p INNER JOIN oc_product_special p_s ON p.id = p_s.product_id");
    ?> 
    <?php 
    while ( $product = mysqli_fetch_assoc ($oc_product))
    {   
    echo 
        '<table>' ,
            '<tr>' ,
                '<td> ',
                    $product['product_id'],         
                '</td>',    
                '<td> ',
                    $product['model'], 
                '</td>',    
                '<td> ',
                    round ($product['price']),  // убрал лишние ноли
                '</td>',    
                '<td> ',
                    $product['quantity'],   
                '</td>',                
            '</tr>',
        '</table>';
    }
?>
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.10.2018, 13:31 4
Цитата Сообщение от Kifir4ik Посмотреть сообщение
ON p.id = p_s.product_id
у Вас есть поле id в таблице oc_product и поле product_id в таблеце oc_product_special

Я запрос написал для примера

Добавлено через 1 минуту
Цитата Сообщение от Kifir4ik Посмотреть сообщение
p.id
заменить на p.product_id
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
09.10.2018, 13:42  [ТС] 5
Что то вывелось.
А как вывести данные с другой таблицы?
Ну чтоб вывести модель я пишу round ($product['price']), и выводит с таблицы oc_product столбец price
А как вывести к примеру из oc_product_special столбец price?
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.10.2018, 13:55 6
Kifir4ik, если у Вас в двух таблицах одинаковые поля (по названию) то в запросе надо сделать алиас

SQL
1
SELECT p_s.price AS ps_price FROM `oc_product` p INNER JOIN oc_product_special p_s ON p.product_id = p_s.product_id
и вывод тогда такой $product['ps_price']
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
09.10.2018, 14:05  [ТС] 7
Что то идет не так, вывело только цену с файла скидок остальные строки пустые.

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 "revise/connect.php" // Конет с базой ?> 
<style type="text/css"><? include "revise/style.css" // немного внешнего вида ?></style> 
<title>Сверка</title>
<?php include "revise/table.php" // шапка таблицы ?> 
 
    <?php 
    $oc_product = mysqli_query($connection, "SELECT p_s.price AS ps_price FROM `oc_product` p INNER JOIN oc_product_special p_s ON p.product_id = p_s.product_id");
    ?> 
    <?php 
    while ( $product = mysqli_fetch_assoc ($oc_product))
    {   
    echo 
        '<table>' ,
            '<tr>' ,
                '<td> ',
                    $product['product_id'],         
                '</td>',    
                '<td> ',
                    $product['model'], 
                '</td>',    
                '<td> ',
                    round ($product['price']),  // убрал лишние ноли
                '</td>',    
                '<td> ',
                    round ($product['ps_price']), // убрал лишние ноли   
                '</td>',                
            '</tr>',
        '</table>';
    }
?>
Миниатюры
Выгрузка товара с базы данных в таблицу по id  
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.10.2018, 14:30 8
Kifir4ik, ну так конечно выведет только одну цену так как запрос выбирает только определенную строку.

Вы вообще думаете или тупо копируете то что я пишу. Почитайте про алиасы, Вам надо либо пересмотреть структуру БД, чтоб не повторялись названия полей в таблицах которые вы объединили, либо одинаковым полям задавать алиасы
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
09.10.2018, 14:38  [ТС] 9
Если можно скиньте ссылку на норм статью про алиасы.
Тупо копировал.
Вить я просто хотел узнать как правельно написать вывод данных с разных таблиц в бд.
Вить с 1 таблицы вывод был успешный.
с алиасаме еще не знаком.
Может у мой код вообще не подходит для вывода данных с нескольких таблиц сортируюя их по product_id
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.10.2018, 14:44 10
Kifir4ik, https://www.w3schools.com/sql/sql_alias.asp

простым языком алиас это переименование столбца в самом запросе на время вывода.

если Вам надо например с 2 таблиц вывести все данные, но в этой таблице есть 2 или более одинаков по названию столбца им надо присвоить алиасы
SQL
1
SELECT *, p_s.price AS ps_price FROM `oc_product` p INNER JOIN oc_product_special p_s ON p.product_id = p_s.product_id
так выведет все данные с 2 таблиц, но для вывода цены из второй таблицы oc_product_specia надо использовать уже не $product['price'], а $product['ps_price']
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
09.10.2018, 15:48  [ТС] 11
перепишу

Добавлено через 20 минут
Немного упросил задачу и я забил на price в oc_product_specia и вывел product_special_id от туда же.
Вот так
MySQL
1
2
3
SELECT oc_product.product_id, oc_product.model, oc_product.price, oc_product_special.product_special_id
    FROM oc_product 
    INNER JOIN oc_product_special ON oc_product.product_id = oc_product_special.product_id
Все вышло и это норм.
Но как мне теперь добавить сюда еще 1 таблицу oc_product_option_value
Но тут посложнее с выводом
в ней у меня на каждый product_id есть по 4 option_value_id с значением quantity.
Как тут мне поступить?
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.10.2018, 15:50 12
Цитата Сообщение от Kifir4ik Посмотреть сообщение
в ней у меня на каждый product_id есть по 4 option_value_id
Так же надо использовать JOIN
1
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
09.10.2018, 15:58  [ТС] 13
Ок.
Но у меня появилась еще 1 проблема у меня в oc_product 5 записей а в oc_product_special только 4.
и оно выводит теперь только 4 записи а 5 не выводит так как там нет roduct_special_id для одного id.
Как мне это сначала поправить?
0
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
09.10.2018, 16:01 14
Цитата Сообщение от Kifir4ik Посмотреть сообщение
Как мне это сначала поправить?
Почитать про LEFT JOIN
1
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
09.10.2018, 16:06  [ТС] 15
ок делаю

Добавлено через 3 минуты
Супер спс огромное.
MySQL
1
2
3
4
SELECT oc_product.product_id, oc_product.model, oc_product.price, oc_product_special.product_special_id 
FROM oc_product 
LEFT JOIN oc_product_special ON oc_product.product_id = oc_product_special.product_id
ORDER BY oc_product_special.product_id;
Сработал на ура.
Теперь пробую добавить еще 1 таблицу
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
09.10.2018, 16:26  [ТС] 16
я закипел.
не могу логически построить
дальше эсть таблица oc_product_option_value в ней нужно найти похожий product_id и потом вывести 5 стобцов с option_value_id (50,49,48,47,46) и уже в столбец 50 вывести содержимое quantity потом в столбец 49 вывести содержимое quantity столбец 48 вывести содержимое quantity столбец 47 вывести содержимое quantity столбец 46 вывести содержимое quantity
И хз как это реализовать.
Сможешь с таким помочь?
Миниатюры
Выгрузка товара с базы данных в таблицу по id  
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
09.10.2018, 16:27  [ТС] 17
Вот скрин самой таблицы c_product_option_value
Миниатюры
Выгрузка товара с базы данных в таблицу по id  
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
09.10.2018, 17:55  [ТС] 18
Пока смог вывести только 1 значение (48)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php include "revise/connect.php" // Конет с базой ?> 
<style type="text/css"><? include "revise/style.css" // немного внешнего вида ?></style> 
<title>Сверка</title>
<?php //include "revise/table.php" // шапка таблицы ?> 
 
    <?php 
    $oc_product = mysqli_query($connection,"
    SELECT 
    oc_product.product_id, 
    oc_product.model, 
    oc_product.price, 
    oc_product.quantity, 
    oc_product_special.price AS price_special, 
    oc_product_option_value.quantity AS option_quantity
FROM oc_product 
LEFT JOIN oc_product_special ON oc_product.product_id = oc_product_special.product_id
LEFT JOIN oc_product_option_value ON oc_product.product_id = oc_product_option_value.product_id WHERE option_value_id IN ('48', '48')
ORDER BY oc_product_special.product_id
 
;
");
    ?> 
      <table class="striped">
        <tr class="header">
            <td>id</td>
            <td>Модель</td>
            <td>Цена</td>
            <td>Скидка</td>
            <td>XS - 48</td>
            <td>S - 46</td>
            <td>M - 47</td>
            <td>L - 49</td>
            <td>XL - 50</td>
            <td>Количеств</td>
        </tr>
        <?php
           $i = 0;
            while ( $product = mysqli_fetch_assoc ($oc_product)) {
               $class = ($i == 0) ? "" : "alt";
               echo "<tr class=\"".$class."\">";
               echo "<td>".$product['product_id']."</td>";
               echo "<td>".$product['model']."</td>";
               echo "<td>".round ($product['price'])."</td>";
               echo "<td>".round ($product['price_special'])."</td>";
               echo "<td>".$product['option_quantity']."</td>"; 
               echo "<td>".$product['location']."</td>"; 
               echo "<td>".$product['location']."</td>"; 
               echo "<td>".$product['location']."</td>"; 
               echo "<td>".$product['location']."</td>"; 
               echo "<td>".$product['quantity']."</td>";               
               echo "</tr>";
               $i = ($i==0) ? 1:0;
           }
 
        ?>
    </table>
Нужна помощь с выводом заничений (46,47,49,50) в соседние столбцы.
Миниатюры
Выгрузка товара с базы данных в таблицу по id  
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 40
09.10.2018, 18:00  [ТС] 19
Вот тут правильный скрин
Миниатюры
Выгрузка товара с базы данных в таблицу по id  
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
12.10.2018, 09:12 20
Цитата Сообщение от Kifir4ik Посмотреть сообщение
$product['location']
У Вас в запросе нет выбора данного столбца: location
0
12.10.2018, 09:12
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.10.2018, 09:12
Помогаю со студенческими работами здесь

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

Выгрузка данных из базы в dataGridView
Всем привет возникла такая проблема при выполнения запроса в dataGridView не всегда поступают...

Выгрузка данных в dbf: выбор цены для группы товаров или определенного товара в запросе
Всем добрый вечер! Странный вопрос, возможно, однако... Я запросом вытащила цены. Но в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru