PHP - crear consulta para reporte de notas php

   
Vista:

crear consulta para reporte de notas php

Publicado por guillermo guillermoandresvalencia@gmail.com (4 intervenciones) el 03/05/2014 05:44:29
buenas tardes este es mi primer pregunta en un foro, resulta que estoy creando una aplicación de notas para un colegio donde debo imprimir el reporte

cuando realizo la consulta por estudiante el me muestra todos los registros

lo que yo necesito es que al frente de cada materia aparezca la nota de cada periodo

ej lo tengo así.

http://www.creatupaginafacil.com/notasimg/Sin-t%edtulo-2.jpg

y yo quiero que quede asi

http://www.creatupaginafacil.com/notasimg/Sin-t%edtulo-4.jpg

Tengo una tabla materia que contiene los campos [ id ]- [ materia]

y una tabla {notas} que contiene campo [ id]- [materia] - [codigo_estudiante] - [clei] - [periodo] - [evaluacion] -[guias] - [asistencia] - [cualitativa ]-[final]

mi codigo es hecho en dreamweavaer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<?php
 
$var=0;
 
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
 
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
 
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
 
$colname_notas = "-1";
if (isset($_GET['codigo'])) {
$colname_notas = $_GET['codigo'];
}
mysql_select_db($database_notas, $notas);
$query_notas = sprintf("SELECT * FROM notas WHERE codigo_estudiante = %s", GetSQLValueString($colname_notas, "int"));
$notas = mysql_query($query_notas, $notas) or die(mysql_error());
$row_notas = mysql_fetch_assoc($notas);
$totalRows_notas = mysql_num_rows($notas);
session_start(); ?>
 
 
<p><?php
$nombre=$_GET['nombre'];
$apellido=$_GET['apellidos'];
$clei=$_GET['clei'];
 
 
if(empty($_SESSION['usuario_nombre'])) { // comprobamos que las variables de sesión estén vacías 
 
echo "Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />"; } else {
?>
Usuario: <a href="perfil.php?id=<?=$_SESSION['usuario_id']?>"><strong><?=$_SESSION['usuario_nombre']?></strong></a> <a href="javascript:window.print()">Imprimir esta página</a></p>
<form id="form1" name="form1" method="get" action="ver_notas.php" >
<label for="atras"></label>
<input name="clei" OnFocus="this.blur()" type="text" id="atras" value="<?php echo $clei; ?>" size="7" />
<input type="submit" name="enviar" id="volver" value="&lt;&lt;" />
</form>
<p>&nbsp;</p>
<p>Boletin de Notas
<?php
 
 
 
echo $nombre;
echo $apellido; ?> <br> <?php
 
date_default_timezone_set('UTC');
echo date ("M-d-Y");
 
 
 
?><a href="javascript:window.print()"></a></p>
<table border="0" align="center">
<tr class="d">
<td bgcolor="#0000FF">Materia</td>
<td bgcolor="#0000FF">Clei</td>
<td bgcolor="#0000FF">Periodo</td>
<td bgcolor="#0000FF">Evaluacion 35%</td>
<td bgcolor="#0000FF">Guias 35%</td>
<td bgcolor="#0000FF">Asistencia 25%</td>
<td bgcolor="#0000FF">Cualitativa 5%</td>
<td bgcolor="#0000FF">Final 100%</td>
<td bgcolor="#0000FF">&nbsp;</td>
</tr>
<?php do { ?>
 
 
<?php $final=$row_notas['evaluacion']*35/100+$row_notas['guias']*35/100+$row_notas['asistencia']*25/100+$row_notas['cualitativa']*5/100; ?>
 
<tr align="center">
<td bgcolor="#FFFF99"><?php echo $row_notas['materia']; ?></td>
<td bgcolor="#FFFF99"><?php echo $row_notas['clei']; ?></td>
<td bgcolor="#FFFF99"><?php echo $row_notas['periodo']; ?></td>
<td><?php echo $row_notas['evaluacion']; ?></td>
<td><?php echo $row_notas['guias']; ?></td>
<td><?php echo $row_notas['asistencia']; ?></td>
<td><?php echo $row_notas['cualitativa']; ?></td>
<td><?php if ($final<3){
?> <font color="#FF0000"> <b> <?php echo $final; ?></b> </font> <?php
}
else
 
{
 
echo $final;
 
}
 
?></td>
<td><a href="modifica_notas.php?codigo=<?php echo $row_notas['codigo_estudiante'];
 
$var += $final;
 
?>"><img src="images/Note14.ico" /></a></td>
 
</tr>
<?php } while ($row_notas = mysql_fetch_assoc($notas)); ?>
</table>
<p><?php
 
$var2= $var / $totalRows_notas;
 
 
 
if ($var2<3){
?> <font color="#FF0000"> <b> <?php echo "Nota Final". " " .number_format($var2,2,".",","); 
?></b> </font>
 
<?php
}
else
 
{
 
echo "Nota Final". " " .number_format($var2,2,".",",");
 
 
}
 
 
 
 
?></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table width="612" height="33" border="0" align="left">
<tr>
<td width="301">Secretaria </td>
<td width="301" align="right"> Directora</td>
</tr>
</table>
<p>&nbsp;</p>
<p>
<?php } ?>
</p>
</div>
<div class="footer">
<p>Todos los derechos reservados colegio sedi 2013</p>
<!-- end .footer --></div>
<!-- end .container --></div>
</body>
</html>
<?php
mysql_free_result($notas);
?>
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
Imágen de perfil de xve

crear consulta para reporte de notas php

Publicado por xve (5519 intervenciones) el 03/05/2014 10:58:20
Hola Guillermo, segun veo en las imagenes, es tema de cambiar textos y eliminar unas columnas, no?

Seguir tu código sin estar bien tabulado es muy difícil de poder ayudarte.
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

crear consulta para reporte de notas php

Publicado por guillermo (4 intervenciones) el 03/05/2014 20:10:33
agradezco el que miraras mi pregunta, lo que yo quiero es crear una consulta.

yo hice una consulta a la base de datos donde envío un $_GET[codigo] le digo que si el campo código es igual al campo código_estudiante de la tabla notas me muestre los campos [materia] - [codigo_estudiante] - [clei] - [periodo] - [evaluacion] -[guias] - [asistencia] - [cualitativa ]-[final] y le creo repetir region para todos los campos. hasta aquí me funciona correcto y es el código que muestro. la cuestión es que en el resultado me aparecen en el campo periodo todos los periodos ejempl

materia ___ clei ___ codigo ___ periodo___ nota1 ___nota2 ___nota3___ nota4___ final
matematica cleiIII 14569856 ___ periodo 01 nota1 ___ nota2 ___ nota3___ nota4 ___final
matematica cleiIII 14569856 ___ periodo 02 nota1 ___nota2 ___ nota3 ___nota4 ___final
matematica cleiIII 14569856 ___ periodo 03 nota1 ___ nota2 ___ nota3 ___nota4 ___final

y la consulta que necesito es envío un $_GET[codigo] le digo que si el campo código es igual al campo código_estudiante de la tabla notas me muestre los campos [materia] - [codigo_estudiante] - [periodo] - -[final] y le creo repetir region para todos los campo hasta ahy lo hago bien pero yo quiero que solo aparezca matematica una vez y al frente la nota final de todos los periodos ejemplo

materia ______codigo _____periodo1___ periodo2___ periodo3
matematica___14569856___ final ___ ___ final ___ ___ final
quimica______14569856___ final ___ ___ final ___ ___ final
fisica _______ 14569856___ final ___ ___ final ___ ___ final

espero me entiendan lo que busco ..... envio de nuevo el codigo tal cual esta en dreamweaver

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
<?php require_once('Connections/notas.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Libreta</title>
<?php
 
$var=0;
 
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }
 
  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
 
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
 
$colname_notas = "-1";
if (isset($_GET['codigo'])) {
  $colname_notas = $_GET['codigo'];
}
mysql_select_db($database_notas, $notas);
$query_notas = sprintf("SELECT * FROM notas WHERE codigo_estudiante = %s", GetSQLValueString($colname_notas, "int"));
$notas = mysql_query($query_notas, $notas) or die(mysql_error());
$row_notas = mysql_fetch_assoc($notas);
$totalRows_notas = mysql_num_rows($notas);
 session_start(); ?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Notas</title>
<style type="text/css">
<!--
body {
	font: 100%/1.4 Verdana, Arial, Helvetica, sans-serif;
	background: #42413C;
	margin: 0;
	padding: 0;
	color: #000;
	margin-left: 0px;
	background-color: #FFF;
}

</head>

<body>

  <div class="content">
  
    <p><?php
	
	
	
	  $nombre=$_GET['nombre'];
  $apellido=$_GET['apellidos'];
  $clei=$_GET['clei'];
	
	
	    if(empty($_SESSION['usuario_nombre'])) { // comprobamos que las variables de sesión estén vacías   
		
		   echo "Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />"; } else     {
	?>
    Usuario: <a href="perfil.php?id=<?=$_SESSION['usuario_id']?>"><strong><?=$_SESSION['usuario_nombre']?></strong></a> <a href="javascript:window.print()">Imprimir esta página</a></p>
    <form id="form1" name="form1" method="get" action="ver_notas.php"  >
      <label for="atras"></label>
      <input name="clei" OnFocus="this.blur()" type="text" id="atras" value="<?php echo $clei; ?>" size="7" />
<input type="submit" name="enviar" id="volver" value="&lt;&lt;" />
    </form>
<p>&nbsp;</p>
<p>Boletin de Notas
      <?php     
  

  
  echo $nombre;
  echo $apellido; ?> <br> <?php
  
  date_default_timezone_set('UTC');
  echo date ("M-d-Y");
  
  
  
   ?><a href="javascript:window.print()"></a></p>
<table border="0" align="center">
  <tr class="d">
    <td bgcolor="#0000FF">Materia</td>
    <td bgcolor="#0000FF">Clei</td>
    <td bgcolor="#0000FF">Periodo</td>
    <td bgcolor="#0000FF">Evaluacion 35%</td>
    <td bgcolor="#0000FF">Guias 35%</td>
    <td bgcolor="#0000FF">Asistencia 25%</td>
    <td bgcolor="#0000FF">Cualitativa 5%</td>
    <td bgcolor="#0000FF">Final 100%</td>
    <td bgcolor="#0000FF">&nbsp;</td>
  </tr>
  <?php do { ?>
  
  
  <?php $final=$row_notas['evaluacion']*35/100+$row_notas['guias']*35/100+$row_notas['asistencia']*25/100+$row_notas['cualitativa']*5/100; ?>
  
    <tr align="center">
      <td bgcolor="#FFFF99"><?php echo $row_notas['materia']; ?></td>
      <td bgcolor="#FFFF99"><?php echo $row_notas['clei']; ?></td>
      <td bgcolor="#FFFF99"><?php echo $row_notas['periodo']; ?></td>
      <td><?php echo $row_notas['evaluacion']; ?></td>
      <td><?php echo $row_notas['guias']; ?></td>
      <td><?php echo $row_notas['asistencia']; ?></td>
      <td><?php echo $row_notas['cualitativa']; ?></td>
      <td><?php if ($final<3){
         ?> <font color="#FF0000"> <b> <?php echo $final; ?></b> </font> <?php
		  }
	  else
      
	{
    
    echo $final;
    
    }  
	  
	  ?></td>
      <td><a href="modifica_notas.php?codigo=<?php echo $row_notas['codigo_estudiante']; 
	  
	  	$var += $final;

	  ?>"><img src="images/Note14.ico" /></a></td>
      
    </tr>
    <?php } while ($row_notas = mysql_fetch_assoc($notas)); ?>
</table>
  <p><?php 	  
	 
	 $var2= $var / $totalRows_notas;
	 
	 
	
	if ($var2<3){
         ?> <font color="#FF0000"> <b> <?php 	echo "Nota Final". "  " .number_format($var2,2,".",","); 
 ?></b> </font> 
        
        <?php 
		  }
	  else
      
	{
    
   	echo "Nota Final". "  " .number_format($var2,2,".",","); 

    
    }  
	
	
	
	
	?></p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <table width="612" height="33" border="0" align="left">
    <tr>
      <td width="301">Secretaria </td>
      <td width="301" align="right">         Directora</td>
    </tr>
  </table>
<p>&nbsp;</p>
<p>
  <?php } ?>
</p>
  </div>
  <div class="footer">
    <p></p>
    <!-- end .footer -->/div>
  <!-- end .container -->t;/div>
</body>
</html>
<?php
mysql_free_result($notas);
?>
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
Imágen de perfil de Vainas

crear consulta para reporte de notas php

Publicado por Vainas (254 intervenciones) el 05/05/2014 02:28:49
Buenas:

Puedo entender que el problema se puede resolver haciendo una consulta SQL un poco mas complicada (subconsulta quizás).

No estoy muy seguro si se hace de esta forma (no lo he probado), pero se me ocurre algo asi:

1
2
SELECT materia, codigo, periodo1 AS(SELECT final FROM notas WHERE periodo = n.periodo ), periodo2, periodo3
FROM n.notas WHERE codigo = "codigoX";

Algo parecido para calcular periodo2 y periodo3.

Alguien puede corregir un poco si me estoy equivocando que pueda ser de este modo?.

La otra forma seria mediante PHP claro, solo habría que ir recorriendo el resultado de la consulta y usar condicionales (o quizás algun otro FOR).

Saludos.
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

crear consulta para reporte de notas php

Publicado por guillermo (4 intervenciones) el 05/05/2014 03:54:33
agradezco su pronta respuesta pero en mi tabla solo tengo estos campos [materia] - [codigo_estudiante] - [clei] - [periodo] - [evaluacion] -[guias] - [asistencia] - [cualitativa ]-[final].


y periodo1, periodo 2, periodo 3, periodo 4 aparecen como registro dentro del campo [periodo]

entonces yo creo una tabla de 5 columnas donde quiero me aparezca la materia en la primer columna y si es periodo 1 apare esca en la columna 3 y si es periodo 2 aparezca en la columna 4 y si es periodo 3 aparezca en la columna 5 espero me haya explicado bien.

1
2
3
4
5
6
7
8
9
<table width="359" border="1">
  <tr>
    <td width="48">materia </td>
    <td width="41">codigo</td>
    <td width="71">periodo 01 </td>
    <td width="93">periodo 02</td>
    <td width="72">periodo03</td>
  </tr>
</table>
quedando así...
materia ______codigo _____periodo1___ periodo2___ periodo3
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
Imágen de perfil de Vainas

crear consulta para reporte de notas php

Publicado por Vainas (254 intervenciones) el 05/05/2014 12:02:35
Buenas de nuevo:

Yo creo haber entendido lo que quieres ya. Tambien entiendo que periodo1, periodo2, periodo3 no existe en tu tabla. Lo que queria que vieras es que se puede crear una subconsulta de SQL para realizar lo que quieres.

Tu consulta es una consulta basica, donde se extraen los datos de un usuario en concreto:

1
SELECT * FROM notas WHERE codigo_estudiante = "Aqui el codigo del estudiante";

Luego con php vas imprimiendo linea a linea rellenando una tabla.

La consulta que yo te propongo (que tiene errores por lo que veo ahora) plantea calcular unas columnas para devolver lo que quieres. Te recomiendo que plantees esto en el foro de SQL a ver si alguien te da solucion.

Otra cosa mas: Igual seria conveniente de que la tabla notas llevara alguna clave primaria (primary key).

Saludos.

Edito: Sigo sin saber si la consulta asi puede llegar a valer pero la dejo aqui por si la quieres usar para preguntar en el foro de SQL:

1
2
3
4
SELECT materia, codigo, (SELECT final FROM notas WHERE materia = n.materia AND codigo = n.codigo AND
 periodo = "Periodo 01" )AS periodo1, (...)AS periodo2, (...)AS periodo3
FROM notas n WHERE codigo = "codigoX"
GROUP BY materia;
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
Imágen de perfil de Vainas

crear consulta para reporte de notas php

Publicado por Vainas (254 intervenciones) el 05/05/2014 12:56:31
Mira a ver si te funciona esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!doctype html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Demo</title>
</head>
<body>
	<?php
	//Conecta con mysql
	//$conexion_notas = mysql_connect(...);
	//Selecciona la bbdd
	$database_notas = "nombre de la bbdd";
	mysql_select_db($database_notas, $conexion_notas);
	//Creamos la consulta
	// Prueba con el codigo de algun estudiante con cod_estudiante = "xxxx"
	$query_notas = "SELECT materia, cod_estudiante, (SELECT final
	FROM notas WHERE materia = n.materia AND cod_estudiante = n.cod_estudiante AND periodo =  'Periodo 01')AS periodo1 FROM notas n WHERE cod_estudiante = '2238998' GROUP BY materia;";
	//Ejecutamos la consulta
	$result = mysql_query($query_notas, $conexion_notas) or die(mysql_error());
	//Si todo ha ido bien imprimimos la tabla
	?>
<table border="0" align="center">
	<tr>
		<td >Materia</td>
		<td >Codigo Estudiante</td>
		<td >Periodo 1</td>
	</tr>
<?php while($row_notas = mysql_fetch_assoc($result)){ ?>
	<tr>
		<td ><?php echo $row_notas['materia'] ?></td>
		<td ><?php echo $row_notas['cod_estudiante'] ?></td>
		<td ><?php echo $row_notas['periodo1'] ?></td>
	</tr>
<?php } ?>
</table>
<?php
//Cierra la conexion a la bbdd
//mysql_close($conexion_notas);
?>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

crear consulta para reporte de notas php

Publicado por guillermo guillermoandresvalencia@gmail.com (4 intervenciones) el 05/05/2014 21:07:42
estoy super contento y muy agradecido por la ayuda que me brindaste me sirvió muchísimo y espero esto también pueda ayudar a muchos mas te ganaste como 1000 puntos
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