Foros del Web » Programando para Internet » PHP »

tengo problemas en impresión de tabla

Estas en el tema de tengo problemas en impresión de tabla en el foro de PHP en Foros del Web. Hola, paso directo al asunto: Tengo el siguiente código: for($i=1;$i<3;$i++){ $select=mysql_query("SELECT DISTINCT(AnoEstudio) FROM ISP"); while($file=mysql_fetch_array($select)){ ?> <tr> <td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $file[curso];?></b></td> <td bgcolor=#F3F4F2 bordercolor=#000099><b><? ...
  #1 (permalink)  
Antiguo 29/01/2008, 07:58
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
tengo problemas en impresión de tabla

Hola, paso directo al asunto:
Tengo el siguiente código:

for($i=1;$i<3;$i++){
$select=mysql_query("SELECT DISTINCT(AnoEstudio) FROM ISP");

while($file=mysql_fetch_array($select)){
?>
<tr>
<td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $file[curso];?></b></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $file[carrera];?></b></td>

<?

?>

<?

for($j=0;$j<6;$j++){
$select_1=mysql_query("SELECT curso,carrera,AnoEstudio,Count(carrera) AS Total
FROM ISP where curso like '$file[curso]' AND AnoEstudio='$j' AND carrera='$file[carrera]'
GROUP BY AnoEstudio");
while($row=mysql_fetch_array($select_1)){

?>

<td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $row[Total]; $total+=$row[Total];?></b></td><?}

Lo q pasa con el es q si hay algún valor igual a 0, pues no lo imprime, y corre los demás valores en la celda q debería ir el correspondiente 0. ¿Qué pasa con esto?¿Alguien me puede ayudar?
  #2 (permalink)  
Antiguo 29/01/2008, 09:06
Avatar de liebe13  
Fecha de Ingreso: octubre-2006
Ubicación: peru
Mensajes: 224
Antigüedad: 17 años, 6 meses
Puntos: 3
Re: tengo problemas en impresión de tabla

bueno man vi tu codigo y bueno ponlo completo x no se si hay algo mas x q no cierras los 2 for y un while ademas trata de ponerles comillas simples cuando llames a los campo en el array
osea esta asi
<td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $file[curso];?></b></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $file[carrera];?></b></td>

trata d q sea asi
<td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $file['curso'];?></b></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $file['carrera'];?></b></td>

y bueno sabes haslo con un if
asi
<td bgcolor=#F3F4F2 bordercolor=#000099><b><?
if ($file['campo']=="0"){
$valor = 0;
}else{
$valor = $file['campo'];
}
echo $valor;

?></b></td>
espero q eso sea o si no pon todo tu codigo para verlo bien man
  #3 (permalink)  
Antiguo 29/01/2008, 09:43
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Re: tengo problemas en impresión de tabla

Hola liebe13
Me explico mejor:
El código si funciona, todas las llaves cierran donde tienen q cerrar, lo que pasa es que cuando le toca imprimir un cero, NO LO IMPRIME y corre todos los valores siguientes para los lugares donde debería haber '0'. Ya probé una condicional, pero me sigue haciendo lo mismo. El que debe imprimir en todo momento es a count(AnoEstudio) AS Total. es decir a $row[Total]. Te pongo el código completo a ver si se te ocurre algo porq yo estoy vencido man:

include("connect.php");?>
<table border=1 width=85% id="table4">
<tr>
<td bgcolor=#F3F4F2 bordercolor=#000099><b>Curso</b></font></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b>Facultad</b></font></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b>Carrera</b></font></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b>1</b></font></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b>2</b></font></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b>3</b></font></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b>4</b></font></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b>5</b></font></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b>Total</b></font></td>

<?
$curso=array(1=>"Diurno","Encuentro");

for($i=1;$i<3;$i++){
$select=mysql_query("SELECT DISTINCT(curso),Facultad,carrera FROM ISP where curso like '$i'");

while($file=mysql_fetch_array($select)){
?>
<tr>
<td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $curso[$file['curso']];?></b></font></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $file['Facultad'];?></b></font></td>
<td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $file['carrera'];?></b></font></td>

<?

?>

<?

for($j=0;$j<6;$j++){
$select_1=mysql_query("SELECT curso,Facultad,AnoEstudio,Count(AnoEstudio) AS Total
FROM ISP where curso like '$file[curso]' AND AnoEstudio='$j' AND Facultad='$file[Facultad]' AND carrera='$file[carrera]' AND sexo='F'
GROUP BY AnoEstudio");
$result=mysql_result($select_1);
while($row=mysql_fetch_array($select_1)){

?>

<td bgcolor=#F3F4F2 bordercolor=#000099><b><? if ($row[Total]==0){$valor==0;} else $valor=$row[Total]; echo $valor; $total+=$row[Total];?></b></font></td><?}

?>

<?
}
?>
<td bgcolor=#F3F4F2 bordercolor=#000099><b><? echo $total; $total=0;?></b></font></td>
<?

?></tr><?}}}
?>


Ahí está.
salu2
  #4 (permalink)  
Antiguo 29/01/2008, 10:03
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Re: tengo problemas en impresión de tabla

liebe 13 o demás q me quieran ayudar:
Otra aclaración, en la consulta los valores q dije antes debían retornar 0, mysql en verdad lo que hace es retornar un "valor vacío", imagino que tendrá mucho que ver ¿no?
  #5 (permalink)  
Antiguo 29/01/2008, 10:40
Avatar de radamantys  
Fecha de Ingreso: agosto-2006
Mensajes: 46
Antigüedad: 17 años, 8 meses
Puntos: 1
Re: tengo problemas en impresión de tabla

Hola buenas, veo que tu ultimo codigo tiene un pequeño fallo en esta linea.
Código PHP:
<? if ($row[Total]==0){$valor==0;} else $valor=$row[Total]; echo $valor$total+=$row[Total];?>
Tienes un valor de igualdad == y no de asignacion =. Quizas por eso no te sale bien lo que buscas.

Pero para imprimir un caracter en forma de numero lo unico que tienes que hacer es un UpCasting.

Código PHP:
echo (int)$row["Total"];   // Te escribira el numero que tiene $row["Total"], si este es nulo, escribe 0. 
Este codigo transforma la variable del tipo String en una numerica. Si la variable $row["Total"] es nulo, este codigo lo transforma en 0 que es lo que quieres.

OFFTOPIC.
Un consejo en cuanto a las sentencias mysql.
Deberias verte mejor el codigo MYSQL, para ver si hay alguna solución a tus sentencia MYSQL. Como la de juntar las peticiones en una sola, o en menos. Es que tienes demasiadas sentencias. Haces un total de...

2+(6*(a+b)). Siendo a y b el numero de resultados de las 2 primeras sentencias. Imaginate que a y b valieran 7, te sale un total de 86 peticiones a la BD; demasiadas. Deberias corregir eso

Saludos.

Última edición por radamantys; 29/01/2008 a las 10:57
  #6 (permalink)  
Antiguo 29/01/2008, 10:58
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Re: tengo problemas en impresión de tabla

Hola radamantys, bueno respecto a lo q me dices del casting, ya probé y me sigue tirando lo mismo. Al parecer lo que pasa es que no debuelve un valor NULL, sino un valor vacío ¿y como refiero eso?. Lo del operador de asignación OK, lo arreglé y la misma historia.
Si sé q hago demasiadas consultas mysql, pero no sé como abreviar. Imagina q tengo q sacar con diferentes parámetros (AnoEstudio,carrera,curso) que tienen a su vez más de un valor y sacar los totales.
¿Podrías ilustrame sobre cómo abreviar estas consultas? De paso a lo mejor también le ves la solución a lo del valor vacío?
  #7 (permalink)  
Antiguo 29/01/2008, 12:09
Avatar de radamantys  
Fecha de Ingreso: agosto-2006
Mensajes: 46
Antigüedad: 17 años, 8 meses
Puntos: 1
Re: tengo problemas en impresión de tabla

Pues entonces es extraño, Ya que he probado el codigo que te di y funciona perfectamente

Código PHP:

echo (int) "";
echo (int) 
null;
echo (int) 
NULL;

echo (int) 
$variableVacia// variable sin ningun valor.


//Resultado: 0000; 
Estas 4 funciones echo devuelven un 0. Asi que quizas a ti no te devuelva ni 0 ni null, sino algun otro caracter, como el espacio en blanco. No se, miralo mejor.

En cuanto a las sentencias. No tengo muy claro que es lo que quieres hacer, si puedieras explicarnos lo que quieres hacer, no poner solo el codigo.
  #8 (permalink)  
Antiguo 29/01/2008, 12:24
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Re: tengo problemas en impresión de tabla

Bueno acá va:
Es una base de datos con todos los datos de los alumnos de mi universidad. Estoy elaborando unos informes q son trabajo de secretaría docente, que necesitan totales por año, por carrera, por raza etc (según el informe, cada informe necesita una cosa diferente), es su sistema de información, no se puede cambiar, así q tengo q respetar la forma de las tablas q tienen (parte de mente cuadrada también, la de ellos).
Por ejemplo esta q mandé, es una tabla q tiene como columnas tipo de curso, carrera,Facultad, años de estudio (del 1 al 5) y total.
¿me expliqué bien?
En el caso q nos ocupa, lo q pasa es q en la BD no hay registros de alumnos q pertenezcan a la carrera 23, Facultad 4, curso 2, 1er año ¿ya?. Hay debería imprimir el 0, q es lo q no hace. Cuando ejecuto la consulta en mysql devuelve un valor vacío.
Si no logré explicarme bien me avizas ¿ok?
  #9 (permalink)  
Antiguo 29/01/2008, 14:51
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Re: tengo problemas en impresión de tabla

Sinceramente me hace falta ayuda de ustedes, los programadores de más experiencia, sino estoy prácticamente perdido.
salu2
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 13:33.