PHP - Crear una consulta dependiendo del numero de campos

 
Vista:
sin imagen de perfil

Crear una consulta dependiendo del numero de campos

Publicado por Santon (77 intervenciones) el 26/11/2014 00:35:06
Buen dia a todos,.
Tengo el siguiente codigo: Que utilizo para imprimir en un cuadro las notas de cada materia.
En la consulta escribo directamente el codigo de la materia, pero yo quiziera hacer un ciclo dependiendo del numero de materias que contenga la tabla materias, para imprimir las materias dependiendo del numero de materias que existe en la tabla materias y no escribir el codigo de la materia.

<?php

//IMPRIMIR LAS NOTAS DE LA MATERIA 1
echo"<TR>";
echo"<TD align='center'><font face='Arial' size='2'>".INFORMATICA."</font></TD>";
$co2 = mysql_query("select * from tb_notas where V_codi_est= 'ZZ01402' and C_id_asignatura= 'INFBCH2-14'",$conexion);
while($row2 = mysql_fetch_array($co2)){
echo"<TD align='center'><font face='Arial' size='2'>".$row2['F_nota_1']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row2['F_nota_2']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row2['F_nota_3']."</font></TD>";
$n1=$row2['F_nota_1'];
$n2=$row2['F_nota_2'];
$n3=$row2['F_nota_3'];
$prom=round((($n1+$n2+$n3)/3),2);
echo"<TD align='center' bgcolor='#CCCCCC'><font face='Arial' size='2'>$prom</font></TD>";
}
echo"</TR>";
//FIN DE MATERIA 1

//IMPRIMIR LAS NOTAS DE LA MATERIA 2
echo"<TR>";
echo"<TD align='center'><font face='Arial' size='2'>".INGLES."</font></TD>";
$co3 = mysql_query("select * from tb_notas where V_codi_est= 'ZZ01402' and C_id_asignatura= 'INGBCH2-14'",$conexion);
while($row3 = mysql_fetch_array($co3)){
echo"<TD align='center'><font face='Arial' size='2'>".$row3['F_nota_1']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row3['F_nota_2']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row3['F_nota_3']."</font></TD>";
$n1=$row3['F_nota_1'];
$n2=$row3['F_nota_2'];
$n3=$row3['F_nota_3'];
$prom=round((($n1+$n2+$n3)/3),2);
echo"<TD align='center' bgcolor='#CCCCCC'><font face='Arial' size='2'>$prom</font></TD>";
}
echo"</TR>";
//FIN DE MATERIA 2

//IMPRIMIR LAS NOTAS DE LA MATERIA 3
echo"<TR>";
echo"<TD align='center'><font face='Arial' size='2'>".Ciencia." ".Salud." ".Y." ".Medio." ".Ambiente."</font></TD>";
$co4 = mysql_query("select * from tb_notas where V_codi_est= 'ZZ01402' and C_id_asignatura= 'INGBCH2-14'",$conexion);
while($row4 = mysql_fetch_array($co3)){
echo"<TD align='center'><font face='Arial' size='2'>".$row4['F_nota_1']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row4['F_nota_2']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row4['F_nota_3']."</font></TD>";
$n1=$row4['F_nota_1'];
$n2=$row4['F_nota_2'];
$n3=$row4['F_nota_3'];
$prom=round((($n1+$n2+$n3)/3),2);
echo"<TD align='center' bgcolor='#CCCCCC'><font face='Arial' size='2'>$prom</font></TD>";
}
echo"</TR>";
//FIN DE MATERIA 3


?>
QUISIERA HACER ALGO ASI: que por medio de una consulta a la tabla materia crear un vector donde me almacene los valores de los codigos de las materias y luego aplicarlos a las consultas para desplegar las notas para no escribir el codigo de la materia sino que sea dependiendo de la consulta

<?php
//MATERIAS
$cons1 = mysql_query("SELECT * FROM tb_materias'",$conexion);

while ( $row_materias = mysql_fetch_array($cons1) )
{
$cont++;


//IMPRIMIR LAS NOTAS DE LA MATERIA 1
echo"<TR>";
echo"<TD align='center'><font face='Arial' size='2'>".INFORMATICA."</font></TD>";
$co2 = mysql_query("select * from tb_notas where V_codi_est= 'ZZ01402' and C_id_asignatura= '$row_materias[1]'",$conexion);
while($row2 = mysql_fetch_array($co2)){
echo"<TD align='center'><font face='Arial' size='2'>".$row2['F_nota_1']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row2['F_nota_2']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row2['F_nota_3']."</font></TD>";
$n1=$row2['F_nota_1'];
$n2=$row2['F_nota_2'];
$n3=$row2['F_nota_3'];
$prom=round((($n1+$n2+$n3)/3),2);
echo"<TD align='center' bgcolor='#CCCCCC'><font face='Arial' size='2'>$prom</font></TD>";
}
echo"</TR>";
//FIN DE MATERIA 1

//IMPRIMIR LAS NOTAS DE LA MATERIA 2
echo"<TR>";
echo"<TD align='center'><font face='Arial' size='2'>".INGLES."</font></TD>";
$co3 = mysql_query("select * from tb_notas where V_codi_est= 'ZZ01402' and C_id_asignatura= '$row_materias[2]'",$conexion);
while($row3 = mysql_fetch_array($co3)){
echo"<TD align='center'><font face='Arial' size='2'>".$row3['F_nota_1']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row3['F_nota_2']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row3['F_nota_3']."</font></TD>";
$n1=$row3['F_nota_1'];
$n2=$row3['F_nota_2'];
$n3=$row3['F_nota_3'];
$prom=round((($n1+$n2+$n3)/3),2);
echo"<TD align='center' bgcolor='#CCCCCC'><font face='Arial' size='2'>$prom</font></TD>";
}
echo"</TR>";
//FIN DE MATERIA 2

//IMPRIMIR LAS NOTAS DE LA MATERIA 3
echo"<TR>";
echo"<TD align='center'><font face='Arial' size='2'>".Ciencia." ".Salud." ".Y." ".Medio." ".Ambiente."</font></TD>";
$co4 = mysql_query("select * from tb_notas where V_codi_est= 'ZZ01402' and C_id_asignatura= '$row_materias[3]",$conexion);
while($row4 = mysql_fetch_array($co3)){
echo"<TD align='center'><font face='Arial' size='2'>".$row4['F_nota_1']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row4['F_nota_2']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row4['F_nota_3']."</font></TD>";
$n1=$row4['F_nota_1'];
$n2=$row4['F_nota_2'];
$n3=$row4['F_nota_3'];
$prom=round((($n1+$n2+$n3)/3),2);
echo"<TD align='center' bgcolor='#CCCCCC'><font face='Arial' size='2'>$prom</font></TD>";
}
echo"</TR>";
//FIN DE MATERIA 3

}//fin del while materia
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Crear una consulta dependiendo del numero de campos

Publicado por Juanma (6 intervenciones) el 26/11/2014 02:37:40
Si no te he entendido mal, lo que quieres hacer es repetir el código que te dibuja la tabla con las notas de cada materia según el total de materias. no?

Si es así primero y antes que nada tendrás que hacer una consulta que te dé el total de materias
que sería algo así como

$q="select count(*) from materias where ...";(lo que sea)
$total_materias = mysql_query($q);


eso te dará el total de materias según el filtro que utlices.

después solo tienes que hacer un for que te repita ese código tantas veces como sea necesario

*Importante que incluyas el ["$i"] delante de cada valor que rescates de la BD;

for($i=0; $i<$total_materias; $i++) {

echo"<TR>";
echo"<TD align='center'><font face='Arial' size='2'>".INFORMATICA."</font></TD>";
$co2 = mysql_query("select * from tb_notas where V_codi_est= 'ZZ01402' and C_id_asignatura= '$row_materias[1]'",$conexion);
while($row2 = mysql_fetch_array($co2)){
echo"<TD align='center'><font face='Arial' size='2'>".$row2[$i]['F_nota_1']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row2[$i]['F_nota_2']."</font></TD>";
echo"<TD align='center'><font face='Arial' size='2'>".$row2[$i]['F_nota_3']."</font></TD>";
$n1=$row2[$i]['F_nota_1'];
$n2=$row2[$i]['F_nota_2'];
$n3=$row2[$i]['F_nota_3'];
$prom=round((($n1+$n2+$n3)/3),2);
echo"<TD align='center' bgcolor='#CCCCCC'><font face='Arial' size='2'>$prom</font></TD>";
}
echo"</TR>";
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Crear una consulta dependiendo del numero de campos

Publicado por Santon (77 intervenciones) el 26/11/2014 19:35:17
Algo asi pero en la tabla materias existe algo como lo siguiente:

nombre codigo
INFORMATICA INFCH101-1
INGLES INGCH202-2
MATEMATICAS MATCH303-3

Lo que quiero es crear un ciclo que me permita hacer diferentes consultas pero sin yo escribir el codigo de la materia sino que se me genere dependiendo de la tabla

sql1 codmateria[1]
sql2 codmateria[2]
sql2 codmateria[3]

osea meter el codigo de las materias en un array para luego imprimirlos con un ciclo y no escribir directamente el codigo en la consulta

sql1 = select * from tb_materias where INFCH101-1 asi no
sql1 = select * from tb_materias where codmateria [i] asi quisiera
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar