Foros del Web » Programando para Internet » PHP »

Contar cantidad de <tr>, pero en PHP !!!

Estas en el tema de Contar cantidad de <tr>, pero en PHP !!! en el foro de PHP en Foros del Web. Hola gente ... lo que estoy tratando de hacer es contar la cantidad de <tr> que me genera el formulario para poder crear una paginacion. ...
  #1 (permalink)  
Antiguo 05/05/2009, 08:35
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Pregunta Contar cantidad de <tr>, pero en PHP !!!

Hola gente ... lo que estoy tratando de hacer es contar la cantidad de <tr> que me genera el formulario para poder crear una paginacion.
Los detalles si los puedo contar con un $cont++; pero el tema esta en la cantidad de titulos que se repiten para esos detalles ...


0001 - RICARDO RUGGERI
PED - 0016 - 04/05/2009
COD DETALLE CANT CANT_ENT CANT_REST FECHA
1-
2-
3-
4-
5-
etc -----
Las primeras 3 lineas no se cuentan con el contador, entonces a la hora de ver de mostrar registros, lo que me cuentan son la cant de filas de los detalles ...

Entonces yo comparo las cantidades con la de la paginacion ...
Código PHP:
if ($cont==$cant_filas_pagina){ //cantidad_filas_pagina la cambio dependiendo de la cantidad que quiero que se vea por pagina, pero no logro contar esos <tr> donde estan los titulos !!!

echo "<div style='page-break-after: always;'><p align='center'><b>-$pagina-</b></p></div>"
Se puede hacer esto desde PHP ???


PD. desde javascript puedo contar la pagina de <tr>, pero necesito hacerlo desde PHP ....

O se podra insertar un SALTO DE PAGINA desde javascript ??????????????????????

Gracias, Ricardo !!!
__________________
Mail: [email protected]

Última edición por colote; 05/05/2009 a las 11:19
  #2 (permalink)  
Antiguo 05/05/2009, 08:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Puedes usar substr_count.

Saludos.
  #3 (permalink)  
Antiguo 05/05/2009, 10:40
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Hola GatorV, buenisima esa funcion, ya estuve viendo su funcionamiento, pero lo que no se es como aplicarla a lo que esta encerrado entre las etiquetas <html> y </html>

para probarla la tengo asi
Código PHP:
$quebusco='<tr>';
$donde '<tr><tr>';
echo 
substr_count($donde$quebusco); 
Saludos, Ricardo !!!
__________________
Mail: [email protected]
  #4 (permalink)  
Antiguo 05/05/2009, 10:45
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Hola colote, cómo vas??

Estás leyendo el archivo que contiene lo que necesitas? Asumo que quieres "leer" una página con php.

http://www.php.net/file_get_contents

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 05/05/2009, 10:53
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Hola Carxl, ahi andamos, renegando un poco jejejej !!!
Si, tengo que asignar todo lo que se encuentra en la pagina php, pero despues de consultarla.
Sino me cuenta solo los <tr> del archivo mio ... o Yo lo estoy haciendo mal jejeje !!!
Hice esto !!!
Código PHP:
$str=file_get_contents('listado_pendientes_xclientes.php');
echo 
substr_count($str"<tr>"); 
De que otra manera puedo hacerlo ? para que tome los <tr> despues de consultados los datos ?

Saludos, Ricardo !!!

Ahora hice esto, para hacerlo para cualquier pagina

Código PHP:
$pag=split'[/]'$_SERVER['PHP_SELF']);
$str=file_get_contents($pag[2]);
echo 
substr_count($str"<tr>"); 
Pero me da el mismo resultado que la otra forma !!!

No se como hacerlo para que tome los resultados de la pagina despues que hace la busqueda !!!

Saludos, Ricardo !!!
__________________
Mail: [email protected]

Última edición por GatorV; 05/05/2009 a las 11:25
  #6 (permalink)  
Antiguo 05/05/2009, 11:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Para procesar ese archivo e incluir el resultado vas a tener que hacer algo asi:
Código php:
Ver original
  1. include('elarchivo.php');
  2. $contenido = ob_get_contents();

Saludos.
  #7 (permalink)  
Antiguo 05/05/2009, 11:31
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Buena GatorV !!!!!!!

Logre lo que queria, pero poniendo la funcion en otra pagina de esta manera, ahora voy a ver la forma de hacerlo para cualquier pagina !!!
Código PHP:
<?php
ob_start
();
include(
'listado_pendientes_xclientes.php');
$contenido ob_get_contents();
echo 
substr_count($contenido"<tr>");
?>
__________________
Mail: [email protected]
  #8 (permalink)  
Antiguo 05/05/2009, 11:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Si admite variables, pero solamente variables del tipo Array, no variables de otro tipo, por eso es que debes de comprobar que tus variables sean arreglos antes de pasarlos por la funcion.

Saludos.
  #9 (permalink)  
Antiguo 05/05/2009, 12:01
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Hola GatorV:
Mira si lo hago asi :
archivo calcular_filas.php
Código PHP:
<?php
ob_start
();
include(
'listado_pendientes_xclientes.php');
$contenido ob_get_contents();
echo 
substr_count($contenido"<tr>");
?>
y cargo la pagina calcular_filas.php funca bien ...

Pero como hago para llamar al archivo listado_pendientes_xclientes.php ... si lo cargo desde ahi y pongo un include('calcular_filas.php'); me tira un error de que no puede redeclarar funciones ...

Saludos !!!

Bueno era facil la cosa !!!!!

Habia que leer para que servia la funcion ob_start();
Esta función habilitará el uso de búferes de salida. Mientras los búferes de salida están activos no se envía salida desde el script (más que las cabeceras), en su lugar la salida es almacenada en un búfer interno.

La puse al principio de la pagina
y al final, muestro la cantidad de <tr> !!!!!

Código PHP:
<?php
ob_start
();
?>
<html>
<tr>1</tr>
<tr>2</tr>
<tr>3</tr>
</html>
<?php
$contenido 
ob_get_contents();
echo 
substr_count($contenido"<tr>");
?>
Ahora si funciona correctamente !!!!!!!!

Gracias !!!!!!!

Ahora afinando detalles !!!!!

Antes tenia una contador, y un if($cont==10) por ejemplo ... y insertaba el salto de pagina.
Ahora tengo esa variable que guarda datos desde 1 hasta 150 por ejemplo ...

Si hago un if solo pasa una vez.

Como puedo hacer para que cada tantos Nro, imprima el valor..

Por ej:

(Cada 10 ) crea salto pagina !!!!!

Saludos, Ricardo !!!
__________________
Mail: [email protected]

Última edición por GatorV; 05/05/2009 a las 14:21
  #10 (permalink)  
Antiguo 05/05/2009, 14:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Con un for() o foreach() o cualquier estructura de ciclo vas contando y cuando $i = 10 haces un salto, por ejemplo:
Código php:
Ver original
  1. $i = 0;
  2. while(// ciclo //) {
  3.       if( ($i &#37; 10) == 0) {
  4.          echo "Salto!";
  5.       }
  6.       $i++;
  7. }

Saludos.
  #11 (permalink)  
Antiguo 06/05/2009, 04:31
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Hola GatorV
Que es lo que hace esta linea gator, porque la verdad que no la entiendo ... aparte se me ve como un comentario ...
Código PHP:
if( ($i &#37; 10) == 0) { 
Saludos, Ricardo !!!
__________________
Mail: [email protected]
  #12 (permalink)  
Antiguo 06/05/2009, 10:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Es:
if (($i % 10) == 0) {

El % es el operador de Modulo sirve para sacar el restante de una division.

Saludos.
  #13 (permalink)  
Antiguo 06/05/2009, 11:35
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Ahh bien !!! Ahi lo probe ... pero si le pongo poe ejemplo asi : if (($i % 10) == 0) {, no hace el salto cada 10 registros :S, el 1º a los 20, el 2º a los 30,el 3º 60, el 4º y asi ....

Ese $i lo tomo de la cantidad de <tr> que tengo en la pagina asi como me dijiste ...

Como tendria que dividir para que salte cada 10 registros siempre ?


Ahora lo tengo asi:
Código PHP:
$contenido ob_get_contents();
$cant_tr=substr_count($contenido"<tr>");



    if ((
$cant_tr%10) == 0) { 

echo 
"<div style='page-break-after: always;'><p align='center'><b>-$pagina-</b></p></div>";
echo 
$cant_tr
PD. Me parece que me voy a dedicar a otra cosa jejejeje !!!

Saludos, Ricardo !!!
__________________
Mail: [email protected]
  #14 (permalink)  
Antiguo 06/05/2009, 14:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Donde inicializas $cant_tr? Acuerdate de incrementar, por eso mi ejemplo de usar un contador.

Saludos.
  #15 (permalink)  
Antiguo 09/05/2009, 04:43
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Bien eso del contador lo entendi bien ... Te cuento como es la consulta que hago para ese listado ...
Es que donde pongo el contador, solo me cuenta una parte de las filas ... hay whiles dentro de whiles y donde esta el cont_tr es en el ultimo ... lo que no cuento son las filas donde aparecen los datos del Ped y Cliente las otras estan numeradas para q se vea que las cuenta bien !!! Aca te dejo el codigo completo de la tabla que hace esa lista ...
Y una direccion para que veas este ejemplo ...
ACA
Usuario foros
clave 1234

Gracias GatorV!!!!
Código PHP:
<table id="tablaped">
<?php
$cont_tr
=1;


$clientes=mysql_query("SELECT * FROM clientes WHERE cod_cli between $desde and $hasta AND cod_cli IN (SELECT cod_cli FROM pedidos)",$conexion);

//$clientes=mysql_query("select * from clientes where cod_cli between $desde and $hasta");
while($cli=mysql_fetch_array($clientes)){

?>
    <tr><td class='l1' colspan='6'><?php echo "(".$cli['cod_cli'].")"?> - <?echo $cli['razon_soc']?></b></td></tr>

<?php

$pedidos
=mysql_query("select * from pedidos  where cod_cli=$cli[cod_cli] order by codigo DESC" ,$conexion);
while(
$ped=mysql_fetch_array($pedidos)){


$suma=mysql_query("SELECT SUM(cantp) as total, SUM(cant_ent) as ent, SUM(cant_rest) as rest FROM sub_pedidos where cod_pedido=$ped[codigo]" ,$conexion);
$datos=mysql_fetch_array($suma);

$fec_ped explode("-"$ped['fecha_ped']);
$fec_ent explode("-"$ped['fecha_ent']);


?>
    <tr><td class='l1' colspan='6'><?php echo $ped['tipo'?> - <?php echo $ped['codigo'?> - <?echo "$fec_ped[2]/$fec_ped[1]/$fec_ped[0]"?></td></tr>


<?php

$sub_ped
=mysql_query("select * from sub_pedidos where cod_pedido=$ped[codigo] order by fecha_ent");
while(
$sped=mysql_fetch_array($sub_ped)){

$piezas=mysql_query("select * from items where cod_item=$sped[cod_item]");
while(
$pie=mysql_fetch_array($piezas)){


$fec_ent_ped explode("-"$sped['fecha_ent']);

?>

<tr>
<td class="l3"><font color="red"><?echo $cont_tr?></font></td>
<td class="l2"><?echo $pie['cod_item']?> - <?echo $pie['nombre_item']?></td>
<td class="l3"><?echo $sped['cantp']?></td>
<td class="l3"><?echo $sped['cant_ent']?></td>
<td class="l3"><?echo $sped['cant_rest']?></td>
<td class="l4"><?echo "$fec_ent_ped[2]/$fec_ent_ped[1]/$fec_ent_ped[0]";?></td>
</tr>

<?php
$cont_tr
++;
}
}


?>
<tr>
<td class="l3"></td>
<td class="l3"><b>TOTAL</b></td>
<td class="l3"><?echo $datos['total']?></td>
<td class="l3"><?echo $datos['ent']?></td>
<td class="l3"><?echo $datos['rest']?></td>
<td class="l4"></td>
</tr>
<tr>
<td class="l3"></td>
</tr>


<?php
// cierre while clientes
//cierre while pedidos



?>
</table>
__________________
Mail: [email protected]

Última edición por colote; 12/05/2009 a las 08:32
  #16 (permalink)  
Antiguo 11/05/2009, 10:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

No me sirve tu link que dejaste, por otro lado tienes que hacer el conteo pero despues a la hora de usar ob_get_contents().

Necesitas un contador e ir incrementando y cuando $i = 10 hacer la comprobacion para poner el break o lo que necesitas.

El codigo que expones no veo donde uses ob_get_contents() ni substr_count($contenido, "<tr>");

Saludos.
  #17 (permalink)  
Antiguo 12/05/2009, 11:18
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Hola GatorV, ahi agregue el contador, el ob_get_contents() y substr_count($contenido, "<tr>");.

Pero fijate en el ejemplo que donde pongo el esta puesto en la linea de los detalles, lo que quiero hacer es que me cuente tambien la linea de los titulos ....aca dejo el codigo actual
Solo la tabla que esta dentro del form, para no alargarlo.
Código PHP:
<?php
ob_start
();
?>

<table id="tablaped">
<?php
$contador
=1;
$pagina=1;


$clientes=mysql_query("SELECT * FROM clientes WHERE cod_cli between $desde and $hasta AND cod_cli IN (SELECT cod_cli FROM pedidos)",$conexion);

//$clientes=mysql_query("select * from clientes where cod_cli between $desde and $hasta");
while($cli=mysql_fetch_array($clientes)){

?>
    <tr><td class='l1' colspan='6'><?php echo "(".$cli['cod_cli'].")"?> - <?echo $cli['razon_soc']?></b></td></tr>

<?php

$pedidos
=mysql_query("select * from pedidos  where cod_cli=$cli[cod_cli] order by codigo DESC" ,$conexion);
while(
$ped=mysql_fetch_array($pedidos)){


$suma=mysql_query("SELECT SUM(cantp) as total, SUM(cant_ent) as ent, SUM(cant_rest) as rest FROM sub_pedidos where cod_pedido=$ped[codigo]" ,$conexion);
$datos=mysql_fetch_array($suma);

$fec_ped explode("-"$ped['fecha_ped']);
$fec_ent explode("-"$ped['fecha_ent']);


?>
    <tr><td class='l1' colspan='6'><?php echo $ped['tipo'?> - <?php echo $ped['codigo'?> - <?echo "$fec_ped[2]/$fec_ped[1]/$fec_ped[0]"?></td></tr>


<?php

$sub_ped
=mysql_query("select * from sub_pedidos where cod_pedido=$ped[codigo] order by fecha_ent");
while(
$sped=mysql_fetch_array($sub_ped)){

$piezas=mysql_query("select * from items where cod_item=$sped[cod_item]");
while(
$pie=mysql_fetch_array($piezas)){


$fec_ent_ped explode("-"$sped['fecha_ent']);

?>

<tr>
<td class="l3"><font color="red"><?echo "conta: ".$contador?></font></td>
<td class="l2"><?echo $pie['cod_item']?> - <?echo $pie['nombre_item']?></td>
<td class="l3"><?echo $sped['cantp']?></td>
<td class="l3"><?echo $sped['cant_ent']?></td>
<td class="l3"><?echo $sped['cant_rest']?></td>
<td class="l4"><?echo "$fec_ent_ped[2]/$fec_ent_ped[1]/$fec_ent_ped[0]";?></td>
</tr>

<?php
$contador
++;
$contenido ob_get_contents();
$cant_tr=substr_count($contenido"<tr>");

//echo $cant_tr;

 
if ($cont_tr==10) {
 echo 
"<div style='page-break-after: always;'><p align='center'><b>-$pagina-</b></p></div>";
$contador=1;
$pagina++;
}
}
}

?>
<tr>
<td class="l3"></td>
<td class="l3"><b>TOTAL</b></td>
<td class="l3"><?echo $datos['total']?></td>
<td class="l3"><?echo $datos['ent']?></td>
<td class="l3"><?echo $datos['rest']?></td>
<td class="l4"></td>
</tr>



<?php

// cierre while clientes
//cierre while pedidos
echo "CANT TR POR ob_get_contents: ".$cant_tr;
?>
</table>
Puedes ver el ejemplo ACA, ya actualice el IP

Recuera el login: foros - pass 1234 y te manda al inicio.php despues pegale esto, en la direccion asi entras directo ... http://200.117.180.189/gestion/listado_pendientes_xclientes.php"
__________________
Mail: [email protected]
  #18 (permalink)  
Antiguo 12/05/2009, 11:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Sigues teniendo el mismo error, cuentas usando $contador, y $pagina, pero tu if lo haces sobre $cont_tr.

Te voy a repetir lo que necesitas hacer:
- Necesitas hacer un ciclo, desde 0 hasta total de trs.
- Dentro del ciclo, si el contador es multiplo de 10 (operador modulo (%)) haces la impresion o el break o el salto de pagina.

Saludos.
  #19 (permalink)  
Antiguo 12/05/2009, 12:19
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Ahora es como que quiere andar pero no del todo bien !!!
Sorry por el lio que te estoy haciendo Gator!!!!!!
Aca te dejo el codigo y en el link anterior podes ver lo que hace

Saludos
Código PHP:
<?php
ob_start
();
?>


<?php

$pagina
=1;


$clientes=mysql_query("SELECT * FROM clientes WHERE cod_cli between $desde and $hasta AND cod_cli IN (SELECT cod_cli FROM pedidos)",$conexion);

//$clientes=mysql_query("select * from clientes where cod_cli between $desde and $hasta");
while($cli=mysql_fetch_array($clientes)){

?>
    <table id="tablaped">
    <tr><td class='l1' colspan='6'><?php echo "(".$cli['cod_cli'].")"?> - <?echo $cli['razon_soc']?></b></td></tr>

<?php

$pedidos
=mysql_query("select * from pedidos  where cod_cli=$cli[cod_cli] order by codigo DESC" ,$conexion);
while(
$ped=mysql_fetch_array($pedidos)){


$suma=mysql_query("SELECT SUM(cantp) as total, SUM(cant_ent) as ent, SUM(cant_rest) as rest FROM sub_pedidos where cod_pedido=$ped[codigo]" ,$conexion);
$datos=mysql_fetch_array($suma);

$fec_ped explode("-"$ped['fecha_ped']);
$fec_ent explode("-"$ped['fecha_ent']);


?>
    <tr><td class='l1' colspan='6'><?php echo $ped['tipo'?> - <?php echo $ped['codigo'?> - <?echo "$fec_ped[2]/$fec_ped[1]/$fec_ped[0]"?></td></tr>


<?php

$sub_ped
=mysql_query("select * from sub_pedidos where cod_pedido=$ped[codigo] order by fecha_ent");
while(
$sped=mysql_fetch_array($sub_ped)){

$piezas=mysql_query("select * from items where cod_item=$sped[cod_item]");
while(
$pie=mysql_fetch_array($piezas)){


$fec_ent_ped explode("-"$sped['fecha_ent']);

?>

<tr>
<td class="l3"><font color="red"></font></td>
<td class="l2"><?echo $pie['cod_item']?> - <?echo $pie['nombre_item']?></td>
<td class="l3"><?echo $sped['cantp']?></td>
<td class="l3"><?echo $sped['cant_ent']?></td>
<td class="l3"><?echo $sped['cant_rest']?></td>
<td class="l4"><?echo "$fec_ent_ped[2]/$fec_ent_ped[1]/$fec_ent_ped[0]";?></td>
</tr>

<?php

}
}

?>
<tr>
<td class="l3"></td>
<td class="l3"><b>TOTAL</b></td>
<td class="l3"><?echo $datos['total']?></td>
<td class="l3"><?echo $datos['ent']?></td>
<td class="l3"><?echo $datos['rest']?></td>
<td class="l4"></td>
</tr>



<?php
$contenido 
ob_get_contents();
$cant_tr=substr_count($contenido"<tr>");

// cierre while clientes

echo $cant_tr;

for(
$i=0;$i<=$cant_tr;$i++){
if ((
$i &#37; 10) == 0) { 
echo "<div style='page-break-after: always;'><p align='center'><b>- Pagina $pagina valor de i: $i -</b></p></div>";
$pagina++;
}}


//cierre while pedidos
echo "</table>";
echo 
"CANT TR : ".$cant_tr;
?>


</form>
__________________
Mail: [email protected]
  #20 (permalink)  
Antiguo 12/05/2009, 12:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

En el codigo que tienes actualmente si lo lees haces lo siguiente:
- Inicias un ciclo
- Generas la tabla HTML.
- Cuentas la cantidad de TRs
- Cierras el ciclo
- Creas otro ciclo
- Por cada 10 haces un div que te imprime la cantidad de paginas
- Cierras el ciclo

Es por eso que te falla, a mi parecer, lo que quieres hacer es que mientras estas generando la tabla, cada 10 filas, meter un brinco ¿no?

En ese caso lo que debes hacer es en lugar de usar substr_count y las funciones de salida, mientras estes generando tu reporte, necesitas un contador y cuando este llegue a 10 (usando el operador de modulo %) imprimes el salto.

Saludos.
  #21 (permalink)  
Antiguo 12/05/2009, 13:00
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Claro, es eso lo que quiero hacer
Asi como vos me decis lo uso en los formulario que solo tienen un titulo y el resto es datos ...

Pero como aca tengo titulo datos, titulo datos, lo que no me sale es contar tambien los tr que pertenecen a los titulos, por el tema de donde pongo el contador, si lo pongo en la parte de los detalles, solo me cuenta los detalles, sino solo los titulos, lo que podria hacer es:
cada n detalles los titulos son siempre 2, entonces podria hacer algo como

Si( i+2=10 ) inserto el salto ...

Bueno voy a probar y te comento a ver como me fue !!!!!!!!

Gracias en serio GatorV !!!!!
__________________
Mail: [email protected]
  #22 (permalink)  
Antiguo 13/05/2009, 08:10
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Hola GatorV, sigo con el mismo tema !!!! En este caso saque la tabla y puse divs


Cita:
necesitas un contador y cuando este llegue a 10 (usando el operador de modulo %) imprimes el salto.
Entonces pongo el contador ... , pero en la parte de detalles de items, solo me cuenta los items y cada 10 filas de items, hace el salto !!!!!!, Pero Como calculo para que me sume tambien las filas de los titulos !?????????

ACA se ve como funciona !!! Esta sin pass !!!


Código PHP:
<?php
$pagina
=1;
$cont=0;


$clientes=mysql_query("SELECT * FROM clientes WHERE cod_cli between $desde and $hasta AND cod_cli IN (SELECT cod_cli FROM pedidos)",$conexion);

//$clientes=mysql_query("select * from clientes where cod_cli between $desde and $hasta");
while($cli=mysql_fetch_array($clientes)){
?>

    <div class='l1f'><b><?php echo "(".$cli['cod_cli'].")"?> - <?echo $cli['razon_soc']?></b></div>

<?php
$pedidos
=mysql_query("select * from pedidos  where cod_cli=$cli[cod_cli] order by codigo DESC" ,$conexion);
while(
$ped=mysql_fetch_array($pedidos)){

$suma=mysql_query("SELECT SUM(cantp) as total, SUM(cant_ent) as ent, SUM(cant_rest) as rest FROM sub_pedidos where cod_pedido=$ped[codigo]" ,$conexion);
$datos=mysql_fetch_array($suma);

$fec_ped explode("-"$ped['fecha_ped']);
$fec_ent explode("-"$ped['fecha_ent']);
?>
    <div class='l2f'><?php echo $ped['tipo'?> - <?php echo $ped['codigo'?> - <?echo "$fec_ped[2]/$fec_ped[1]/$fec_ped[0]"?></div>


<?php
$sub_ped
=mysql_query("select * from sub_pedidos where cod_pedido=$ped[codigo] order by fecha_ent");
while(
$sped=mysql_fetch_array($sub_ped)){

$piezas=mysql_query("select * from items where cod_item=$sped[cod_item]");
while(
$pie=mysql_fetch_array($piezas)){


$fec_ent_ped explode("-"$ped['fecha_ent']);

?>
<div class="l2f"><?echo $pie['cod_item']?> - <?echo $pie['nombre_item']?></div>
<div class="l3f"><?echo $sped['cantp']?></div>
<div class="l3f"><?echo $sped['cant_ent']?></div>
<div class="l3f"><?echo $sped['cant_rest']?></div>
<div class="l4f"><?echo "$fec_ent_ped[2]/$fec_ent_ped[1]/$fec_ent_ped[0]";?></div>

<?php
$cont
++;

// items

    
if (($cont%10) == 0)
      {
    echo 
"<div class='salto'><p align='center'><b>- Pagina $pagina valor cont : $cont -</b></p></div>";
      
$pagina++;
     }


//sub_ped
?>
<div class="l2f"><b>TOTAL</b></div>
<div class="l3f"><?echo $datos['total']?></div>
<div class="l3f"><?echo $datos['ent']?></div>
<div class="l3f"><?echo $datos['rest']?></div>

<?php
// cierre while clientes
//cierre while pedidos
?>
Saludos, Ricardo !!!!!
__________________
Mail: [email protected]
  #23 (permalink)  
Antiguo 13/05/2009, 09:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Contar cantidad de <tr>, pero en PHP !!!

Pues en tu "contador" incrementa también en la fila donde pongas los titulos y con eso ya va a calcular también esa fila.

Saludos.
  #24 (permalink)  
Antiguo 13/05/2009, 10:34
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Gracias GatorV, era correcto, eso era lo que queria ....

ahora bien, se me presento un problema, porque cuando el salto deberia hacer un salto sobre un titulo no lo hacia, entonces le puse un if que compara el ((cont%10)==0) en cada fila, una en cada titulo y una en detalles, entonces caiga donde caiga el salto ahora lo hace !!!!!!!!!

El codigo del form completo quedo asi !!!!!

Código PHP:
<form id="form" name="form" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<table id="tablita1">
<tr>
<td align="center">Clientes  Desde: <input type="text" size="3" id="desde_cli" name="desde_cli" value="<?echo $_POST['desde_cli']?>">
Hasta: <input type="text" size="3" name="hasta_cli" value="<?echo $_POST['hasta_cli']?>"></td>
</tr>

<tr>
<td align="center">
<input type="submit" name="b10" id="b10" value="BUSCAR"/>
<input type="button" name="b0" id="b0" value="VOLVER" onclick = "self.location.href = 'inicio.php'"/>
<input type="button" name="b6" id="b6"  value="IMPRIMIR" onclick="javascipt:Print()">
</td></tr>
</table>

<hr>
<center><font color="#FF6600"><h2>LISTADO PENDIENTES x CLIENTE - <?echo $fechacorta?></h2></font></center>
<hr>


<?php
$pagina
=1;
$cont=0;


$clientes=mysql_query("SELECT * FROM clientes WHERE cod_cli between $desde and $hasta AND cod_cli IN (SELECT cod_cli FROM pedidos)",$conexion);

//$clientes=mysql_query("select * from clientes where cod_cli between $desde and $hasta");
while($cli=mysql_fetch_array($clientes)){
    

$cont++;   // INCREMENTO PARA EL TITULO CLIENTE
?>

<table>
    <tr><td class='l1' colspan='6'><b><?php echo "(".$cli['cod_cli'].")"?> - <?echo $cli['razon_soc']?></b></td></tr>
</table>
<?php
    
if (($cont%$cant_filas_pagina)==0)
      {
    echo 
"<div style='page-break-after: always;'><p align='center'><b>-$pagina-</b></p></div>";
    echo 
"<hr>";
    echo 
"<center><font color='#FF6600'><h2>LISTADO ITEMS - $fechacorta</h2></font></center>";
    echo 
"<hr>";
      
$pagina++;
     }

$pedidos=mysql_query("select * from pedidos  where cod_cli=$cli[cod_cli] order by codigo DESC" ,$conexion);
while(
$ped=mysql_fetch_array($pedidos)){


$cont++; // INCREMENTO PARA EL TITULO NRO PEDIDOS, ETC

$suma=mysql_query("SELECT SUM(cantp) as total, SUM(cant_ent) as ent, SUM(cant_rest) as rest FROM sub_pedidos where cod_pedido=$ped[codigo]" ,$conexion);
$datos=mysql_fetch_array($suma);

$fec_ped explode("-"$ped['fecha_ped']);
$fec_ent explode("-"$ped['fecha_ent']);


?>
<table>
    <tr><td class='l1' colspan='6'><?php echo $ped['tipo'?> - <?php echo $ped['codigo'?> - <?echo "$fec_ped[2]/$fec_ped[1]/$fec_ped[0]"?></td></tr>
</table>

<?php
    
if (($cont%$cant_filas_pagina)==0)
      {
    echo 
"<div style='page-break-after: always;'><p align='center'><b>-$pagina-</b></p></div>";
    echo 
"<hr>";
    echo 
"<center><font color='#FF6600'><h2>LISTADO ITEMS - $fechacorta</h2></font></center>";
    echo 
"<hr>";
      
$pagina++;
     }


$sub_ped=mysql_query("select * from sub_pedidos where cod_pedido=$ped[codigo] order by fecha_ent");
while(
$sped=mysql_fetch_array($sub_ped)){

$piezas=mysql_query("select * from items where cod_item=$sped[cod_item]");
while(
$pie=mysql_fetch_array($piezas)){


$fec_ent_ped explode("-"$ped['fecha_ent']);

$cont++; // INCREMENTO PARA LOS DETALLES
?>
<table>
<tr>
<td class="l2">&nbsp;&nbsp;<?echo $pie['cod_item']?> - <?echo $pie['nombre_item']?></td>
<td class="l3"><?echo $sped['cantp']?></td>
<td class="l3"><?echo $sped['cant_ent']?></td>
<td class="l3"><?echo $sped['cant_rest']?></td>
<td class="l4"><?echo "$fec_ent_ped[2]/$fec_ent_ped[1]/$fec_ent_ped[0]";?></td>
</tr>
</table>
<?php
    
if (($cont%$cant_filas_pagina)==0)
      {
    echo 
"<div style='page-break-after: always;'><p align='center'><b>-$pagina-</b></p></div>";
    echo 
"<hr>";
    echo 
"<center><font color='#FF6600'><h2>LISTADO ITEMS - $fechacorta</h2></font></center>";
    echo 
"<hr>";
      
$pagina++;
     }

// items
//sub_ped
$cont++; // INCREMENTO PARA FILA TOTAL !!!
?>
<table>
<tr>

<td class="l2">&nbsp;&nbsp;TOTAL</td>
<td class="l3"><?echo $datos['total']?></td>
<td class="l3"><?echo $datos['ent']?></td>
<td class="l3"><?echo $datos['rest']?></td>
<td class="l4"></td>
</tr>
<table>
<?php
    
if (($cont%$cant_filas_pagina)==0)
      {
    echo 
"<div style='page-break-after: always;'><p align='center'><b>-$pagina-</b></p></div>";
    echo 
"<hr>";
    echo 
"<center><font color='#FF6600'><h2>LISTADO ITEMS - $fechacorta</h2></font></center>";
    echo 
"<hr>";
      
$pagina++;
     }
// cierre while clientes
//cierre while pedidos

?>
</form>
1 millon de gracias GatorV, al final era muy simple lo que queria hacer, pero me tenia como loco este listado !!! y no podia darme cuenta de que lo necesitaba hacer !!!

Saludos, Ricardo !!!

Me surge una duda, ahora necesito hacer este listado pero para una tabla similar a la de pedidos,es para los presupuestos ?

Es valido si hago por ejemplo, listado_pedido.php y listado_presupuesto.php y hago otro archivo listado_ped_presup.php y dentro de ahi los incluyo a los otros 2 ???

O debo hacer todo en un mismo archivo ???

Saludos !!!

Cita:
Iniciado por colote Ver Mensaje
Me surge una duda, ahora necesito hacer este listado pero para una tabla similar a la de pedidos,es para los presupuestos ?

Es valido si hago por ejemplo, listado_pedido.php y listado_presupuesto.php y hago otro archivo listado_ped_presup.php y dentro de ahi los incluyo a los otros 2 ???

O debo hacer todo en un mismo archivo ???

Saludos !!!
Me respondo yo, se puede hacer eso !!!!!!

Pero no es lo que buscaba !!!

Asique tengo que ponerme a hacerlo en el mismo archivo !!!

Saludos, Ricardo !!!
__________________
Mail: [email protected]

Última edición por GatorV; 13/05/2009 a las 13:10
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:57.