Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.09.2019
Сообщений: 2

Сайт подсчета товаров из CSV файла

13.09.2019, 11:55. Показов 603. Ответов 3
Метки csv, html (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане!
Я новичок в php и нуждаюсь в помощи.
Необходимо создать одностраничный сайт используя PHP в котором должна быть таблица остатков продуктов на складах и форма для загрузки CSV файла следующего вида:

product_name, qty, warehouse
Product 1, 5, WH1
Product 2, 5, WH1

Таблица всегда отражает текущее состояние складов. Файлы, загружаемые через форму, содержат движение продуктов, а не абсолютное tколичество продуктов на складах. При первом запуске имеется в виду, что ни на одном из складов нет ни одного продукта. При загрузке каждого следующего файла общее количество продукта на складах корректируется данными из файла. Как только количество продукта снижается до 0 и меньше на определенном складе, он пропадает из списка складов, на которых размещен продукт.

Мне удается пока что просто загружать CSV файл на страницу и отображать его. Виглядит он так:
HTML5
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<!DOCTYPE html>
<html>
 <head>
  <title>Залишки продуктів на складі</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
  <style>
  .box
  {
   max-width:600px;
   width:100%;
   margin: 0 auto;;
  }
  </style>
 </head>
 <body>
  <div class="container">
   <br />
   <h3 align="center">Залишки продуктів на складі</h3>
   <br />
   <form id="upload_csv" method="post" enctype="multipart/form-data">
    <div class="col-md-3">
     <br />
     <label>Select CSV File</label>
    </div>  
                <div class="col-md-4">  
                    <input type="file" name="csv_file" id="csv_file" accept=".csv" style="margin-top:15px;" />
                </div>  
                <div class="col-md-5">  
                    <input type="submit" name="upload" id="upload" value="Upload" style="margin-top:10px;" class="btn btn-info" />
                </div>  
                <div style="clear:both"></div>
   </form>
   <br />
   <br />
   <div id="csv_file_data"></div>
   
  </div>
 </body>
</html>
 
<script>
 
$(document).ready(function(){
 $('#upload_csv').on('submit', function(event){
  event.preventDefault();
  $.ajax({
   url:"fetch.php",
   method:"POST",
   data:new FormData(this),
   dataType:'json',
   contentType:false,
   cache:false,
   processData:false,
   success:function(data)
   {
    var html = '<table class="table table-striped table-bordered">';
    if(data.column)
    {
     html += '<tr>';
     for(var count = 0; count < data.column.length; count++)
     {
      html += '<th>'+data.column[count]+'</th>';
     }
     html += '</tr>';
    }
 
    if(data.row_data)
    {
     for(var count = 0; count < data.row_data.length; count++)
     {
      html += '<tr>';
      html += '<td class="Product">'+data.row_data[count].Product+'</td>';
      html += '<td class="Quantity">'+data.row_data[count].Quantity+'</td>';
      html += '<td class="WH">'+data.row_data[count].WH+'</td></tr>';
     }
    }
    
    $('#csv_file_data').html(html);
    $('#upload_csv')[0].reset();
   }
  })
 });
 
 $(document).on('click', '#import_data', function(){
  var Product = [];
  var Quantity = [];
  $('.Product').each(function(){
   product.push($(this).text());
  });
  $('.Quantity').each(function(){
   quantity.push($(this).text());
  });
  $.ajax({
   url:"import.php",
   method:"post",
   data:{Product:Product, Quantity:Quantity},
   success:function(data)
   {
    $('#csv_file_data').html('<div class="alert alert-success">Data Imported Successfully</div>');
   }
  })
 });
});
 
</script>
файл fetch.php

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
<?php
 
//fetch.php
 
if(!empty($_FILES['csv_file']['name']))
{
 $file_data = fopen($_FILES['csv_file']['tmp_name'], 'r');
 $column = fgetcsv($file_data);
 while($row = fgetcsv($file_data))
 {
  $row_data[] = array(
   'Product'  => $row[0],
   'Quantity'  => $row[1],
   'WH' => $row[2]
  );
 }
 $output = array(
  'column'  => $column,
  'row_data'  => $row_data
 );
 
 echo json_encode($output);
 
}
 
?>
Нужен код php который будет "считать" количество продуктов.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.09.2019, 11:55
Ответы с готовыми решениями:

Woocommerce импорт товаров с csv файла
Здравствуйте! Я создаю csv-файл. Пробую его импортировать, но мне создаются пустые товары. Подскажите в чем причина. (Высылаю excel файл...

Разбиение CSV файла на много csv файлов по разделителю
Здравствуйте, есть файл в который нужно разделить, но не ровно по 30 строк например, а по 25, 23, 27. Как это можно сделать?

Экспорт товаров CSV Improved 1.9
Доброй день, у меня виртумарт 1.9 на джумла 1.5. установил CSVI 1.9 improved, пытаюсь экспортировать товары, но выгружается пустой файл....

3
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
13.09.2019, 20:10
trofimartya1, почему бы Вам не перенести в бд, намного удобнее.
0
0 / 0 / 0
Регистрация: 13.09.2019
Сообщений: 2
13.09.2019, 20:43  [ТС]
atanov, даже если добавлю в БД, как сделать так чтобы прямо на странице добавляло или отнимало продукты?
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
14.09.2019, 06:56
trofimartya1, со страницы Ajax запросом серверному скрипту. Серверный скрипт запрашивает бд и отдаёт результат на клиента.
Остаётся реализовать запись изменений в бд. Кто и как изменяет количества товаров?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.09.2019, 06:56
Помогаю со студенческими работами здесь

Импорт товаров с изображениями (несколько) из csv
пишу импорт товаров из csv, с данными товара все предельно ясно, не могу понять как быть с изображениями. думаю, предварительно загружать...

Автоматическая выгрузка товаров с сайта в формате CSV
Здравствуйте, форумчане. Интересует такой вопрос, есть ли подобное решение для 1С-Битрикс: Управление сайтом 12 Интересуют любые зацепки,...

Исправление подсчета количества товаров в каждой категории
На сайте есть список категорий товаров (примерно 25 шт.) в каждой категории содержится от 5 до 300 товаров. Нужно реализовать подсчет...

Импорт и экспорт товаров в csv в собственном движке интернет-магазина
Всем привет. Подскажите как сделать или где накопать информации, на своем интернет магазине (собственный движок) , импорт и экспорт товара...

Импорт данных из файла .csv в mysql сразу же после загрузки файла на сервер
Коллеги! Добрый день! Помогите пожалуйста. Задача состоит в том, чтобы через форму страницы загрузить файл расширения .csv на сервер и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru