Спойлер: Код HTML: <?php $db = new mysqli("***", "***", "***", "***"); $result4 = mysqli_query($db, "SELECT klient FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' GROUP BY klient ORDER BY id DESC"); if(isset($_POST['submit2'])){ for($i = 0; $i < count($_POST["id2"]); $i++){ if($_POST["id2"][$i]!="") { $out[$i]['id2'] = @$_POST["id2"][$i]; $out[$i]['kolvo2'] = @$_POST["kolvo2"][$i]; $out[$i]['sena2'] = @$_POST["sena2"][$i]; $out[$i]['file'] = @$_POST["file"][$i]; } } if(!empty($out)) { for($i = 0; $i < count($out); $i++) { mysqli_query($db, "UPDATE `sklad2` SET kolvo = {$out[$i]['kolvo2']}, sena = {$out[$i]['sena2']}, summa = {$out[$i]['kolvo2']} * {$out[$i]['sena2']}, comment = '{$out[$i]['file']}' WHERE id = {$out[$i]['id2']}"); header ("Location: skladi_akril2.php");}} Else{ header ("Location: skladi_akril2.php");}} ?> <html> <head> <meta charset="UTF-8"> <title></title> <meta name=viewport content="width=device-width, initial-scale=1"> <?php include "style.css";?> </head> <body> <form method="POST"> <center> <?php $i = 0; while ($row4 = mysqli_fetch_array($result4, MYSQLI_NUM)){ ?> <div class="box"> <center><?php echo $row4[0];?></center> <table width="100%" border="1" class="table1" style="font:11px Arial"> <tr height="20" style="font:9px Arial"> <th>Время</th> <th>Наименование</th> <th>Кол-во</th> <th>Цена</th> <th>Сумма</th> <th>Файл</th> </tr> <?php $result3 = mysqli_query($db, " SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]' UNION SELECT '', '', 'ИТОГО', '', '', '', SUM(z1.summa), '', '', '', '', '', '', '', SUM(foida), '' FROM (SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]') as z1 "); ?> <?php $i = 0; while ($row3 = mysqli_fetch_array($result3, MYSQLI_NUM)){ ?> <tr> <td width="10%" align="center"><?php echo $row3[11];?></td> <td height="20" style="padding-left:5px;"> <input name="id2[]" type="hidden" value="<?php echo $row3[0];?>"/> <a href="delete_savdo2.php?id=<?php echo $row3[0]?>&date=<?php echo $ruz;?>&klient=<?php echo $klient;?>" onclick="return confirm('Удалить <?php echo $row3[2]?>?')"><?php echo $row3[2];?></a></td> <td align="center" width="10%" ><input name="kolvo2[]" type="number" value="<?php echo $row3[4];?>" step="any" style="width:100%; height:17px; Background:whitesmoke; font-size:10px; box-shadow:0 0; color: #6bbf20;" /></td> <td align="center" width="12%" ><input name="sena2[]" type="number" value="<?php echo $row3[5];?>" step="any" style="width:100%; height:17px; Background:whitesmoke; font-size:10px; box-shadow:0 0; color: #6bbf20; "/></td> <td width="10%" align="center"><?php echo $row3[6];?></td> <td align="center" width="15%" ><input name="file[]" type="text" placeholder = "Номи файл" value="<?php echo $row3[10];?>" step="any" style="width:100%; height:17px; Background:whitesmoke; font-size:10px; box-shadow:0 0; color: #6bbf20; "/></td> </tr> <?php $i++; }; ?> </table> <input type="submit" name="submit2" value="Сохранить"/> </div> <?php $i++; }; ?> </center> </form> </body> </html> Доброго времени суток! У меня есть задача: Надо сгруппировать продажи по клиентам и показать итого суммы, чтобы пользователь смог изменить кол-во, цену и файл (это название файла). Я сделал как я вижу но проблема в том что последние 2 карточки не изменяется... Как мне исправить? или я должен по другому реализовать?
Добрый день! Обратите, пожалуйста, внимание на два фрагмента кода: 1. PHP: <? if(!empty($out)) { for($i = 0; $i < count($out); $i++) { mysqli_query($db, "UPDATE `sklad2` SET kolvo = {$out[$i]['kolvo2']}, sena = {$out[$i]['sena2']}, summa = {$out[$i]['kolvo2']} * {$out[$i]['sena2']}, comment = '{$out[$i]['file']}' WHERE id = {$out[$i]['id2']}"); header ("Location: skladi_akril2.php"); //??? редирект при $i=0 } } Else { header ("Location: skladi_akril2.php"); } 2. Присвоение значений переменной $i ? Где используется? PHP: <?php $i = 0; //??? $i while ($row4 = mysqli_fetch_array($result4, MYSQLI_NUM)) { //html $result3 = mysqli_query($db, " SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]' UNION SELECT '', '', 'ИТОГО', '', '', '', SUM(z1.summa), '', '', '', '', '', '', '', SUM(foida), '' FROM (SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]') as z1 "); $i = 0; //??? $i while ($row3 = mysqli_fetch_array($result3, MYSQLI_NUM)) { //html $i++; //??? $i }; //html $i++; //??? $i }; Удачи!
Владимир, спасибо за оперативный ответ. Если честно я любитель. Я сразу извиняюсь если перепутал ветку). Если Вам не сложно можете написать правильный код? Я пол часа пробовал, к сожалению не смог исправить(
По первому фрагменту кода. Я не видел skladi_akril2.php. Должны ли туда передаваться данные? Если да, то какие? Во всех случаях редирект д.б. после цикла. Вероятно в skladi_akril2.php через GET параметр должна передаваться информация об update. PHP: <? if(!empty($out)) { $buf = []; for($i = 0; $i < count($out); $i++) { $res = mysqli_query($db, "UPDATE `sklad2` SET kolvo = {$out[$i]['kolvo2']}, sena = {$out[$i]['sena2']}, summa = {$out[$i]['kolvo2']} * {$out[$i]['sena2']}, comment = '{$out[$i]['file']}' WHERE id = {$out[$i]['id2']}"); if($res) { $buf[] = $out[$i]['id2']; } } $updatedId = implode(",",$buf); header ("Location: skladi_akril2.php?updatedId=$updatedId"); } Else { header ("Location: skladi_akril2.php"); } По второму фрагменту. Не увидел где используется переменная $i. Если она нужна, то небходимо использовать две переменные, $i и $i2, иначе нужно убрать переменную $i. PHP: <?php $i = 0; while ($row4 = mysqli_fetch_array($result4, MYSQLI_NUM)) { //html $result3 = mysqli_query($db, " SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]' UNION SELECT '', '', 'ИТОГО', '', '', '', SUM(z1.summa), '', '', '', '', '', '', '', SUM(foida), '' FROM (SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]') as z1 "); $i2 = 0; while ($row3 = mysqli_fetch_array($result3, MYSQLI_NUM)) { //html $i2++; }; //html $i++; };
Ммм... запросы в цикле перенаправление страниц без стоп триггера редирект без корня - относительно SQL-Injection множ. использование count в for