За последние 24 часа нас посетили 22966 программистов и 1233 робота. Сейчас ищут 798 программистов ...

Фильтрация данных с БД

Тема в разделе "PHP для новичков", создана пользователем Kylun-Serg, 18 май 2020.

Метки:
  1. Kylun-Serg

    Kylun-Serg Новичок

    С нами с:
    28 фев 2018
    Сообщения:
    16
    Симпатии:
    1
    Добрый день! Нужна помощь. Я слаб в программировании, но эта задача вроде бы не сложная, хотелось бы разобраться))

    Вот есть у меня форма, которая генерирует таблицу данных.

    На данном этапе интересуют поля "Код" и "Сума".

    Код своего рода классификатор товара, и нужно отслеживать, что-бы по данному коду сума товаров не была выше какого-то значения.

    Классификатор 4-значный, под одним кодом могут быть разные товары.

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

    [​IMG]

    [​IMG]
    [​IMG]
    Индекс
    Код (Text):
    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4.     <meta charset="UTF-8">
    5.     <title>DK</title>
    6.     <?php
    7.         require_once "function.php";
    8.         $row = getLine(100);
    9.      ?>
    10. </head>
    11. <body>
    12.     <form method="POST" action="">
    13.         <input name = "title" type="text" placeholder="Название">
    14.         <input name = "kod" type="text" placeholder="Код ДК">
    15.         <input name = "date" type="text" placeholder="Дата">
    16.         <input name = "price" type="text" placeholder="Сума">
    17.         <button type="submit" name="send">Send</button>
    18.     </form>
    19.  
    20.     <?php
    21.         addLine();
    22.      ?>
    23. <table>
    24.     <thead>
    25.         <tr>
    26.             <th>ID</th>
    27.             <th>Название</th>
    28.             <th>Дата</th>
    29.             <th>Код</th>
    30.             <th>Стоимость</th>
    31.         </tr>
    32.     </thead>
    33.     <tbody>
    34.  
    35.     </tbody>
    36.     <?php
    37.         for ($i = 0 ; $i < count($row); $i++) {
    38.             echo "<tr><td>" . $row[$i]["id"]
    39.         . "</td><td>" . $row[$i]["title"]
    40.         . "</td><td>" . $row[$i]["date"]
    41.         . "</td><td>" . $row[$i]["kod"]
    42.         . "</td><td>" . $row[$i]["price"]
    43.         . "</td></tr>";
    44.     }
    45.     echo "</tbody>";
    46.  
    47.      ?>
    48.  
    49. </table>
    50. </body>
    51. </html>
    Подключение к БД

    Код (Text):
    1. <?php
    2.   $mysqli = false;
    3.  
    4.   $name = $_POST['title'];
    5.   $kod = $_POST['kod'];
    6.   $price = $_POST['price'];
    7.   $date = $_POST['date'];
    8.  
    9.  
    10.   function connectDB () {
    11.       global $mysqli;
    12.     $db_host = "localhost";
    13.     $db_user = "root"; // Логин БД
    14.     $db_password = ""; // Пароль БД
    15.     $db_base = 'dk'; // Имя БД
    16.     $db_table = "lines_dk"; // Имя Таблицы БД
    17.  
    18.       $mysqli = new mysqli($db_host, $db_user, $db_password, $db_base);
    19.  
    20.     if ($mysqli->connect_error) {
    21.         die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
    22.     }
    23.  
    24.       $mysqli -> query("SET  NAMES 'utf-8'");
    25.   }
    26.  
    27.   function closeDB () {
    28.       global $mysqli;
    29.       $mysqli -> close ();
    30.   }
    31. ?>  
    Функции

    Код (Text):
    1. <?php
    2.     require_once "connect.php";
    3.     function getLine ($limit) {
    4.         global $mysqli;
    5.         connectDB();
    6.         $result = $mysqli -> query("SELECT * FROM `lines_dk` ORDER BY `id` DESC LIMIT $limit");
    7.         closeDB();
    8.         return resultToArray($result);
    9.     }
    10.     function resultToArray ($result) {
    11.         $array = array ();
    12.         while (($row = $result -> fetch_assoc()) != false)
    13.             $array[] = $row;
    14.         return $array;  
    15.     }
    16.     function addLine () {
    17.         global $mysqli;
    18.         connectDB();
    19.         if (isset($_POST['send'])) {
    20.             $result = $mysqli -> query(
    21.                 "INSERT INTO `lines_dk`
    22.                 SET
    23.                     `title` = '".$_POST['title']."',
    24.                     `date` = '".$_POST['date']."',
    25.                     `price` = '".$_POST['price']."',
    26.                     `kod` = '".$_POST['kod']."'
    27.  
    28.                 ");
    29.         }
    30.         print_r($_POST);
    31.         closeDB();
    32.     }
    33. ?>
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Даешь каждому товару свой код)
    Суньте все товары в отдельную таблицу.
     
  3. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    это код классификатора, читай код группы товаров
     
  4. Kylun-Serg

    Kylun-Serg Новичок

    С нами с:
    28 фев 2018
    Сообщения:
    16
    Симпатии:
    1
    Заче
    Здесь все отталкивается не от товара, а от кода, так как это классификатор.
     
  5. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Код (Text):
    1. SUM(price) AS price, kod
    2. FROM `lines_dk`
    3. GROUP BY kod
     
    Kylun-Serg нравится это.
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    @Artur_hopf, SELECT допиши.

    @Kylun-Serg, это не фильтрация. Фильтрация – это разделение, а у вас походу наоборот объединение.

    И словом «сума» в стартовом посте вы также внесли опред. путаницу. Больше так не делайте :)
     
  7. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    [​IMG]
     
  8. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Вот жеж гавнюки :D
     
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    @Valick, где-то я уже это слышал :)
    [​IMG]
     
    #9 miketomlin, 18 май 2020
    Последнее редактирование: 18 май 2020
    twim32 нравится это.
  10. ElisDN

    ElisDN Активный пользователь

    С нами с:
    13 фев 2018
    Сообщения:
    605
    Симпатии:
    130
    Если эти "эксперты" так стрелки между M, V и C ставят, то не так уж и однозначно, на какой картинке код лучше :)
     
  11. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    @ElisDN, не придирайтесь. Стрелки могут совершенно разные вещи обозначать. Я тоже обращал на них внимание. При опред. раскладе все норм.