Всем привет. Стоит задача в отеле фиксировать продажи, пополнение товаром и списания товара. На сегодняшний момент делают это в Exel файле и в конце сменя отсылают бухгалтеру. Вот надо исключить пересылку файлов и сделать это методом онлайна (ну через страничку). Я пологаю что надо в базе данных 2 таблицы: 1. Наименование товара 2. Операции с товаром Но сообразить как должно выводиться что-то не получается. Подскажите пожалуйста, как лучше это осуществить? Может примеры есть?
Если вы не руководитель, у вас должно быть ТЗ, вот по нему и делайте как должно быть. А не тут спрашивать.
Вкрадце, примерно так: Таблицы - клиенты + поставщики + склады (в одной таблице) - товары - типы документов - документы: продажа, инвентаризация, заказ поставщику, приходы, расходы, резервы, брак, и т.д. (для каждого отдельная таблица и отдельная таблица с товаром) - регистр документов (для связи между документами) - цены на товары - модификации товара - категории товара + связь между товаром и категориями Представления - движение товаров - движение денег - кол-во товара на складе + резервы Неплохо было бы иметь таблицу, в которой храняться остатки за определенный период и переодически ее обновлять, чтобы избежать черезмерной нагрузки на бд.
@twim32 Спасибо. Попробую постепенно все добавлять. Итак, создала 2 таблицы: 1. Название shop_pro - тут список товара. Структура: id - уникальный id name - наименование товара distr - описание товара price - цена group_id - id группы, для которой выводятся данные count - количество hide - отображать или скрывать (0 - отображать, 1 - скрывать) Выглядит вот так вот: 2. Вторая табличка с названием shop_story. Структура: id - уникальный id name - будет записываться название товара price - будет записываться сумма продажи date - дата и время продажи count - количество проданного товара group_id - id группы, для которой выводятся данные Выглядит вот так вот: Вроде пока бд созданна. Следующий шаг - это вывести... Вывела я вот так (часть кода) PHP: case 'index': $result1 = mysqli_query($db, "SELECT * FROM shop_pro WHERE hide='0' AND group_id=$group_id ORDER BY name DESC")or die('error1!'); //выборка товара ?> <form action="index.php?page=sell"> <table> <tbody> <tr> <td>Наименование</td> <td width="5%">Остаток</td> <td width="5%">Кол-во</td> </tr> <? while ($row1 = mysqli_fetch_array($result1)) { echo '<tr>'; echo '<td>'.$row1['name'].' по цене '.$row1['price'].'руб.</td>'; echo '<td>'.$row1['count'].'</td>'; echo '<td><input type="number" size="3"></td>'; echo '</tr>'; } ?> </tbody> </table> <input type="submit" value="Отправить"> </form> <? break; case 'sell': break; Вот тут у меня загвоздка: Подскажите пожалуйста, как данные отправить на страничку sell? (там будет обработчик) П.С.: Пример вот тут
Немного поэксперементировав получилось вот так: PHP: case 'index': $result1 = mysqli_query($db, "SELECT * FROM shop_pro WHERE hide='0' AND group_id=$group_id ORDER BY name DESC")or die('error1!'); //выборка товара ?> <form method="POST" action="index.php?page=sell"> <table> <tbody> <tr> <td>Наименование</td> <td width="5%">Остаток</td> <td width="5%">Кол-во</td> </tr> <? while ($row1 = mysqli_fetch_array($result1)) { echo '<tr>'; echo '<td>'.$row1['name'].' по цене '.$row1['price'].'руб.<input type="hidden" name="name" value="'.$row1['name'].'"><input type="hidden" name="price" value="'.$row1['price'].'"></td>'; echo '<td>'.$row1['count'].'</td>'; echo '<td><input name="count" size="3" type="number"></td>'; echo '</tr>'; } ?> </tbody> </table> <input type="submit" value="Отправить"> </form> <? break; case 'sell': $name = $_POST['name']; $price = $_POST['price']; $count = $_POST['count']; echo 'Наименование: '.$name.'<br>'; echo 'Цена за единицу: '.$price.'<br>'; echo 'Кол-во продано: '.$count.'<br>'; break; Подскажите пожалуйста, как в обработчик отправлять все данные, которые указаны в начальной странице в поле Кол-во? На практике выходит так: добавляю 2 товара, а в обработчик попадает только один =(
@Sofia, попробуйте начать с анализа того самого Excel-файла. Какие в нём использованы сущности из предметной области, определите связи между ними... Что из них представляет собой "условно-постоянную" информацию, которую надо вынести в отдельные "справочники", а что - данные о движении товара, которые будут храниться в других "таблицах", имеющих "ссылки" на "справочники"... К примеру: "Лекция 7: Методы проектирования логических моделей реляционных баз данных. Декомпозиция и синтез отношений" а также другие лекции. --- Добавлено --- А пример можете сделать, например, на DB Fiddle.
т.е. решения нет, как с начальной страницы данные перенести в обработчик? У меня сейчас стоит задача - как отмеченные объекты перенести в обработчик и записать в бд. То что у меня сейчас получилось - переносятся данные в обработчик только по последней позиции товара.
Самое простое : эксель сохранить в формате CSV (кодировка UTF-8) и прочитать его с помощью PHP. Далее через цикл записать все данные в БД
А почему с существующей таблицы данные невозможно обработать? Таблица составлена неверно? Или в чем причина?
PHP: echo '<td><input name="count[' . $result1['id'] . ']" size="3" type="number" value="' . $result1['count'] . '"></td>'; Вставлять данные без подготовки в запрос плохо https://www.php.net/manual/ru/mysqli.quickstart.prepared-statements.php
Там проблема в том что нейм инпутов один. И когда она форму отправит прийдёт только последний. Написал как исправить проблему. А на счет подготовки я об этом говорил, посмотри на запрос) PHP: $result1 = mysqli_query($db, "SELECT * FROM shop_pro WHERE hide='0' AND group_id=$group_id ORDER BY name DESC")or die('error1!'); //выборка товара