Intereting Posts
Закрытие соединения MySQL во время параллельных задач Cron Переменная переменная PHP для цикла Как заполнить modified_by с помощью user_id того, кто сделал обновление записи, используя laravel 5.1? Нечетное поведение оператора switch Как получить содержимое страницы после перенаправления javascript в php Возможно ли добавить tinyInteger или smallInteger для увеличения на laravel ORM? «Безопасный» процессор уценки для PHP? PHP – быстрый способ удалить все символы, не отображаемые в браузере из строки utf8 Doctrine2 ORM не обновляет объекты, которые изменены вне сценария Возможно, транзакция PDO через несколько баз данных? Скомпилированное приложение GWT не может взаимодействовать с бэкэндом php Создание маршрута в Laravel с использованием поддоменов и подстановочных знаков домена MongoDB Duplicate Documents даже после добавления уникального ключа Не удается подключиться к xdebug в PHPStorm Можно ли объявить массив как постоянный

PHP-суммарный результат эха на лету (сложный)

Это сложно, но просто для профессионалов.

У меня есть в mysql поля: имя продукта, mycost, sellprice и запас. Потому что мне нужно знать, сколько у меня есть инвестиций в мой магазин каждым продуктом, который я создал для расчета на лету, и работает нормально:

<td><?php echo $product['name'] ?></td> <td><?php echo $product['stock'] ?></td> <td><?php echo $product['mycost'] ?></td> <td><?php echo $product['sellprice'] ?></td> 

здесь мы рассчитываем на лету, сколько инвестиций (денег) у меня в моем магазине в соответствии с mycost (цена, которую я заплатил за продукт) * акции

 <td><?php echo number_format($product['mycost'] * $product['stock'],0,',','.'); ?></td> 

Он отлично работает, если mycost для продукта составляет 10, а акции – 100, тогда результат, который я получаю на лету, составляет 1000 инвестиций

Теперь, поскольку результат (1000) для продукта находится на ходу (не сохраняется в mysql), у меня есть следующая проблема:

Результат поиска показывает, например, 3 разных продукта с тремя различными результатами инвестиций на лету, которые не хранятся в mysql. Как я могу суммировать этот результат и показывать в верхней части страницы?

Если это были результаты, хранящиеся в mysql, это было легко, но так как это было так:

 <td><?php echo number_format($product['mycost'] * $product['stock'],0,',','.'); ?></td> 

Я не вижу никакого способа сделать это и почему я здесь, чтобы спросить профессионалов

Есть идеи?

EDIT: Вот полный код

 <?php $cualcategoria = mysqli_real_escape_string($database,$_GET['categoria']); $verproductos = mysqli_query($database, "SELECT * FROM `productos`"); while($mostrar = mysqli_fetch_assoc($verproductos)) { ?> <table class="table1000"> <tr> <td style="width:120px;"><div id="rightImage"><img style="border:2px solid #cccccc;" alt="image" src="fotos/<?php echo $mostrar['codigo'] ?>.jpg" width="90" height="90"></div></td> <td valign="top" style="width:900px;"><table class="table900"> <tr> <td class="header150">Producto</td> <td class="header150">Marca</td> <td class="header150">Modelo</td> <td class="header150">Cantidad</td> <td class="header150">Capital</td> <td class="header150">Código</td> </tr> <tr> <td class="header150small"><?php echo $mostrar['producto'] ?></td> <td class="header150small"><?php echo $mostrar['marca'] ?></td> <td class="header150small"><?php echo $mostrar['modelo'] ?></td> <td class="header150small"><?php echo number_format($mostrar['stock'],0,',','.'); ?></td> <td class="header150small">$ <?php echo number_format($mostrar['costo'] * $mostrar['stock'],0,',','.'); ?></td> <td class="header150small"><a class="header150small" href="generar.php?codigo=<?php echo $mostrar['codigo'] ?>"><?php echo $mostrar['codigo'] ?></a></td> </tr> <tr> <td class="header150">Precio Costo</td> <td class="header150">Precio Neto</td> <td class="header150">IVA Incluido</td> <td class="header150">Ganancia</td> <td class="header150">Ganancia Total</td> <td class="header150">Proveedor</td> </tr> <tr> <td class="header150small">$ <?php echo number_format($mostrar['costo'],0,',','.'); ?></td> <td class="header150small">$ <?php echo number_format($mostrar['venta'],0,',','.'); ?></td> <td class="header150small">$ <?php echo number_format($mostrar['coniva'],0,',','.'); ?></td> <td class="header150small">$ <?php echo number_format($mostrar['venta'] - $mostrar['costo'],0,',','.'); ?> </td> <td class="header150small">$ <?php echo number_format(($mostrar['venta'] - $mostrar['costo']) * $mostrar['stock'],0,',','.'); ?></td> <td class="header150small"><?php echo $mostrar['proveedor'] ?></td> </tr> </table> </td> </tr> </table> <?php } ?> 

Related of "PHP-суммарный результат эха на лету (сложный)"

Muy bien, maradoiano, tuve que realizar algunas acrobacias для correr tu código, la cosa está así:

  • Para obtener la suma de todas las inversiones sencillamente se necesita una variable que acumule los resultados de todos los (costo * stock), llamémosla $total .
  • Para desplegar este total ARRIBA de la tabla es necesario GUARDAR toda la tabla en una variable string, llamémosla $tabla . Ésta será una variable magne porque concatena el <table> , los <tr> y los <td> , además de los datos que éstos contienen.
  • Al final del ciclo que recorre todos los datos de la base de datos, se despliega primero $total y después $tabla .

El siguiente código hace lo передний, нота:

  • Como no tengo base datos tuve que inventarme un array con 3 продукта. Maradoiano debe comentar este array y descomentar su base datos.
  • Como estoy usando un array tuve que usar también un foreach . Maradoiano debe comentarlo y volver a usar su while .
  • Toda la tabla debe ser creada como string, por eso todas las líneas aparecen entre comillas simples, ej: '<td> … </ td>'.
  • Para que maradoiano prueba este código debe crear un archivo de texto, ponerle cualquier nombre pero con extensión PHP, copiar y pegar el siguiente código, y correrlo desde el navegador.

Este es el código:

 <?php //$cualcategoria = mysqli_real_escape_string($database,$_GET['categoria']); //$verproductos = mysqli_query($database, "SELECT * FROM `productos`"); $verproductos = Array( Array( "codigo" => "0401", "producto" => "tenis", "marca" => "Nike", "modelo" => "Air", "stock" => 50, "costo" => 700, "venta" => 800, "coniva" => 125, "proveedor" => "Importadora de Zapatos" ), Array( "codigo" => "0992", "producto" => "camisa", "marca" => "Eiffel", "modelo" => "", "stock" => 14, "costo" => 250, "venta" => 300, "coniva" => 60, "proveedor" => "Importadora de Camisas" ), Array( "codigo" => "5800", "producto" => "anteojos", "marca" => "Bay", "modelo" => "Solar", "stock" => 40, "costo" => 400, "venta" => 550, "coniva" => 95, "proveedor" => "Importadora de Anteojos" ) ); $tabla = '<table class="table1000">'; $total = 0; //while ( $mostrar = mysqli_fetch_assoc( $verproductos ) ) foreach ( $verproductos as $mostrar ) { $tabla .= '<tr>' . ' <td style="width:120px;">' . ' <div id="rightImage"><img style="border:2px solid #cccccc;" alt="image"' . ' src="fotos/' . $mostrar['codigo'] . '.jpg" width="90" height="90"></div></td>' . ' <td valign="top" style="width:900px">' . ' <table class="table900">' . ' <tr>' . ' <td class="header150">Producto</td>' . ' <td class="header150">Marca</td>' . ' <td class="header150">Modelo</td>' . ' <td class="header150">Cantidad</td>' . ' <td class="header150">Capital</td>' . ' <td class="header150">Código</td>' . ' </tr>' . ' <tr>' . ' <td class="header150small">' . $mostrar['producto'] . '</td>' . ' <td class="header150small">' . $mostrar['marca'] . '</td>' . ' <td class="header150small">' . $mostrar['modelo'] . '</td>' . ' <td class="header150small">' . number_format($mostrar['stock'],0,',','.') . '</td>' . ' <td class="header150small">$' . number_format($mostrar['costo']*$mostrar['stock'],0,',','.') . '</td>'; $total += $mostrar['costo'] * $mostrar['stock']; $tabla .= ' <td class="header150small"><a class="header150small"' . ' href="generar.php?codigo=' . $mostrar['codigo'] . '">' . $mostrar['codigo'] . '</a></td>' . ' </tr>' . ' <tr>' . ' <td class="header150">Precio Costo</td>' . ' <td class="header150">Precio Neto</td>' . ' <td class="header150">IVA Incluido</td>' . ' <td class="header150">Ganancia</td>' . ' <td class="header150">Ganancia Total</td>' . ' <td class="header150">Proveedor</td>' . ' </tr>' . ' <tr>' . ' <td class="header150small">$' . number_format($mostrar['costo'],0,',','.') . '</td>' . ' <td class="header150small">$' . number_format($mostrar['venta'],0,',','.') . '</td>' . ' <td class="header150small">$' . number_format($mostrar['coniva'],0,',','.') . '</td>' . ' <td class="header150small">$' . number_format($mostrar['venta'] - $mostrar['costo'],0,',','.') . ' </td>' . ' <td class="header150small">$' . number_format(($mostrar['venta'] - $mostrar['costo']) * $mostrar['stock'],0,',','.') . '</td>' . ' <td class="header150small">' . $mostrar['proveedor'] . '</td>' . ' </tr>' . ' </table>' . ' </td>' . '</tr>' . '<tr><td colspan="2"><hr/></td></tr>'; } echo "Inversión total = " . $total . "<br/>" . $tabla . '</table>'; ?> 

Способ будет использовать переменную, чтобы суммировать ее на ходу (здесь я использую totalInvestment как переменную)

 $totalInvestment = 0; foreach($products as $product): $totalInventsment += product['mycost'] * $product['stock']; ?> ... <td><?php echo $product['name'] ?></td> <td><?php echo $product['stock'] ?></td> <td><?php echo $product['mycost'] ?></td> <td><?php echo $product['sellprice'] ?></td> ... <?php endforeach; 

Тогда вы можете просто повторить это так

 <?php echo number_format($totalInventsment,',','.'); ?> 

РЕДАКТИРОВАТЬ Если вы хотите его наверху, вы можете добавить это в верхнюю часть вашего файла (сделайте загрузку сайта немного медленнее n (x)

 $totalInvestment = 0; foreach($products as $product){ $totalInventsment += product['mycost'] * $product['stock']; } echo number_format($totalInventsment,',','.');