Nueva pregunta

Pregunta:

Fecha: 02-01-2019 06:52:27 (En Español)

Contabilizar datos en una columna con PHP[No resuelta]

Tengo una tabla la cual me muestra el total de los valores pero quiero que me cuente (sume) cuales ya están pagado,
si ya pague (15 Camisas y 7 Pantalones) muestre en Pagado 22
Ejemplo

Sucursal | Camisas | $Camisas | Pantalones | $Pantalones | TotalProducto | Pagado | $Total |
Tienda1 | 50 | $200 | 20 | $200 | 70 | 0 | 14000 |


<?php
$contenedores="";
$CantCont=0;
$Subtotal=0;
-------------------------------------------------------------------------------------------------------------------------------------
$Pag=0; //Aqui
-------------------------------------------------------------------------------------------------------------------------------------
while($row = mysqli_fetch_array($result)) {
$CantCont=$row["Seco20"]+$row["Seco40"]+$row["Refrigerado"];
-------------------------------------------------------------------------------------------------------------------------------------
$Pag=$row["Pagado"]; //Aqui
-------------------------------------------------------------------------------------------------------------------------------------
$Subtotal=($row["Seco20"]*$row["PrecioSeco20"])+($row["Seco40"]*$row["PrecioSeco40"])+($row["Refrigerado"]*$row["PrecioRefrigerado"]);
?>
<tr class="gradeA">
<td><?php echo $row["RazonSocial"]; ?></td>
<td><?php echo $row["Seco20"]; ?></td>
<td><?php echo $row["PrecioSeco20"]; ?></td>
<td><?php echo $row["Seco40"]; ?></td>
<td><?php echo $row["PrecioSeco40"]; ?></td>
<td><?php echo $row["Refrigerado"]; ?></td>
<td><?php echo $row["PrecioRefrigerado"]; ?></td>
<td><?php echo $CantCont; ?></td>
-------------------------------------------------------------------------------------------------------------------------------------
<td><?php echo $row["Pagado"]; ?></td> //Aqui
-------------------------------------------------------------------------------------------------------------------------------------
<td><?php echo "$".number_format($Subtotal); ?></td>
<td><?php echo "$".number_format($Subtotal*1.16); ?></td>
</tr>
Etiquetas: Votos: 0 - Respuestas: 12 - Vistas: 10 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 03-01-2019 18:05:36 Hola, creo que una opción seria contar el total de filas en un conjunto de resultados. Para eso debes usar mysql_num_rows().

    Pon esta variable antes de ciclo while
    $pagado = mysql_num_rows($result)
    luego sólo debes imprimir con echo la variable $pagado.

    http://php.net/manual/es/function.mysql-num-rows.php
      Votos: 1 - Link respuesta
     
  • Fecha: 04-01-2019 05:38:24 Hola, hice pruebas con lo que me dijiste pero me sale... Error de análisis: error de sintaxis inesperado en el ciclo 'while'
    Lo puse antes del ciclo while e imprimi la variable echo $pagado en la tabla

    <?php
    $contenedores="";
    $CantCont=0;
    $Subtotal=0;
    // $Pag=0;
    // setlocale(LC_MONETARY, 'en_US');

    $pagado = mysql_num_rows($result)

    while($row = mysqli_fetch_array($result)) {
    $CantCont=$row["Seco20"]+$row["Seco40"]+$row["Refrigerado"];
    // $Pag=$row["Pagado"]; //Verificar esta linea
    $Subtotal=($row["Seco20"]*$row["PrecioSeco20"])+($row["Seco40"]*$row["PrecioSeco40"])+($row["Refrigerado"]*$row["PrecioRefrigerado"]);
    ?>
    <tr class="gradeA">
    <td><?php echo $row["RazonSocial"]; ?></td>
    <td><?php echo $row["Seco20"]; ?></td>
    <td><?php echo $row["PrecioSeco20"]; ?></td>
    <td><?php echo $row["Seco40"]; ?></td>
    <td><?php echo $row["PrecioSeco40"]; ?></td>
    <td><?php echo $row["Refrigerado"]; ?></td>
    <td><?php echo $row["PrecioRefrigerado"]; ?></td>
    <td><?php echo $CantCont; ?></td>
    <td><?php echo $pagado; ?></td>
    <td><?php echo "$".number_format($Subtotal); ?></td>
    <td><?php echo "$".number_format($Subtotal*1.16); ?></td>
    </tr>
    <?php
    }
    ?>
      Votos: 0 - Link respuesta
     
  • Fecha: 04-01-2019 15:09:12 observa que falta e ; (punto y como al final de la linea ) en
    $pagado = mysql_num_rows($result)

    deberia ser

    $pagado = mysql_num_rows($result);


    PD// en el post para que sea mas legible el codigo ponlo dentro del tag del botón Code PHP
    edita tus posts

    Saludos
      Votos: 2 - Link respuesta
     
  • Fecha: 05-01-2019 03:33:29 Hola precisamente falta agregar ; saludos!   Votos: 1 - Link respuesta
     
  • Fecha: 05-01-2019 05:39:32 Agrege el " ; " y me da el siguiente error... Error no detectado: llamar a una función no definida mysql_num_rows, ya hice pruebas agregando $pagado=0; fuera del ciclo while y $pagado=$pagado++ dentro del ciclo   Votos: 0 - Link respuesta
     
  • Fecha: 05-01-2019 10:59:30 Que versión de PHP estas utilizando?

    Observa la documentación sobre mysql_num_rows.


    Por otro lado puedes probar
    $pagado = count($result);

    En caso que continúes con la falla pone el código completo, la conexión la query), etc

    Si estas utilizando mysql_connect(), no es recomendado, es mejor que utilices PDO o mysqli

    Saludos
      Votos: 1 - Link respuesta
     
  • Fecha: 07-01-2019 05:21:19 Hola este es el código, creo que me falta algo en el SELECT solo agrege V.Pagado siento que es un INFULL??? si hace conexión a la base de datos ya que la variable CantCont muestra los resultados de el Seco20 y Seco40 me los suma pero ya el pagado no

    <?php
    $idCliente=0;
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $razonSocial = $_POST["razonsocial"];
    $idCliente = $_POST["idCliente"];
    $fechaInicio = $_POST["fechaInicio"];
    $fechaFin = $_POST["fechaFin"];

    if($idCliente==0){
    $result=query("SELECT V.idCliente, C.RazonSocial, V.Pagado, IFNULL((SELECT SUM(CantCont) FROM viajes WHERE idTipoContenedor=1 and idCliente=V.idCliente and FechaAlta>='".$fechaInicio." 00:00:00' and FechaAlta<='".$fechaFin." 23:59:59'),0) AS Seco20, (SELECT Precio FROM Servicios WHERE idTipoContenedor=1 and idCliente=V.idCliente) AS PrecioSeco20, IFNULL((SELECT SUM(CantCont) FROM viajes WHERE idTipoContenedor=3 and idCliente=V.idCliente and FechaAlta>='".$fechaInicio." 00:00:00' and FechaAlta<='".$fechaFin." 23:59:59'),0) AS Seco40, (SELECT Precio FROM Servicios WHERE idTipoContenedor=3 and idCliente=V.idCliente) AS PrecioSeco40, IFNULL((SELECT SUM(CantCont) FROM viajes WHERE idTipoContenedor=2 and idCliente=V.idCliente and FechaAlta>='".$fechaInicio." 00:00:00' and FechaAlta<='".$fechaFin." 23:59:59'),0) AS Refrigerado, (SELECT Precio FROM Servicios WHERE idTipoContenedor=2 and idCliente=V.idCliente) AS PrecioRefrigerado FROM viajes V INNER JOIN clientes C ON V.idCliente=C.idCliente WHERE V.FechaAlta>='".$fechaInicio." 00:00:00' and V.FechaAlta<='".$fechaFin." 23:59:59' GROUP BY V.idCliente ORDER BY V.idCliente");
    }else{
    $result=query("SELECT V.idCliente, C.RazonSocial, IFNULL((SELECT SUM(CantCont) FROM viajes WHERE idTipoContenedor=1 and idCliente=V.idCliente and FechaAlta>='".$fechaInicio." 00:00:00' and FechaAlta<='".$fechaFin." 23:59:59'),0) AS Seco20, (SELECT Precio FROM Servicios WHERE idTipoContenedor=1 and idCliente=V.idCliente) AS PrecioSeco20, IFNULL((SELECT SUM(CantCont) FROM viajes WHERE idTipoContenedor=3 and idCliente=V.idCliente and FechaAlta>='".$fechaInicio." 00:00:00' and FechaAlta<='".$fechaFin." 23:59:59'),0) AS Seco40, (SELECT Precio FROM Servicios WHERE idTipoContenedor=3 and idCliente=V.idCliente) AS PrecioSeco40, IFNULL((SELECT SUM(CantCont) FROM viajes WHERE idTipoContenedor=2 and idCliente=V.idCliente and FechaAlta>='".$fechaInicio." 00:00:00' and FechaAlta<='".$fechaFin." 23:59:59'),0) AS Refrigerado, (SELECT Precio FROM Servicios WHERE idTipoContenedor=2 and idCliente=V.idCliente) AS PrecioRefrigerado FROM viajes V INNER JOIN clientes C ON V.idCliente=C.idCliente WHERE V.FechaAlta>='".$fechaInicio." 00:00:00' and V.FechaAlta<='".$fechaFin." 23:59:59' and V.idCliente=" . $idCliente . " GROUP BY V.idCliente ORDER BY V.idCliente");
    }
    }
    ?>

    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    ?>
    <div class="row">
    <div class="col-lg-12">
    <div class="ibox float-e-margins">
    <div class="ibox-content">
    <table class="table table-striped table-bordered table-hover dataTables-example" >
    <thead>
    <tr>
    <th>Cliente</th>
    <th>Seco20</th>
    <th>$20</th>
    <th>Seco40</th>
    <th>$40</th>
    <th>Refrigerado</th>
    <th>$Ref</th>
    <th>TotCon</th>
    <th>Pagado</th>
    <th>Subtotal</th>
    <th>Total</th>
    </tr>
    </thead>
    <tbody>
    <?php
    $contenedores="";
    $CantCont=0;
    $Subtotal=0;
    //$pagado=0;
    //setlocale(LC_MONETARY, 'en_US');
    //$pagado = mysql_num_rows($result);
    $pagado = count($result);

    while($row = mysqli_fetch_array($result)) {
    $CantCont=$row["Seco20"]+$row["Seco40"]+$row["Refrigerado"];
    $pagado=$row["Pagado"]; //Verificar esta linea
    $Subtotal=($row["Seco20"]*$row["PrecioSeco20"])+($row["Seco40"]*$row["PrecioSeco40"])+($row["Refrigerado"]*$row["PrecioRefrigerado"]);
    ?>
    <tr class="gradeA">
    <td><?php echo $row["RazonSocial"]; ?></td>
    <td><?php echo $row["Seco20"]; ?></td>
    <td><?php echo $row["PrecioSeco20"]; ?></td>
    <td><?php echo $row["Seco40"]; ?></td>
    <td><?php echo $row["PrecioSeco40"]; ?></td>
    <td><?php echo $row["Refrigerado"]; ?></td>
    <td><?php echo $row["PrecioRefrigerado"]; ?></td>
    <td><?php echo $CantCont; ?></td>
    <td><?php echo $pagado; ?></td> <!-- Verificar esta linea -->
    <td><?php echo "$".number_format($Subtotal); ?></td>
    <td><?php echo "$".number_format($Subtotal*1.16); ?></td>
    </tr>
    <?php
    }
    ?>
    </tbody>
    <tfoot>
    <tr>
    <th>Cliente</th>
    <th>Seco20</th>
    <th>$20</th>
    <th>Seco40</th>
    <th>$40</th>
    <th>Refrigerado</th>
    <th>$Ref</th>
    <th>TotCon</th>
    <th>Pagado </th>
    <th>Subtotal</th>
    <th>Total</th>
    </tr>
    </tfoot>
    </table>


    </div>
    </div>
    </div>
    </div>
    <?php
    }
    ?>
      Votos: -1 - Link respuesta
     
  • Fecha: 08-01-2019 13:34:35 Uff, creo que lo primero seria arreglar la consulta. Haces un abuso de subselects cuando puedes utilizar JOINS.

    El rendimiento de esa consulta te va a causar dolores de cabeza mas adelante cuando tu sistema tenga una cantidad de datos considerables ademas de que su mantenimiento sera complicado, especialmente para un dev que no este tan familiarizado con tu base de datos.

    En una consulta tienes el campo V.Pagado pero en la otra no, eso indica que la logica puede variar. Es correcto?
      Votos: 2 - Link respuesta
     
  • Fecha: 09-01-2019 07:55:37 La verdad no es codigo 100% mio, soy como el tercer dev. que lo esta manejando y como son pocos los registros no he tenido la necesidad de cambiar el abuso de los subselect, solo necesito que me cuente la cantidad de campos que llevo pagados, me muestra si es 1 solo pero quiero que me muestre todos. En la consulta solo tengo en el if V.Pagado y no lo puse en el else ya que no era necesario (pienso yo)   Votos: 0 - Link respuesta
     
  • Fecha: 09-01-2019 10:20:52 Has probado de poner antes del while
    $pagado = count($result);

    PD// reitero, en el post para que sea mas legible el codigo ponlo dentro del tag del botón Code PHP
    edita tus posts

    Saludos
      Votos: 2 - Link respuesta
     
  • Fecha: 10-01-2019 12:39:56 Te refieres así?

    Esta dentro de la columna pagado
    <td><?php $pagado = count($result); echo $pagado; ?></td>
      Votos: -1 - Link respuesta
     
  • Fecha: 18-02-2019 13:32:08 Para poder ayudarte, necesito hacerte algunas preguntas,

    - Como se llama el campo en donde guardas , el valor para saber si ya fue pagado o si aun sigueen pendiente ?

    - Que valor guardas en ese campo ?

    saludo
    ATT
    Jose Quinto
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión