Comunidad de diseño web y desarrollo en internet online

MOSTRAR SUMA DE LOS RESULTADOS SE UN SELECT

Citar            
MensajeEscrito el 11 Ago 2011 02:30 pm
Saludos, solicito su ayuda, estoy realizando una planilla en php y mysql para filtrar informacion como esta


Lo que necesito es poder mostrar en la misma pagina la suma de la cantidad por articulo y total.


Eh probado de distintas formas pero no me resulta, el codigo del php es el siguiente

Código PHP :

<?php
function cambiarFormatoFecha($fecha){ 
list($anio,$mes,$dia)=explode("-",$fecha); 
return $dia."-".$mes."-".$anio; 
} 
require("conexion.php");
require("funciones.php");

$criterio = getParam($_GET["criterio"], "");
$criterio2 = getParam($_GET["criterio2"], "");

$total = 0;
if ($criterio != "") {
   $query = "SELECT * FROM muebleria WHERE Ordtrab like ".sqlValue($criterio."%", "text")." and Fecha like ".sqlValue($criterio2."%", "text")."  ORDER BY Fecha ASC";
   $queEmp = mysql_query($query, $conexion);
   $total = mysql_num_rows($queEmp);
}
?>
<?php while ($rsEmp = mysql_fetch_assoc($queEmp)) { ?>
  <tr>
   
   <td><?php echo cambiarFormatoFecha($rsEmp ['Fecha']); ?></td>
    <td><?php echo $rsEmp['Codart']; ?></td>
   <td><?php echo $rsEmp['Cant']; ?></td>
   <td><?php echo $rsEmp['Proce']; ?></td>
   <td><?php echo $rsEmp['Tipo']; ?></td>
   <td><?php echo $rsEmp['Descrip']; ?></td>
    <td><?php echo $rsEmp['Opera']; ?></td>
   <td><?php echo $rsEmp['Cargo']; ?></td>
    <td><?php echo $rsEmp['Rut']; ?></td>
  </tr>
  <?php } ?>
</table>
 <?php } ?>

La tabla de la BD esta asi

Espero que me puedan orientar gracias.

Por kok3cl

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Ago 2011 02:46 pm
Bueno se supone que tiene sun WHILE de php donde le pasas los valores de forma asociativa.
Muy buena elección, desde mi punto de vista ;)
Bueno entonces.. una buena solución a mi parecer seria esta:

Código PHP :

<?php

/**
* realizamos la consulta SQL a supuestamente MySQL
* RECUERDA escapar los datos que vengan desde otros lugares
* Esto evitara problemas de seguridad.
* No uses mysql_escape_string( String ), esta obsoleta
* usa MySQL_Real_Escape_string( String )
*/ 
$query = mysql_query( "SELECT t.id,t.quantity,t.name FROM mytable AS t WHERE t.parent = ".mysql_real_escape_string( $_GET['parent'] )."" );
/**
*creamos una variable de tipo numerica con un valor equivalente a cero
*/
$tmp_quantity = 0;
/**
*ejecutamos el WHILE
*/
while( $row = mysql_fetch_assoc( $query ) ){

/**
* sumamos las cantidades
*/
$tmp_quantity += (int)$row[ 'quantity' ];

/**
* seguimos con nuestro código
*/
echo 'bla bla bla...';
}


/**
*imprimimos la variable con la suma total
*/
echo $tmp_quantity;

?>


Avísame como te anda ;)
Saludos!

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Ago 2011 03:34 pm
Saludos, Gracias por responder, mira soy un poco bruto.. pero tengo dudas. En el SELECT lo deje así:

Código PHP :

$criterio = getParam($_GET["criterio"], "");
$criterio2 = getParam($_GET["criterio2"], "");

$total = 0;
if ($criterio != "") {
   $query = mysql_query ("SELECT * FROM muebleria WHERE Rut = ".mysql_real_escape_string( $_GET['criterio'] )." and Fecha = ".mysql_real_escape_string( $_GET['criterio2'] )." ORDER BY Fecha ASC";
   $queEmp = mysql_query($query, $conexion);
   $total = mysql_num_rows($queEmp);
    $tmp_quantity = 0;

El AS t, no lo ocupe ya que no se como funciona, y necesito que me muestre todos los campos y que en la parte inferior me muestre el resumen con la suma de las cantidades y productos.

En un comienzo utilice sum(Cant) as total en la consulta pero no me resulto
Lo otro en el codigo de la suma
Tuyo

Código PHP :

$tmp_quantity += (int)$row[ 'quantity' ];

Mio

Código PHP :

<?php echo $tmp_quantity += (int)$rsEmp['Cant']; ?>

A que se refiere (int)?

Por kok3cl

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Ago 2011 04:06 pm
DAME UN SEGUNDO QUE TE PREPARO TODO, AHI TE EXPLICO Y DE PASO TE MUESTRO EL CODIGO PASO A PASO ;)

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Ago 2011 04:31 pm
Bueno te djo el codigo como lo debes utilizar ;)
Pero loco, mira bien lo que dice, seguro te ayudara en otro momento :)

Código PHP :

<?php

function cambiarFormatoFecha($fecha){
    list($anio,$mes,$dia)=explode("-",$fecha);
    return $dia."-".$mes."-".$anio;
}
require("conexion.php");
require("funciones.php");
/**
 * Validamos los criterios
 * Estos deben existir y ser del tipo STRING
 * para ello podrías forzar a que sean( con el (string)$foo ), en caso de que los datos sean NUMERICOS o del tipo ARRAY
 * Pero en este caso usaremos un IF
 * */
$criterio = ( array_key_exists('criterio' , $_GET))?$_GET['criterio']:'';
$criterio2 = ( array_key_exists('criterio2' , $_GET))?$_GET['criterio2']:'';

if( is_string( $criterio ) AND is_string( $criterio2 ) ){
    /**
     * Nuestra consulta SQL bien escrita con ALIAS para la TABLA
     * Esto evitaria posibles conflictos ya que agregamos un prefijo
     * ( imagina si tienes una palabra reservada :| mejor le pones el prefijo de la tabla :D y evitas problemas )
     * Ademas escapamos los caracteres, ya que sabemos que los datos vienen desde afuera, por ender no sabemos que datos son...
     * **/
    $consulta = mysql_query("
    SELECT m.Fecha,m.Codart,m.Cant,m.Proce,m.Tipo,m.Descrip,m.Opera,m.Cargo,m.Rut
    FROM muebleria as m
    WHERE m.Ordtrab LIKE '%".mysql_real_escape_string($criterio)."%'
    AND m.Fecha like '%".mysql_real_escape_string($criterio2)."%'
    ORDER BY m.Fecha ASC
    ");

    $sum = 0;
    echo '<table>';
        echo '<tr>';
            echo '<td>Fecha</td>';
            echo '<td>Codart</td>';
            echo '<td>Cantidad</td>';
            echo '<td>Proce</td>';
            echo '<td>Tipo</td>';
            echo '<td>Descrip</td>';
            echo '<td>Opera</td>';
            echo '<td>Cargo</td>';
            echo '<td>Rut</td>';
        echo '</tr>';
        /**
         * Verificamos que existan resultados
         * Si no existen, bueno mostramos un mensaje
         * Eso hara de tu APP una mejor herramienta ;)
         * */
        if( mysql_num_rows( $consulta ) > 0 ){
                    while( $row = mysql_fetch_assoc( $consulta ) ){
                /**
                 * Con (INT) forzamos a la variable para que sea de tipo NUMERICA
                 * NO de otro tipo
                 *
                 * Para sumar en PHP puedes usar +=
                 * En el caso de una variable de tipo NUMERICA.
                 * Pero usaremos el metodo matematico ( $a + $b )
                 **/
                $sum = ((int)$row['Cant']+$sum);
                echo '<tr>';
                    echo '<td>'.cambiarFormatoFecha($row['Fecha']).'</td>';
                    echo '<td>'.$row['Codart'].'</td>';
                    echo '<td>'.$row['Cant'].'</td>';
                    echo '<td>'.$row['Proce'].'</td>';
                    echo '<td>'.$row['Tipo'].'</td>';
                    echo '<td>'.$row['Descrip'].'</td>';
                    echo '<td>'.$row['Opera'].'</td>';
                    echo '<td>'.$row['Cargo'].'</td>';
                    echo '<td>'.$row['Rut'].'</td>';
                echo '</tr>';
            }
            /**
             * Una vez terinado el proceso podemos ya imprimir la variable $SUM
             * Con la certeza que sabremos la cantidad de unidades
             *
             * También si queremos saber la cantidad de registros podemos in
             **/
            echo '<tr>';
            echo '<td>Total Cant.:</td>';
            echo '<td colspan="8">'.$sum.'</td>';
            echo '</tr>';

        }else{
            /**
             * Este mensaje solo se muestra si no hay resultados ;)
             ***/
            echo '<tr>';
                echo '<td colspan="9"><p>Bueno.. no tenemos resultados... ¿que haremos?</p></td>';
            echo '</tr>';
        }
    echo '</table>';
}else{
    /**
     * Si necesitas enviar un mensaje de error
     * Hazlo aquí :)
     * */
     echo '<p>He! negro, que hace!!</p>';
}
?>


Por favor, me avisas como te anda ;)
Si no loco, no ayudo mas en Cristalab!!

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Ago 2011 05:10 pm
This-is-Purgatory:
Si me permites, voy a sugerir una modificación a tu código:

Esta parte:

Código PHP :

$criterio = ( array_key_exists('criterio' , $_GET))?$_GET['criterio']:''; 
$criterio2 = ( array_key_exists('criterio2' , $_GET))?$_GET['criterio2']:''; 


Debería ser:

Código PHP :

$criterio = @$_GET['criterio']; 
$criterio2 = @$_GET['criterio2']; 


Y esta otra:

Código PHP :

if( is_string( $criterio ) AND is_string( $criterio2 ) ){


Debería ser:

Código PHP :

if(!empty($criterio) and !empty($criterio2)  ){ ...

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 11 Ago 2011 05:21 pm
Al contrario de tu código, el ternario que aplique permite un mejor control sobre posibles errores.
Pues bien sabrás tu que con el arroba SUPRIMES la salida del error, pero en si no tienes un buen control.

Código PHP :

<?php
$criterio = ( array_key_exists('criterio' , $_GET))?$_GET['criterio']:''; 
$criterio2 = ( array_key_exists('criterio2' , $_GET))?$_GET['criterio2']:'';
?> 


En cuanto al EMPTY te encuentro la razón, se me paso, pues si bien empty pregunta que sea string y de paso que no este vació, el mio solo pregunta que sea un string y si esta vació... bueno termina ejecutando el SQL.

¡Saludos!

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Ago 2011 06:12 pm
:o :o :o MAESTROOO..GURU.. GRACIAS POR LA AYUDA..

Aun estoy digeriendo el código, hay cosas que no las había visto, pero con los comentarios se simplifica.
Te molesto con lo ultimo

Código PHP :

$criterio = ( array_key_exists('criterio' , $_GET))?$_GET['criterio']:''; 
$criterio2 = ( array_key_exists('criterio2' , $_GET))?$_GET['criterio2']:''; 
$total = 0;
if( is_string( $criterio ) AND is_string( $criterio2 ) ){ 
    
    $consulta = mysql_query(" 
    SELECT m.Fecha,m.Codart,m.Cant,m.Proce,m.Tipo,m.Descrip,m.Opera,m.Cargo,m.Rut 
    FROM muebleria as m 
    WHERE m.Ordtrab LIKE '%".mysql_real_escape_string($criterio)."%' 
    AND m.Fecha like '%".mysql_real_escape_string($criterio2)."%' 
    ORDER BY m.Fecha ASC 
    "); 
    $total = mysql_num_rows($consulta);
    $sum = 0; ?>

En el código tuve que agregar la variable $total, para poder trabajar el contador de filas, el cual funciona, lo que no me funciona es que al cargar la pagina esta aparezca en cero sin registros, le agregue el valor $total = 0; pero aun me sigue mostrando todos los registros de la tabla al cargar la pagina.
De todos modos muchas gracias por darte el tiempo de ayudarme :cool:

Por kok3cl

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Ago 2011 06:21 pm
si necesitan que te arroje solo VACIÓ cuando abre la pagina... no uses like usa "=" por ejemplo:

select a.id from tabla as a where a.fecha = '20-03-2011'

ahora... si no es lo que necesitas, explica un poco mas ;)

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Ago 2011 06:23 pm
Prueba cambiando esto:

Código PHP :

if( is_string( $criterio ) AND is_string( $criterio2 ) ){ 

por esto:

Código PHP :

if( !empty( $criterio ) AND !empty( $criterio2 ) ){ 


me avisas si todo te anda bien ;)

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Ago 2011 07:37 pm
[quote="This-is-Purgatory"]Al contrario de tu código, el ternario que aplique permite un mejor control sobre posibles errores.
Pues bien sabrás tu que con el arroba SUPRIMES la salida del error, pero en si no tienes un buen control.
[/php]
El error al que te refieres le indicaría al visitante que tal parámetro GET no existe, lo cual es una pista para algún visitante malicioso, por tanto es mejor suprimir ese tipo de mensajes de error.

Desde el punto de vista del programador, lo que importa es si el parámetro tiene un valor válido o no y como el arroba hace que la variable que está a la izquierda de la asignación quede siempre definida independientemente de si la variable que está a la derecha de la asignación exista o no, siempre se tiene algo contra qué contrastar la validación correspondiente (en este caso la variable debe ser no vacía).

De todos modos faltaría algo más para controlar: las comillas escapadas. Pero ya sería enredar el código demasiado para kok3cl ;)

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 11 Ago 2011 07:38 pm

This-is-Purgatory escribió:

Al contrario de tu código, el ternario que aplique permite un mejor control sobre posibles errores.
Pues bien sabrás tu que con el arroba SUPRIMES la salida del error, pero en si no tienes un buen control.

El error al que te refieres le indicaría al visitante que tal parámetro GET no existe, lo cual es una pista para algún visitante malicioso, por tanto es mejor suprimir ese tipo de mensajes de error.

Desde el punto de vista del programador, lo que importa es si el parámetro tiene un valor válido o no y como el arroba hace que la variable que está a la izquierda de la asignación quede siempre definida independientemente de si la variable que está a la derecha de la asignación exista o no, siempre se tiene algo contra qué contrastar la validación correspondiente (en este caso la variable debe ser no vacía).

De todos modos faltaría algo más para controlar: las comillas escapadas. Pero ya sería enredar el código demasiado para kok3cl ;)

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 11 Ago 2011 07:52 pm
Saludos, mira al cargar por primera vez la pagina me muestra todos los registros de la tabla, (son + de 1000)..necesito que al cargarla me muestre las filas en cero


el

Código PHP :

if( !empty( $criterio ) AND !empty( $criterio2 ) ){ 

pasa derechito al

Código PHP :

echo '<p>He! negro, que hace!!</p>';

y al cambiar el like por un =, la consulta ya no se ejecutaba.
En el anterior código lo resolvía con

Código PHP :

$total = 0;
if ($criterio != "") {

Pero aca no me funciona.

Código PHP :

if( is_string( $criterio ) AND is_string( $criterio2 ) ){ 

Disculpa las molestias

Por kok3cl

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Ago 2011 10:08 pm
dame unos minutos que estoy en la oficina viendo un tema de ajax, php mysql :)

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 12 Ago 2011 02:30 pm
negro.. prueba asi:

Código PHP :

<?php

/**
 * Con ERROR_REPORTING controlas los errores que deseas mostrar
 * Si pones 0, esto no mostrara nada
 * Si pones E_ALL mostrara todo
 * Por temas de seguridad, dejalo en 0 cuando lo subas a productivo ;)
 * */
error_reporting( 0 );
ini_set( 'error_reporting' , 0 );


function cambiarFormatoFecha($fecha){
    list($anio,$mes,$dia)=explode("-",$fecha);
    return $dia."-".$mes."-".$anio;
}
require("conexion.php");
require("funciones.php");
/**
 * Validamos los criterios
 * Estos deben existir y ser del tipo STRING
 * para ello podrías forzar a que sean( con el (string)$foo ), en caso de que los datos sean NUMERICOS o del tipo ARRAY
 * Pero en este caso usaremos un IF
 * */
$criterio = ( array_key_exists('criterio' , $_GET))?$_GET['criterio']:'';
$criterio2 = ( array_key_exists('criterio2' , $_GET))?$_GET['criterio2']:'';
if( array_key_exists( 'criterio',$_GET ) AND array_key_exists( 'criterio2' , $_GET ) ){
    $criterio = $_GET['criterio'];
    $criterio2 = $_GET['criterio2']
    if( is_string($criterio) AND is_string($criterio2) ){
        /**
         * Nuestra consulta SQL bien escrita con ALIAS para la TABLA
         * Esto evitaria posibles conflictos ya que agregamos un prefijo
         * ( imagina si tienes una palabra reservada :| mejor le pones el prefijo de la tabla :D y evitas problemas )
         * Ademas escapamos los caracteres, ya que sabemos que los datos vienen desde afuera, por ender no sabemos que datos son...
         * **/
        $consulta = mysql_query("
        SELECT m.Fecha,m.Codart,m.Cant,m.Proce,m.Tipo,m.Descrip,m.Opera,m.Cargo,m.Rut
        FROM muebleria as m
        WHERE m.Ordtrab LIKE '%".mysql_real_escape_string($criterio)."%' AND != '".mysql_real_escape_string($criterio)."'
        AND m.Fecha like '%".mysql_real_escape_string($criterio2)."%' AND != '".mysql_real_escape_string($criterio2)."'
        ORDER BY m.Fecha ASC
        ");

        $sum = 0;
        echo '<table>';
            echo '<tr>';
                echo '<td>Fecha</td>';
                echo '<td>Codart</td>';
                echo '<td>Cantidad</td>';
                echo '<td>Proce</td>';
                echo '<td>Tipo</td>';
                echo '<td>Descrip</td>';
                echo '<td>Opera</td>';
                echo '<td>Cargo</td>';
                echo '<td>Rut</td>';
            echo '</tr>';
            /**
             * Verificamos que existan resultados
             * Si no existen, bueno mostramos un mensaje
             * Eso hara de tu APP una mejor herramienta ;)
             * */
            if( mysql_num_rows( $consulta ) > 0 ){
                while( $row = mysql_fetch_assoc( $consulta ) ){
                    /**
                     * Con (INT) forzamos a la variable para que sea de tipo NUMERICA
                     * NO de otro tipo
                     *
                     * Para sumar en PHP puedes usar +=
                     * En el caso de una variable de tipo NUMERICA.
                     * Pero usaremos el metodo matematico ( $a + $b )
                     **/
                    $sum = ((int)$row['Cant']+$sum);
                    echo '<tr>';
                        echo '<td>'.cambiarFormatoFecha($row['Fecha']).'</td>';
                        echo '<td>'.$row['Codart'].'</td>';
                        echo '<td>'.$row['Cant'].'</td>';
                        echo '<td>'.$row['Proce'].'</td>';
                        echo '<td>'.$row['Tipo'].'</td>';
                        echo '<td>'.$row['Descrip'].'</td>';
                        echo '<td>'.$row['Opera'].'</td>';
                        echo '<td>'.$row['Cargo'].'</td>';
                        echo '<td>'.$row['Rut'].'</td>';
                    echo '</tr>';
                }
                /**
                 * Una vez terinado el proceso podemos ya imprimir la variable $SUM
                 * Con la certeza que sabremos la cantidad de unidades
                 *
                 * También si queremos saber la cantidad de registros podemos in
                 **/
                echo '<tr>';
                echo '<td>Total Cant.:</td>';
                echo '<td colspan="8">'.$sum.'</td>';
                echo '</tr>';

            }else{
                /**
                 * Este mensaje solo se muestra si no hay resultados ;)
                 ***/
                echo '<tr>';
                    echo '<td colspan="9"><p>Bueno.. no tenemos resultados... ¿que haremos?</p></td>';
                echo '</tr>';
            }
        echo '</table>';
    }
}else{
    /**
     * Si necesitas enviar un mensaje de error
     * Hazlo aquí :)
     * */
     echo '<p>He! negro, que hace!!</p>';
}
?>


me avisas ;)

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 12 Ago 2011 07:48 pm
Saludos This-is-Purgatory, mira probe el codigo y arroja error de
Parse error: syntax error, unexpected T_IF
esto corresponde a la linea

Código PHP :

if( is_string($criterio) AND is_string($criterio2) ){ 


Pero utilizando solo

Código PHP :

$total = 0;
if ($criterio != "") {
en remplazo de

Código PHP :

if( is_string( $criterio  ) AND is_string( $criterio2 ) ){ 
me funciona sin problemas :?

Te reitero mis agradecimientos, lo que me tiene loco es realizar un resumen de algunas columnas, te explico. La pantalla me muestra lo siguiente:



y necesito que me muestre abajo el resumen de cuantos tipos de Descripción hay, y la cantidad total de cada uno.

Seria lo ultimo que te pido que me ayudes, ya que no llevo mucho programando en php, y realmente este tipo de operaciones se me ah complicado mucho. Saludos

Por kok3cl

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Ago 2011 08:08 pm
Sobre el error que comentas. Falta un punto y coma en la sentencia anterior al if en cuestión.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 12 Ago 2011 08:24 pm
:shock: Gracias, se me había pasado

Código PHP :

$criterio = $_GET['criterio']; 
 $criterio2 = $_GET['criterio2']
    if( is_string($criterio) AND is_string($criterio2) ){ 

Por kok3cl

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Ago 2011 09:16 pm
a mi la verdad que también, cuéntanos como te fue.. y lo siento ayer tuve que ver un sistema en la oficina... por ello pude responder de forma apurada y recién hoy...

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 16 Ago 2011 01:14 pm
Saludos This-is-Purgatory, corregi el error del ;, pero continua el error, asi que trabaje el criterio de esta forma, y le di el valor 0 a la variable $total, para que al cargar no me muestre nada

Código PHP :

$total = 0;

if ($criterio != "") {


Código Completo

Código PHP :

<?php
function cambiarFormatoFecha($fecha){ 
list($anio,$mes,$dia)=explode("-",$fecha); 
return $dia."-".$mes."-".$anio; 
} 
require("conexion.php");
require("funciones.php");

$criterio = ( array_key_exists('criterio' , $_GET))?$_GET['criterio']:''; 
$criterio2 = ( array_key_exists('criterio2' , $_GET))?$_GET['criterio2']:''; 

$total = 0;
if ($criterio != "") {
   $query = "SELECT * FROM muebleria WHERE Rut like ".sqlValue($criterio."%", "text")." and Fecha like ".sqlValue($criterio2."%", "text")."  ORDER BY Fecha ASC";
   $queEmp = mysql_query($query, $conexion);
   $total = mysql_num_rows($queEmp);
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>PHP con MySQL: Consultar datos en MySQL</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.Estilo1 {color: #999999}
.Estilo2 {
   color: #000000;
   font-weight: bold;
}
.Estilo3 {color: #541C2A}
.Estilo4 {color: #5A1F30}
-->
</style>
</head>
<body>
<h3>&nbsp;&nbsp;&nbsp;<span class="Estilo2">Buscador de Operaciones por Trabajador</span></h3>

<table bordercolor="#FFFFFF">
  <tr>
    <td width="156"><span class="Estilo3">&nbsp;Ingrese Rut del Trabajador</span>&nbsp; </td>
    <td width="156"><span class="Estilo4"> &nbsp;Ingrese Periodo A/M/D </span></td>
    <td width="62">&nbsp;</td>
    <td width="277">&nbsp;</td>
    <td width="16">&nbsp;</td>
    <td width="46">&nbsp;</td>
    <td width="74">&nbsp;</td>
    <td width="201" rowspan="2"><div align="right"><img src="logo-faymochico.png" width="179" height="68" /></div></td>
  </tr>
 <form id="frbuscar" name="frbuscar" method="get" action="">
    <td><input name="criterio" type="text" id="criterio" size="20" value="<?php echo $criterio; ?>" /></td>
    <td><input name="criterio2" type="text" id="criterio2" size="20" value="<?php echo $criterio2; ?>" /></td>
    <td><input name="submit" type="submit" id="submit" value="Buscar" /></td>
  </form>
   <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>

</table> 


<p><?php if ($total > 0) { ?></p>

<a href="#" class="Estilo1"><<< Volver Atras </a> 
<div style="float: right; color: #999999;"><em>Total de Trabajos Ejecutados a la Fecha: <b><?php echo $total; ?></b></em></div>
<p></p>
<table width="1000" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th>Fecha</th>
   <th>Ordtrab</th>
   <th>Articulo</th>
    <th>Cant</th>
   <th>Proceso</th>
   <th>Tipo</th>
   <th>Descripcion</th>
    <th>Operario </th>
   <th>Cargo</th>
  </tr>
  
  <?php while ($rsEmp = mysql_fetch_assoc($queEmp)) { 
   $sum = ((int)$rsEmp['Cant']+$sum); ?>
  
  <tr>
     <td><?php echo cambiarFormatoFecha($rsEmp ['Fecha']); ?></td>
    <td><?php echo $rsEmp['Ordtrab']; ?></td>
   <td><?php echo $rsEmp['Codart']; ?></td>
   <td><?php echo $rsEmp['Cant']; ?></td>
   <td><?php echo $rsEmp['Proce']; ?></td>
   <td><?php echo $rsEmp['Tipo']; ?></td>
   <td><?php echo $rsEmp['Descrip']; ?></td>
    <td><?php echo $rsEmp['Opera']; ?></td>
   <td><?php echo $rsEmp['Cargo']; ?></td>
  </tr>
  <?php } ?>
</table>
 <p></p>
 <?php } ?>
 <?php { 
          echo '<tr>'; 
            echo '<td>Total Cant.:</td>'; 
            echo '<td colspan="8">'.$sum.'</td>'; 
            echo '</tr>'; 
            
        } 
      
      ?> 
<p></p>

<div style="float: right; color: #999999;"><em></em></div>
<p>&nbsp;</p>
</body>
</html>

Los ALIAS no los voy a ocupar por el momento ya que solo voy a trabajar con una tabla del la BD.
Te reitero mis agradecimientos, lo que me tiene loco es realizar un resumen de algunas columnas, te explico.
La pantalla me muestra lo siguiente:


y necesito que me muestre abajo el resumen de cuantos tipos de Descripción hay, y la cantidad total de cada uno.


Me imagino que se realiza con algún array que recorra la columna de los resultados, pero no se como hacerlo, seria lo ultimo que te pido que me ayudes, ya que no llevo mucho programando en php, y realmente este tipo de operaciones se me ah complicado demasiado. Saludos

Por kok3cl

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Ago 2011 04:45 pm

kok3cl escribió:

Saludos This-is-Purgatory, corregi el error del ;, pero continua el error, asi que trabaje el criterio de esta forma, y le di el valor 0 a la variable $total, para que al cargar no me muestre nada

Código PHP :

$total = 0;

if ($criterio != "") {


Código Completo

Código PHP :

<?php
function cambiarFormatoFecha($fecha){ 
list($anio,$mes,$dia)=explode("-",$fecha); 
return $dia."-".$mes."-".$anio; 
} 
require("conexion.php");
require("funciones.php");

$criterio = ( array_key_exists('criterio' , $_GET))?$_GET['criterio']:''; 
$criterio2 = ( array_key_exists('criterio2' , $_GET))?$_GET['criterio2']:''; 

$total = 0;
if ($criterio != "") {
   $query = "SELECT * FROM muebleria WHERE Rut like ".sqlValue($criterio."%", "text")." and Fecha like ".sqlValue($criterio2."%", "text")."  ORDER BY Fecha ASC";
   $queEmp = mysql_query($query, $conexion);
   $total = mysql_num_rows($queEmp);
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>PHP con MySQL: Consultar datos en MySQL</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.Estilo1 {color: #999999}
.Estilo2 {
   color: #000000;
   font-weight: bold;
}
.Estilo3 {color: #541C2A}
.Estilo4 {color: #5A1F30}
-->
</style>
</head>
<body>
<h3>&nbsp;&nbsp;&nbsp;<span class="Estilo2">Buscador de Operaciones por Trabajador</span></h3>

<table bordercolor="#FFFFFF">
  <tr>
    <td width="156"><span class="Estilo3">&nbsp;Ingrese Rut del Trabajador</span>&nbsp; </td>
    <td width="156"><span class="Estilo4"> &nbsp;Ingrese Periodo A/M/D </span></td>
    <td width="62">&nbsp;</td>
    <td width="277">&nbsp;</td>
    <td width="16">&nbsp;</td>
    <td width="46">&nbsp;</td>
    <td width="74">&nbsp;</td>
    <td width="201" rowspan="2"><div align="right"><img src="logo-faymochico.png" width="179" height="68" /></div></td>
  </tr>
 <form id="frbuscar" name="frbuscar" method="get" action="">
    <td><input name="criterio" type="text" id="criterio" size="20" value="<?php echo $criterio; ?>" /></td>
    <td><input name="criterio2" type="text" id="criterio2" size="20" value="<?php echo $criterio2; ?>" /></td>
    <td><input name="submit" type="submit" id="submit" value="Buscar" /></td>
  </form>
   <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>

</table> 


<p><?php if ($total > 0) { ?></p>

<a href="#" class="Estilo1"><<< Volver Atras </a> 
<div style="float: right; color: #999999;"><em>Total de Trabajos Ejecutados a la Fecha: <b><?php echo $total; ?></b></em></div>
<p></p>
<table width="1000" border="0" cellspacing="0" cellpadding="0">
  <tr>
        <th>Fecha</th>
   <th>Ordtrab</th>
   <th>Articulo</th>
        <th>Cant</th>
   <th>Proceso</th>
   <th>Tipo</th>
   <th>Descripcion</th>
        <th>Operario </th>
   <th>Cargo</th>
  </tr>
<?php 
while ($rsEmp = mysql_fetch_assoc($queEmp)) { 
   $sum = ((int)$rsEmp['Cant']+$sum);
               
            
                echo '<tr>'; 
                    echo '<td>'.cambiarFormatoFecha($rsEmp['Fecha']).'</td>'; 
                    echo '<td>'.$rsEmp['Ordtrab'].'</td>';
          echo '<td>'.$rsEmp['Codart'].'</td>'; 
                    echo '<td>'.$rsEmp['Cant'].'</td>'; 
                    echo '<td>'.$rsEmp['Proce'].'</td>'; 
                    echo '<td>'.$rsEmp['Tipo'].'</td>'; 
                    echo '<td>'.$rsEmp['Descrip'].'</td>'; 
                    echo '<td>'.$rsEmp['Opera'].'</td>'; 
                    echo '<td>'.$rsEmp['Cargo'].'</td>'; 
                    
                echo '</tr>'; 
            } 
            
             echo '<tr>'; 
            echo '<td>Total Cant.:</td>'; 
            echo '<td colspan="8">'.$sum.'</td>'; 
            echo '</tr>'; 
 
        }else{ 
            
            echo '<tr>'; 
                echo '<td colspan="9"><p>Rut de Trabajador No Encontrado, vuelva a Ingresar</p></td>'; 
            echo '</tr>'; 
        } 
   
?>
 
</body>
</html>


Los ALIAS no los voy a ocupar por el momento ya que solo voy a trabajar con una tabla del la BD.
Te reitero mis agradecimientos, lo que me tiene loco es realizar un resumen de algunas columnas, te explico.
La pantalla me muestra lo siguiente:


y necesito que me muestre abajo el resumen de cuantos tipos de Descripción hay, y la cantidad total de cada uno.


Me imagino que se realiza con algún array que recorra la columna de los resultados, pero no se como hacerlo, seria lo ultimo que te pido que me ayudes, ya que no llevo mucho programando en php, y realmente este tipo de operaciones se me ah complicado demasiado. Saludos

Por kok3cl

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Ago 2011 09:50 pm
lo haremos con PHP arreglo, de esta manera no harás otra consulta innecesaria.
Bueno entonces así( imaginando que es tu código )

Código PHP :

<?php

$processes = array();
while( $row = mysql_fetch_assoc( $query ) ){
    
    /**
     * My code here11111!!!
     * */
     $processes[$row['description']][] = $row['quantity'];
}

foreach( $processes as $ps => $sps ){
    $_quantity = 0;
    foreach( $sps as $quantity ){
        $_quantity = $_quantity + $quantity;
    }
    
    echo '<tr>';
        /**
         * returns the process name
         * */
        echo '<td>'.$ps.'</td>';
        /**
         * returns the total units
         * */
        echo '<td>'. number_format( $_quantity ,0,',','.') .'</td>';
        /**
         * returns the number of processes
         * */
        echo '<td>'. number_format( count($sps) ,0,',','.') .'</td>';
    echo '<tr>';
    
}
/**
 * end!
 * */

?>

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 19 Ago 2011 01:38 pm
:cool: Extraordinario This-is-Purgatory Maestro :o Muchas, muchas gracias quedo perfecto te pasaste negro, tus conocimientos me dejaron perplejo.


asi quedo:

Código PHP :

<?php 
$Proce = array(); 
while ($rsEmp = mysql_fetch_assoc($queEmp)) { 
$sum = ((int)$rsEmp['Cant']+$sum);
            
                    echo '<tr>'; 
                    echo '<td>'.cambiarFormatoFecha($rsEmp['Fecha']).'</td>'; 
                    echo '<td>'.$rsEmp['Ordtrab'].'</td>';
          echo '<td>'.$rsEmp['Codart'].'</td>'; 
                    echo '<td>'.$rsEmp['Cant'].'</td>'; 
                    echo '<td>'.$rsEmp['Proce'].'</td>'; 
                    echo '<td>'.$rsEmp['Tipo'].'</td>';       
                    echo '<td>'.$rsEmp['Descrip'].'</td>'; 
                    echo '<td>'.$rsEmp['Opera'].'</td>'; 
                    echo '<td>'.$rsEmp['Cargo'].'</td>'; 
                    echo '</tr>'; 
               
                   
         $Proce[$rsEmp['Descrip']][] = $rsEmp['Cant']; 
         
          }
          
         foreach( $Proce as $ps => $sps ){ 
          $_Cant = 0; 
          foreach( $sps as $Cant ){ 
              $_Cant = $_Cant + $Cant; 
    } 
      echo '<tr>'; 
        /** 
         * returns the process name 
         * */ 
        echo '<td>'.$ps.'</td>'; 
        /** 
         * returns the total units 
         * */ 
        echo '<td>'. number_format( $_Cant ,0,',','.') .'</td>'; 
        /** 
         * returns the number of processes 
         * */ 
        echo '<td>'. number_format( count($sps) ,0,',','.') .'</td>'; 
    echo '<tr>'; 
     
} 
/** 
 * end! 
 * */ 
 
?>

Gracias totales

Por kok3cl

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Ago 2011 01:49 pm
dale, recuerda que si necesitas algo, un PM no me viene mal.
Saludos!

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.