PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
gad3005
Отправлено: 19 Ноября, 2019 - 15:44:44
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2019  


Помог: 0 раз(а)




Помогите пожалуйста разобраться.
Есть такой код, всё работает, но нужно чтобы в таблице
складывались одинаковые товары и их количества.(см фото)
Как правильно это сделать?
Строка вывода таблицы "Для забивания в 1С" - 275
Дай Бог Вам Здоровья кто не пройдет мимо ))

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require "config/auth.php";
  3. require "config/users.php";
  4. $user_name = $_SESSION['admin'];
  5. ?>
  6. <?PHP require "tpl/header.php"; ?>
  7.  
  8. <div class="container">
  9.  
  10. <?PHP
  11.  
  12.  require "config/connection.php"; // подключаем скрипт
  13.  
  14. ?>
  15.  
  16.  
  17. <!----->
  18. <?PHP
  19. $link = mysqli_connect($db_host,$db_user,$db_password,$db_base)
  20.   or die("Ошибка " . mysqli_error($link));
  21.  
  22. $link->set_charset("utf8");
  23.  
  24. $query = "SELECT cc.customer_group_id, cc.name
  25.  
  26. FROM `oc_customer_group_description` cc";
  27.  
  28. $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));
  29. ?>
  30.  
  31. <div class="collapse" id="collapseExample">
  32.  
  33.   <div class="card card-body">
  34.    
  35. <form class="form-inline" method="POST">
  36.  
  37. <!--<div class="form-group mb-2">
  38.     <input name="data" id="data" class="form-control" placeholder="Дата: 2019-08-06" >
  39. </div>-->
  40.  
  41.  
  42. <div class="form-group col-md-4">
  43. <select class="form-control" name="year" id="year" required="">
  44.     <option value="2015">2015</option>
  45.     <option value="2016">2016</option>
  46.     <option value="2017">2017</option>
  47.     <option value="2018">2018</option>
  48.     <option value="2019" selected="">2019</option>
  49.     <option value="2020">2020</option>
  50.     <option value="2021">2021</option>
  51.     <option value="2022">2022</option>
  52.     <option value="2023">2023</option>
  53. </select>
  54.  
  55. <select class="form-control" name="month" id="month" required="">
  56.     <option value="">Месяц ...</option>
  57.     <option value="01">01</option>
  58.     <option value="02">02</option>
  59.     <option value="03">03</option>
  60.     <option value="04">04</option>
  61.     <option value="05">05</option>
  62.     <option value="06">06</option>
  63.     <option value="07">07</option>
  64.     <option value="08">08</option>
  65.     <option value="09">09</option>
  66.     <option value="10">10</option>
  67.     <option value="11">11</option>
  68.     <option value="12">12</option>
  69. </select>
  70.  
  71. <select class="form-control" name="day" id="day" required="">
  72.     <option value="">Число ...</option>
  73.     <option value="01">01</option>
  74.     <option value="02">02</option>
  75.     <option value="03">03</option>
  76.     <option value="04">04</option>
  77.     <option value="05">05</option>
  78.     <option value="06">06</option>
  79.     <option value="07">07</option>
  80.     <option value="08">08</option>
  81.     <option value="09">09</option>
  82.     <option value="10">10</option>
  83.     <option value="11">11</option>
  84.     <option value="12">12</option>
  85.     <option value="13">13</option>
  86.     <option value="14">14</option>
  87.     <option value="15">15</option>
  88.     <option value="16">16</option>
  89.     <option value="17">17</option>
  90.     <option value="18">18</option>
  91.     <option value="19">19</option>
  92.     <option value="20">20</option>
  93.     <option value="21">21</option>
  94.     <option value="22">22</option>
  95.     <option value="23">23</option>
  96.     <option value="24">24</option>
  97.     <option value="25">25</option>
  98.     <option value="26">26</option>
  99.     <option value="27">27</option>
  100.     <option value="28">28</option>
  101.     <option value="29">29</option>
  102.     <option value="30">30</option>
  103.     <option value="31">31</option>
  104. </select>
  105. </div>
  106.  
  107. <div class="form-group col-md-4">
  108. <select class="form-control" name="company" id="company" required="">
  109.     <option value="">Компания ... </option>
  110. <?PHP while ($row = mysqli_fetch_array($result)): ?>
  111. <option value="<?PHP echo $row['customer_group_id']; ?>"><?PHP echo $row['name']; ?></option>
  112. <?PHP endwhile; mysqli_free_result($result); ?>
  113. </select>
  114. </div>
  115.  
  116. <div class="form-group col-md-4 text-center">
  117. <button type="submit" class="btn btn-warning"><i class="fas fa-search"></i></button>
  118. </div>
  119.  
  120. </form>
  121.  
  122.   </div>
  123.  
  124. </div>
  125.  
  126.  
  127. <?PHP
  128.  
  129. if($_SERVER['REQUEST_METHOD'] == 'POST') {
  130.  
  131. $year=$_POST['year'];
  132. $month=$_POST['month'];
  133. $day=$_POST['day'];
  134.  
  135. //$data=$_POST['data'];
  136. $company=$_POST['company'];
  137. $data="$year-$month-$day";
  138.  
  139. $company_name="SELECT cgd.name FROM `oc_customer_group_description` cgd WHERE cgd.customer_group_id = $company";
  140. $result_company_name = mysqli_query($link, $company_name) or die("Ошибка " . mysqli_error($link));
  141.  
  142. while ($row_company_name = mysqli_fetch_array($result_company_name)):
  143.  
  144. $cn = $row_company_name['name'];
  145.  
  146. endwhile;
  147. mysqli_free_result($result_company_name);
  148.  
  149.  
  150. $query ="SELECT p.order_id, p.order_delivery, p.customer_group_id, p.firstname, p.lastname, p.email, p.telephone, p.total
  151.  
  152. FROM `oc_order` p
  153.  
  154.  
  155. WHERE p.order_delivery LIKE '$data' AND p.customer_group_id = $company
  156.  
  157.  
  158. ";
  159. $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));
  160.  
  161.  
  162. $query1 ="SELECT p.order_id, p.order_delivery, p.customer_group_id, p.firstname, p.lastname, p.email, p.telephone, p.total,
  163.  
  164. group_concat(concat('<td>',`name`,'</td> <td>',`quantity`,' шт.</td>') separator '</tr>')
  165.  
  166. AS product_name
  167.  
  168.  
  169. FROM `oc_order` p
  170. JOIN oc_order_product op ON op.order_id = p.order_id
  171.  
  172. WHERE p.order_delivery LIKE '$data' AND p.customer_group_id = $company
  173. GROUP BY p.order_id;
  174. ";
  175.  
  176. $result1 = mysqli_query($link, $query1) or die("Ошибка " . mysqli_error($link));
  177.  
  178. ?>
  179.  
  180.  
  181.  
  182.  
  183. <h1>Для сбора заказа </h1>
  184.  
  185. <div class="row">
  186. <div class="col-md-6">
  187. <p>Дата: <?PHP echo $data; ?></p>
  188. </div>
  189. <div class="col-md-6 text-right">
  190. <p><?PHP echo $cn; ?></p>
  191. </div>
  192. </div>
  193.  
  194. <div class="table-responsive">
  195. <table class="table table-bordered" style="width: 100%; page-break-after: always;">
  196.     <thead class="thead-light">
  197. <tr>
  198. <th>ID</th>
  199. <th>ФИО</th>
  200.  
  201.  
  202. <th></th>
  203.  
  204.  
  205. </tr>
  206. </thead>
  207.  
  208.  
  209. <?PHP while ($row1 = mysqli_fetch_array($result1)): ?>
  210.  
  211. <tr>
  212. <td><?PHP echo htmlentities($row1['order_id']); ?></td>
  213.  
  214. <td><?PHP echo htmlentities($row1['firstname']); ?> <?PHP echo htmlentities($row1['lastname']); ?></td>
  215.  
  216.  
  217. <td>
  218.     <table class="table table-borderless table_in" style="width: 100%">
  219.         <tbody>
  220.         <tr>
  221.     <?PHP echo $row1['product_name']; ?>
  222. </tbody>
  223.     </table>
  224.  
  225. </td>
  226.  
  227. </tr>
  228.  
  229.  
  230.  
  231. <?PHP
  232. endwhile;
  233. echo "</table></div>";
  234. mysqli_free_result($result1); ?>
  235.  
  236.  
  237. <?PHP
  238. $query_1c ="SELECT p.order_id, p.order_delivery, p.customer_group_id, p.firstname, p.lastname, p.email, p.telephone, p.total, op.name AS product_name, op.quantity AS product_quantity, op.price AS product_price
  239.  
  240. FROM `oc_order` p
  241. JOIN oc_order_product op ON op.order_id = p.order_id
  242.  
  243. WHERE p.order_delivery LIKE '$data' AND p.customer_group_id = '$company'
  244. ORDER BY product_name
  245. ";
  246.  
  247. $result_1c = mysqli_query($link, $query_1c) or die("Ошибка " . mysqli_error($link));
  248. ?>
  249.  
  250.  
  251. <h1>Для забивания в 1С</h1>
  252.  
  253. <div class="row">
  254. <div class="col-md-6">
  255. <p>Дата: <?PHP echo $data; ?></p>
  256. </div>
  257. <div class="col-md-6 text-right">
  258. <p><?PHP echo $cn; ?></p>
  259. </div>
  260. </div>
  261.  
  262. <div class="table-responsive">
  263. <table class="table table-bordered" style="width: 100%; page-break-after: always;">
  264.     <thead class="thead-light">
  265. <tr>
  266. <th>Блюдо</th>
  267. <th>Кол-во</th>
  268. <th>Цена</th>
  269.  
  270. </tr>
  271. </thead>
  272.  
  273. <?PHP while ($row_1c = mysqli_fetch_array($result_1c)): ?>
  274.     <tr>
  275. <td><?PHP echo $row_1c['product_name']; ?></td>
  276.  <td><?PHP echo htmlentities($row_1c['product_quantity']); ?> шт. </td>
  277.  <td><?PHP echo htmlentities($row_1c['product_price']); ?> грн</td>
  278. </tr>
  279. <?PHP
  280. endwhile;
  281. echo "</table>";
  282. mysqli_free_result($result_1c); ?>
  283. </div>
  284.  
  285.  
  286. <?PHP
  287. $query_sotrud ="SELECT p.order_id, p.order_delivery, p.customer_group_id, p.firstname, p.lastname, p.email, p.telephone, p.total,
  288.  
  289. group_concat(concat('<td>',`name`,'</td><td>',`quantity`,' шт.</td><td>',`price`,' грн</td>') separator '</tr>')
  290.  
  291. AS product_name
  292.  
  293.  
  294. FROM `oc_order` p
  295. JOIN oc_order_product op ON op.order_id = p.order_id
  296.  
  297. WHERE p.order_delivery LIKE '$data' AND p.customer_group_id = $company
  298. GROUP BY p.order_id;
  299. ";
  300. $result_sotrud = mysqli_query($link, $query_sotrud) or die("Ошибка " . mysqli_error($link));
  301. ?>
  302.  
  303.  
  304.  
  305. <h1>Для учета по каждому сотруднику </h1>
  306.  
  307. <div class="row">
  308. <div class="col-md-6">
  309. <p>Дата: <?PHP echo $data; ?></p>
  310. </div>
  311. <div class="col-md-6 text-right">
  312. <p><?PHP echo $cn; ?></p>
  313. </div>
  314. </div>
  315.  
  316. <div class="table-responsive">
  317. <table class="table table-bordered" style="width: 100%; page-break-after: always;">
  318.     <thead class="thead-light">
  319. <tr>
  320. <th>ID</th>
  321. <th>ФИО</th>
  322.  
  323. <th></th>
  324.  
  325. <th>Цена</th>
  326. </tr>
  327. </thead>
  328.  
  329. <tbody>
  330. <?PHP while ($row_sotrud = mysqli_fetch_array($result_sotrud)): ?>
  331.  
  332. <tr>
  333. <td><?PHP echo htmlentities($row_sotrud['order_id']); ?></td>  
  334.  
  335. <td><?PHP echo htmlentities($row_sotrud['firstname']); ?> <?PHP echo htmlentities($row_sotrud['lastname']); ?></td>
  336.  
  337. <td>
  338.     <table class="table table-borderless table_in" style="width: 100%; ">
  339.         <tr>
  340.             <?PHP echo $row_sotrud['product_name']; ?>
  341. </table>            
  342. </td>
  343.  
  344. <td><?PHP echo htmlentities($row_sotrud['total']); ?> грн</td>
  345. </tr>
  346. </tbody>
  347.  
  348.  
  349. <?PHP
  350. endwhile;
  351. echo "</table></div>";
  352. mysqli_free_result($result_sotrud);
  353.  
  354. } else { ?>
  355.  
  356. <p>
  357. <div class="alert alert-dark" role="alert">
  358.   Задайте параметры поиска!
  359. </div>
  360. </p>
  361.  
  362. <?PHP } ?>
  363.  
  364. <!----->
  365.                
  366.  
  367.  
  368. <?PHP require "tpl/footer.php"; ?>


(Отредактировано автором: 19 Ноября, 2019 - 15:47:49)

 
 Top
LIME
Отправлено: 20 Ноября, 2019 - 10:45:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 10473
Дата рег-ции: Нояб. 2010  


Помог: 313 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT op.id, op.name AS product_name, op.quantity AS product_quantity, op.price AS product_price
  2. FROM oc_order p
  3. JOIN oc_order_product op ON op.order_id = p.order_id
  4. WHERE p.order_delivery LIKE '$data' AND p.customer_group_id = '$company' -- решил что это необходимое условие
  5. GROUP BY op.id -- наверное он есть
  6. ORDER BY product_name

такие догадки получились
а еще у тебя sql injections на все цвета и размеры
то есть кто угодно может делать с твоим приложением практически что угодно

такая каша)) я аж поностальгировал))

(Отредактировано автором: 20 Ноября, 2019 - 10:50:38)



-----
DDD
 
 Top
gad3005
Отправлено: 20 Ноября, 2019 - 11:26:27
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2019  


Помог: 0 раз(а)




LIME пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT op.id, op.name AS product_name, op.quantity AS product_quantity, op.price AS product_price
  2. FROM oc_order p
  3. JOIN oc_order_product op ON op.order_id = p.order_id
  4. WHERE p.order_delivery LIKE '$data' AND p.customer_group_id = '$company' -- решил что это необходимое условие
  5. GROUP BY op.id -- наверное он есть
  6. ORDER BY product_name

такие догадки получились
а еще у тебя sql injections на все цвета и размеры
то есть кто угодно может делать с твоим приложением практически что угодно

такая каша)) я аж поностальгировал))



Хах спасибо попробую!))
Самое смешное что это делал прогер который деньги за это получает))
А я вообще почти не шарю в PHP и Msql просто решил попробовать допилить код Голливудская улыбка
(Добавление)
LIME пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT op.id, op.name AS product_name, op.quantity AS product_quantity, op.price AS product_price
  2. FROM oc_order p
  3. JOIN oc_order_product op ON op.order_id = p.order_id
  4. WHERE p.order_delivery LIKE '$data' AND p.customer_group_id = '$company' -- решил что это необходимое условие
  5. GROUP BY op.id -- наверное он есть
  6. ORDER BY product_name

такие догадки получились
а еще у тебя sql injections на все цвета и размеры
то есть кто угодно может делать с твоим приложением практически что угодно

такая каша)) я аж поностальгировал))


LIME
Блин с op.id не сработало
Поставил p.order_id вывело но что-то не то

Нажмите для увеличения

(Отредактировано автором: 20 Ноября, 2019 - 11:56:11)

 
 Top
LIME
Отправлено: 20 Ноября, 2019 - 12:16:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 10473
Дата рег-ции: Нояб. 2010  


Помог: 313 раз(а)




следующая версия догадок
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT op.name AS product_name, op.quantity AS product_quantity, op.price AS product_price
  2. FROM oc_order p
  3. JOIN oc_order_product op ON op.order_id = p.order_id
  4. WHERE p.order_delivery LIKE '$data' AND p.customer_group_id = '$company'
  5. GROUP BY product_name
  6. ORDER BY product_name
теперь нельзя иметь продуктов с тем же именем


-----
DDD
 
 Top
gad3005
Отправлено: 20 Ноября, 2019 - 12:58:17
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2019  


Помог: 0 раз(а)




LIME пишет:
следующая версия догадок
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT op.name AS product_name, op.quantity AS product_quantity, op.price AS product_price
  2. FROM oc_order p
  3. JOIN oc_order_product op ON op.order_id = p.order_id
  4. WHERE p.order_delivery LIKE '$data' AND p.customer_group_id = '$company'
  5. GROUP BY product_name
  6. ORDER BY product_name
теперь нельзя иметь продуктов с тем же именем


Ага я тоже уже сам догадался. Вот рабочий запрос. Вдруг кому пригодится.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT op.name AS product_name, SUM(op.quantity) AS product_quantity, SUM(op.price) AS product_price
  2. FROM oc_order p
  3. JOIN oc_order_product op ON op.order_id = p.order_id
  4. WHERE p.order_delivery LIKE '$data' AND p.customer_group_id = '$company'
  5. GROUP BY op.name
  6. ORDER BY product_name


LIME
Спасибо тебе большое за помощь!

(Отредактировано автором: 20 Ноября, 2019 - 13:01:29)

 
 Top
LIME
Отправлено: 20 Ноября, 2019 - 13:25:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 10473
Дата рег-ции: Нояб. 2010  


Помог: 313 раз(а)




Цитата:
SUM(op.quantity) AS product_quantity

Цитата:
SUM(op.quantity) AS quantity_sum

чтоб в коде не спутать
хотяя...не самое страшное что у тебя может случиться)


-----
DDD
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB