alvaroxz Posted July 13, 2010 Report Share Posted July 13, 2010 (edited) Ordena mas el codigo asi enverdad cuesta leerlo. te recomiendo que si vas a trabajar con mayus el html trabajalo completo, es decir el tag y los atributos en mayus o minus todo, tambien trabaja los elementos html en forma de bloques como lo hacer con los ifs y bucles de php,asi se puede leer mejor... Asique primero ordenamos... while ($con = mysql_fetch_array($sql)){ $fecha = $con[fecha]; $idcom = $con[idcom]; $tipoval = $con[tipoval]; $numcuenta = $con[numcuenta]; if( $idcom !=$last_fecha2){ $last_fecha2 = $idcom; $idcom_print = $idcom; $descripcion_print = $descripcion; } else{ $idcom_print = " "; $descripcion_print = ""; } <table width="100%" border="0" bordercolor="#99CCFF" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td width="7%"align="left"><font size="2" ><? echo $idcom_print ?></font></td> <td width="11%" align="left"><font size="2" ><? echo substr($descripcion_print,0,10) ?> </font></td> <? if($descripcion_print != ""){ ?> </tr> <tr> <td colspan="2"></td> <? } ?> <td width="8%"align="left"><font size="2" ><? echo $fecha ?></font></td> <td width="8%"align="left"><font size="2" ><? echo $numcuenta ?> </font></td> </tr> </table> <? } ?> Ahora que esta mas LEIBLE voy a ver en que te puedo ayudar... vamos por parte... ya partimos mal, ya que $sql no esta declarada... te recomiendo que chekes como se ocupa de mejor manera mysql_fetch_array... <?php mysql_connect("localhost", "user", "pass") or die(mysql_error()); mysql_select_db("DB"); $result = mysql_query("ACA EL SELECT"); while ($fila = mysql_fetch_array($result, MYSQL_NUM)){ echo "$fila[0]"; //o que se yo... } mysql_free_result($result); ?> Ya una ver que tengas eso claro... damos por correcto todo esto: while ($con = mysql_fetch_array($sql)){ $fecha = $con[fecha]; $idcom = $con[idcom]; $tipoval = $con[tipoval]; $numcuenta = $con[numcuenta]; if($idcom !=$last_fecha2){ $last_fecha2 = $idcom; $idcom_print = $idcom; $descripcion_print = $descripcion; } else{ $idcom_print = " "; $descripcion_print = ""; } Aca hay un error en tu codigo, yo personalmente no se que desas, si mostrar solo una tabla, varias tablas. Si son varias tablas tienes 2 opciones o cierras el tag php (?>) o arrancas un echo... vamos por cerrar, ya que viendo tu codigo te gusta cerrar y abrir, a mi personalmente me gusta trabajar con un solo bloque php, pero cada uno con lo suyo, Pasamos por alto esta parte hasta que digas que onda.... damos por correcto esto entonces <table width="100%" border="0" bordercolor="#99CCFF" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td width="7%"align="left"><font size="2" ><? echo $idcom_print ?></font></td> <td width="11%" align="left"><font size="2" ><? echo substr($descripcion_print,0,10) ?> </font></td> <? if($descripcion_print != ""){ ?> </tr> <tr> Aca hay un error a nivel html, ya que llamas a un td con saltos de columna de 2, y luego vienen 2 más, esto es equivalente a crear 4 columnas para una tabla que tiene por filas 2 (fila anterior...) Supongo yo que este es la famosa raya que andabas tratando crear creo que lo mas logico es agregar aca un tr... <tr> <td colspan="2"></td> </tr> Creo que eso esta bien sino omite mi comentario pero debes arreglar la tabla, ya que queda irregular, y las tablas en html son regulares... Bueno suponiendo que es lo que deseabas agregamos otro tr aca y ahi el codigo quedaria correcto (faltando el cierre de sentencias [;])... <? } ?> <tr> <td width="8%"align="left"><font size="2" ><? echo $fecha; ?></font></td> <td width="8%"align="left"><font size="2" ><? echo $numcuenta; ?> </font></td> </tr> </table> <? } ?> En resumen while ($con = mysql_fetch_array($sql)){ $fecha = $con[fecha]; $idcom = $con[idcom]; $tipoval = $con[tipoval]; $numcuenta = $con[numcuenta]; if($idcom !=$last_fecha2){ $last_fecha2 = $idcom; $idcom_print = $idcom; $descripcion_print = $descripcion; } else{ $idcom_print = " "; $descripcion_print = ""; } [code] Verifica que es lo que deseabas... [code] <table width="100%" border="0" bordercolor="#99CCFF" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td width="7%"align="left"><font size="2" ><? echo $idcom_print ?></font></td> <td width="11%" align="left"><font size="2" ><? echo substr($descripcion_print,0,10) ?> </font></td> <? if($descripcion_print != ""){ ?> </tr> Espero que esto es lo que querias hacer <tr> <td colspan="2"></td> </tr> <? } ?> <tr> <td width="8%"align="left"><font size="2" ><? echo $fecha; ?></font></td> <td width="8%"align="left"><font size="2" ><? echo $numcuenta; ?> </font></td> </tr> </table> <? } ?> Saludos Edited July 13, 2010 by alvaroxz Link to comment Share on other sites More sharing options...
Ra Posted July 13, 2010 Report Share Posted July 13, 2010 Entonces... para hacer la línea: while ($con = mysql_fetch_array($sql)) { $fecha = $con[fecha]; $idcom = $con[idcom]; $tipoval = $con[tipoval]; $numcuenta = $con[numcuenta]; if( $idcom !=$last_fecha2){ $last_fecha2 = $idcom; $idcom_print = $idcom; $descripcion_print = $descripcion; } else { $idcom_print = " "; $descripcion_print = ""; } <table width="100%" border="0" bordercolor="#99CCFF" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <TR <? echo ($descripcion_print != "" ? "style=\"border-top: solid 1px blue;\"" : "") ?> > <TD width="7%"align="left"><font size="2" ><? echo $idcom_print ?></font></TD> <TD width="11%" align="left"><font size="2" ><? echo substr($descripcion_print,0,10) ?> </font></TD> <? if($descripcion_print != ""){ ?> </tr><tr> <td colspan="2"></td> <? } ?> <TD width="8%"align="left"><font size="2" ><? echo $fecha ?></font></TD> <TD width="8%"align="left"><font size="2" ><? echo $numcuenta ?> </font></TD> </TR> </TABLE> <? } ?> Y eso sería... sólo cambia la línea del 1º TR... De todas formas, y como dice alvaro y te dije en el otro post.... sigue los consejos... pues queda más ordenado para tí (puedes hacer las modificaciones/correcciones más rápido) y para los posibles futuros desarrolladores que mantendrán tu sistema... Suerte! Link to comment Share on other sites More sharing options...
felipe_ceg Posted July 13, 2010 Author Report Share Posted July 13, 2010 ragys, no hizo la linea... :( Link to comment Share on other sites More sharing options...
Ra Posted July 13, 2010 Report Share Posted July 13, 2010 Sorry compadre... a TR no se le aplica estilo... se tiene que aplicar a TD... Puedes hacerlo así: while ($con = mysql_fetch_array($sql)) { $fecha = $con[fecha]; $idcom = $con[idcom]; $tipoval = $con[tipoval]; $numcuenta = $con[numcuenta]; if( $idcom !=$last_fecha2){ $last_fecha2 = $idcom; $idcom_print = $idcom; $descripcion_print = $descripcion; $estilo = "style=\"border-top: solid 1px blue;\""; } else { $idcom_print = " "; $descripcion_print = ""; $estilo = ""; } <table width="100%" border="0" bordercolor="#99CCFF" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <TR> <TD width="7%"align="left" <? echo $estilo; ?>><font size="2" ><? echo $idcom_print ?></font></TD> <TD width="11%" align="left" <? echo $estilo; ?>><font size="2" ><? echo substr($descripcion_print,0,10) ?> </font></TD> <? if($descripcion_print != ""){ ?> </tr><tr> <td colspan="2" <? echo $estilo; ?>></td> <? } ?> <TD width="8%"align="left" <? echo $estilo; ?>><font size="2" ><? echo $fecha ?></font></TD> <TD width="8%"align="left" <? echo $estilo; ?>><font size="2" ><? echo $numcuenta ?> </font></TD> </TR> </TABLE> <? } ?> O al revés si quieres... cambia $estilo = "" al if y el otro al else... Suerte! Link to comment Share on other sites More sharing options...
felipe_ceg Posted July 13, 2010 Author Report Share Posted July 13, 2010 ragys, muchas gracias funcionarn las lineas. otra cosulta: yo tengo unos campos de numero tambbien en otras columnas(no las puse anteriormente para que no sea tanto codigo) pero se muestran tal cual como los demas campos(hacia abajo en <td>) como puedo hacer para que sume estos numeros <td>$haber</td> <td>$debe</td> solo los numeros que estan hasta antes de la linea en la que me acabaas de ayudar. como por ejemplo: TOTAL HABER: ($aux = aux +$haber) TOTAL DEBE: ($aux = aux +$debe) todo esto a continuacion de o abajo del la columna debe o haber segun corresponda... saludos ragys sorry por preguntar tanto... :) Link to comment Share on other sites More sharing options...
Ra Posted July 13, 2010 Report Share Posted July 13, 2010 Off Topic: No te preocupes por preguntar... para eso es el foro On Topic: Bueno... para sumar por grupo... tienes que mantener un par de totalizadores ($debe y $haber) y debes ir asignando $debe = 0; $haber = 0; cada vez que comiences un nuevo grupo... en caso contrario, tienes que ir sumando... esto lo haces en el mismo if principal... $debe = 0; $haber = 0; while ($con = mysql_fetch_array($sql)) { $fecha = $con[fecha]; $idcom = $con[idcom]; $tipoval = $con[tipoval]; $numcuenta = $con[numcuenta]; if( $idcom !=$last_fecha2){ $last_fecha2 = $idcom; $idcom_print = $idcom; $descripcion_print = $descripcion; $estilo = "style=\"border-top: solid 1px blue;\""; $debemostrar = $debe; $habermostrar = $haber; $debe = 0; $haber = 0; } else { $idcom_print = " "; $descripcion_print = ""; $estilo = ""; $debe += $campodebe; $haber += $campohaber; } <table width="100%" border="0" bordercolor="#99CCFF" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <TR> <TD width="7%"align="left" <? echo $estilo; ?>><font size="2" ><? echo $idcom_print ?></font></TD> <TD width="11%" align="left" <? echo $estilo; ?>><font size="2" ><? echo substr($descripcion_print,0,10) ?> </font></TD> <? if($descripcion_print != ""){ ?> </tr><tr> <td colspan="2" <? echo $estilo; ?>></td> <? } ?> <TD width="8%"align="left" <? echo $estilo; ?>><font size="2" ><? echo $fecha ?></font></TD> <TD width="8%"align="left" <? echo $estilo; ?>><font size="2" ><? echo $numcuenta ?> </font></TD> //*********Aquí agregué un par de nuevos TD para mostrar los debe y haber*************** <TD width="8%"align="left" <? echo $estilo; ?>><font size="2" ><? echo $debemostrar ?> </font></TD> <TD width="8%"align="left" <? echo $estilo; ?>><font size="2" ><? echo $habermostrar ?> </font></TD> </TR> </TABLE> <? } ?> Ojo que ese par de td nuevos te van a descuadrar la tabla... tú vé como necesitas mostrar los totales... Salu2. Link to comment Share on other sites More sharing options...
felipe_ceg Posted July 13, 2010 Author Report Share Posted July 13, 2010 ragys, lo que tengo que hacer es poner los resultados abajo de cada campo($haber y $debe) NO al lado con <td> por ejemplo: en este despliegue de informacion hay 6 <td> los 2 ultimos son haber y debe 1985----hola -----------------blabla---bla bla----- 17-----54 -----------------blublu---blublu------48-----50 -----------------inform---masinf-----55-----8 -------------------EL TOTAL ES: 100---112 --------------------------------------------------------------------------------------------------------------------------------------------------------- 1986----buenas -----------------blabla---bla bla----- 17-----4 -----------------blublu---blublu------3-----35 -----------------inform---masinf-----50-----8 ---------------------EL TOTAL ES:69-----47 ----------------------------------------------------------------------------------------------------------------------------------------------------- Link to comment Share on other sites More sharing options...
Ra Posted July 14, 2010 Report Share Posted July 14, 2010 (edited) Ah.. bueno... la lógica es la misma... sólo debes agregar <tr> para que haga una fila nueva para mostrar los resultados... $debe = 0; $haber = 0; while ($con = mysql_fetch_array($sql)) { $fecha = $con[fecha]; $idcom = $con[idcom]; $tipoval = $con[tipoval]; $numcuenta = $con[numcuenta]; if( $idcom !=$last_fecha2){ $last_fecha2 = $idcom; $idcom_print = $idcom; $descripcion_print = $descripcion; $estilo = "style=\"border-top: solid 1px blue;\""; $mostrartotal = "<TR><TD colspan=\"2\" align=\"left\">EL TOTAL ES:</TD><TD align=\"left\"><font size=\"2\">" . $debe . "</font></TD><TD align=\"left\"><font size=\"2\">" . $haber . "</font></TD></TR>"; $debe = 0; $haber = 0; } else { $idcom_print = " "; $descripcion_print = ""; $estilo = ""; $debe += $campodebe; $haber += $campohaber; $mostrartotal = ""; } <table width="100%" border="0" bordercolor="#99CCFF" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <? echo $mostrartotal; ?> <TR> <TD width="7%"align="left" <? echo $estilo; ?>><font size="2" ><? echo $idcom_print ?></font></TD> <TD width="11%" align="left" <? echo $estilo; ?>><font size="2" ><? echo substr($descripcion_print,0,10) ?> </font></TD> <? if($descripcion_print != ""){ ?> </tr><tr> <td colspan="2" <? echo $estilo; ?>></td> <? } ?> <TD width="8%"align="left" <? echo $estilo; ?>><font size="2" ><? echo $fecha ?></font></TD> <TD width="8%"align="left" <? echo $estilo; ?>><font size="2" ><? echo $numcuenta ?> </font></TD> </TR> </TABLE> <? } ?> Viejo... ahora aparecieron las consecuencias del desorden que tienes en el código y todo lo que se te ha comentado... Bueno... el problema es que los totales se van a imprimir en la tabla siguiente, puesto que cuando termina un ciclo, estás cerrando la tabla que creaste... esto, visualmente no sé cómo se verá... pero como estructura HTML está quedando muy mal... En todo caso, revísalo y comenta si resulta... Suerte! Edited July 14, 2010 by ragys Link to comment Share on other sites More sharing options...
felipe_ceg Posted July 14, 2010 Author Report Share Posted July 14, 2010 Estimado ragys, la informacion la despliega de esta forma: 1985----hola blabla---bla bla----- 17-----54 -----------------blublu---blublu------48-----50 -----------------inform---masinf-----55-----8 EL TOTAL ES: 0---0 como puedes ver se desordenó la rimera fila de la informacion(blabla---bla bla----- 17-----54) y el total me da cero. pd: en realidad está bien desordenado el codigo, eso pasa por ser aprendiz creo yo, a medida que valla aprendiendo espero poder mejorar. saludos Link to comment Share on other sites More sharing options...
Ra Posted July 14, 2010 Report Share Posted July 14, 2010 El código quedó igual como lo postié??? Porque yo le quité los últimos 2 TD que le había agregado... por lo tanto, el 17----54 y el 48---50 y el 55---8 no deberían aparecer... Postea cómo te quedó... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now