За последние 24 часа нас посетили 18506 программистов и 1624 робота. Сейчас ищут 1000 программистов ...

WHERE из другой запрос

Тема в разделе "PHP и базы данных", создана пользователем Искандар, 2 июл 2024.

  1. Искандар

    Искандар Активный пользователь

    С нами с:
    18 фев 2017
    Сообщения:
    78
    Симпатии:
    6
    HTML:
    1. <?php
    2. $db = new mysqli("***", "***", "***", "***");
    3. $result4 = mysqli_query($db, "SELECT klient FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' GROUP BY klient ORDER BY id DESC");
    4. if(isset($_POST['submit2'])){
    5. for($i = 0; $i < count($_POST["id2"]); $i++){
    6. if($_POST["id2"][$i]!="") {
    7. $out[$i]['id2'] = @$_POST["id2"][$i];
    8. $out[$i]['kolvo2'] = @$_POST["kolvo2"][$i];
    9. $out[$i]['sena2'] = @$_POST["sena2"][$i];
    10. $out[$i]['file'] = @$_POST["file"][$i];
    11. }
    12. }
    13. if(!empty($out)) {
    14. for($i = 0; $i < count($out); $i++) {
    15. mysqli_query($db, "UPDATE `sklad2` SET
    16. kolvo = {$out[$i]['kolvo2']},
    17. sena = {$out[$i]['sena2']},
    18. summa = {$out[$i]['kolvo2']} * {$out[$i]['sena2']},
    19. comment = '{$out[$i]['file']}'
    20. WHERE id = {$out[$i]['id2']}");
    21. header ("Location: skladi_akril2.php");}}
    22. Else{ header ("Location: skladi_akril2.php");}}
    23. ?>
    24. <meta charset="UTF-8">
    25. <meta name=viewport content="width=device-width, initial-scale=1">
    26. <?php include "style.css";?>
    27. </head>
    28. <form method="POST">
    29. <center>
    30. <?php $i = 0; while ($row4 = mysqli_fetch_array($result4, MYSQLI_NUM)){ ?>
    31. <div class="box">
    32. <center><?php echo $row4[0];?></center>
    33. <table width="100%" border="1"  class="table1"  style="font:11px Arial">
    34. <tr height="20" style="font:9px Arial">
    35. <th>Время</th>
    36. <th>Наименование</th>
    37. <th>Кол-во</th>
    38. <th>Цена</th>
    39. <th>Сумма</th>
    40. <th>Файл</th>
    41. </tr>
    42. <?php
    43. $result3  = mysqli_query($db, "
    44. SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]'
    45. UNION
    46. SELECT '', '', 'ИТОГО', '',  '', '', SUM(z1.summa), '', '', '', '', '', '', '', SUM(foida), ''
    47. FROM
    48. (SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]') as z1
    49. ");
    50. ?>
    51. <?php $i = 0; while ($row3 = mysqli_fetch_array($result3, MYSQLI_NUM)){ ?>
    52. <tr>
    53. <td width="10%" align="center"><?php echo $row3[11];?></td>
    54. <td height="20" style="padding-left:5px;">
    55. <input name="id2[]" type="hidden" value="<?php echo $row3[0];?>"/>
    56. <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>
    57. <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>
    58. <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>
    59. <td width="10%" align="center"><?php echo $row3[6];?></td>
    60. <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>
    61. </tr>
    62. <?php $i++; }; ?>
    63. <input type="submit" name="submit2" value="Сохранить"/>
    64. </div>
    65. <?php $i++; }; ?>
    66. </center>
    67. </form>
    68. </body>
    69. </html>

    Доброго времени суток!
    У меня есть задача: Надо сгруппировать продажи по клиентам и показать итого суммы, чтобы пользователь смог изменить кол-во, цену и файл (это название файла). Я сделал как я вижу но проблема в том что последние 2 карточки не изменяется... Как мне исправить? или я должен по другому реализовать?
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    425
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Добрый день!

    Обратите, пожалуйста, внимание на два фрагмента кода:
    1.
    PHP:
    1. <?
    2. if(!empty($out))
    3. {
    4.     for($i = 0; $i < count($out); $i++)
    5.     {
    6.         mysqli_query($db, "UPDATE `sklad2` SET
    7.        kolvo = {$out[$i]['kolvo2']},
    8.        sena = {$out[$i]['sena2']},
    9.        summa = {$out[$i]['kolvo2']} * {$out[$i]['sena2']},
    10.        comment = '{$out[$i]['file']}'
    11.        WHERE id = {$out[$i]['id2']}");
    12.         header ("Location: skladi_akril2.php"); //??? редирект при $i=0
    13.     }
    14. }
    15. Else
    16. {
    17.     header ("Location: skladi_akril2.php");
    18. }
    2. Присвоение значений переменной $i ? Где используется?
    PHP:
    1. <?php
    2. $i = 0; //??? $i
    3. while ($row4 = mysqli_fetch_array($result4, MYSQLI_NUM))
    4. {
    5.     //html
    6.     $result3  = mysqli_query($db, "
    7.    SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]'
    8.    UNION
    9.    SELECT '', '', 'ИТОГО', '',  '', '', SUM(z1.summa), '', '', '', '', '', '', '', SUM(foida), ''
    10.    FROM
    11.    (SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]') as z1
    12.    ");
    13.  
    14.     $i = 0; //??? $i
    15.     while ($row3 = mysqli_fetch_array($result3, MYSQLI_NUM))
    16.     {
    17.         //html
    18.         $i++; //??? $i
    19.     };
    20.     //html
    21.     $i++; //??? $i
    22. };
    Удачи!
     
  3. Искандар

    Искандар Активный пользователь

    С нами с:
    18 фев 2017
    Сообщения:
    78
    Симпатии:
    6
    Владимир, спасибо за оперативный ответ. Если честно я любитель. Я сразу извиняюсь если перепутал ветку).
    Если Вам не сложно можете написать правильный код? Я пол часа пробовал, к сожалению не смог исправить(
     
  4. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    425
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    По первому фрагменту кода. Я не видел skladi_akril2.php.
    Должны ли туда передаваться данные?
    Если да, то какие? Во всех случаях редирект д.б. после цикла.
    Вероятно в skladi_akril2.php через GET параметр должна передаваться информация об update.
    PHP:
    1. <?
    2. if(!empty($out))
    3. {
    4.     $buf = [];
    5.     for($i = 0; $i < count($out); $i++)
    6.     {
    7.      
    8.         $res = mysqli_query($db, "UPDATE `sklad2` SET
    9.        kolvo = {$out[$i]['kolvo2']},
    10.        sena = {$out[$i]['sena2']},
    11.        summa = {$out[$i]['kolvo2']} * {$out[$i]['sena2']},
    12.        comment = '{$out[$i]['file']}'
    13.        WHERE id = {$out[$i]['id2']}");
    14.         if($res)
    15.         {
    16.             $buf[] = $out[$i]['id2'];
    17.         }      
    18.     }
    19.     $updatedId = implode(",",$buf);
    20.     header ("Location: skladi_akril2.php?updatedId=$updatedId");
    21. }
    22. Else
    23. {
    24.     header ("Location: skladi_akril2.php");
    25. }
    По второму фрагменту. Не увидел где используется переменная $i.
    Если она нужна, то небходимо использовать две переменные, $i и $i2,
    иначе нужно убрать переменную $i.
    PHP:
    1. <?php
    2. $i = 0;
    3. while ($row4 = mysqli_fetch_array($result4, MYSQLI_NUM))
    4. {
    5.     //html
    6.     $result3  = mysqli_query($db, "
    7.    SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]'
    8.    UNION
    9.    SELECT '', '', 'ИТОГО', '',  '', '', SUM(z1.summa), '', '', '', '', '', '', '', SUM(foida), ''
    10.    FROM
    11.    (SELECT * FROM sklad2 WHERE ruz = '2024-07-01' AND status = 'Продажа' AND klient = '$row4[0]') as z1
    12.    ");
    13.  
    14.     $i2 = 0;
    15.     while ($row3 = mysqli_fetch_array($result3, MYSQLI_NUM))
    16.     {
    17.         //html
    18.         $i2++;
    19.     };
    20.     //html
    21.     $i++;
    22. };
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    Ммм...

    • запросы в цикле
    • перенаправление страниц без стоп триггера
    • редирект без корня - относительно
    • SQL-Injection
    • множ. использование count в for
     
    Sail нравится это.