PHP - altas simultaneas

 
Vista:

altas simultaneas

Publicado por gabriela (4 intervenciones) el 20/08/2008 21:11:33
hola
alguien me podria ayudar con un poco de php
se supone que se tienen que dar de alta las calificaciones de los alumnos de un grupo.
he creado un reporte donde se muestra todo el grupo y en ese se tienen que agregar las calificaciones.
pero al darle enviar solo muestra el ultimo registro, y se repiten los datos para todos los registros que estan en la bd.
el codigo que utilizo es:

<?php
$idgrupo=$_POST['txtidgrupo'];
$idmes = $_POST['txtidmes'];
$idaño=$_POST['txtidaño'];
$idmateria=$_POST['txtidmateria'];
$idalumno = $_POST['txtidalumno'];
$idprofesor =$_POST['txtidprofesor'];

$cal1 = isset($_POST["txtc1"])? $_POST["txtc1"]: '';
$fal1 = isset($_POST["txtf1"])? $_POST["txtf1"]: '';
$cal2 = isset($_POST["txtc2"])? $_POST["txtc2"]: '';
$fal2 = isset($_POST["txtf2"])? $_POST["txtf2"]: '';
$cal3 = isset($_POST["txtc3"])? $_POST["txtc3"]: '';
$fal3 = isset($_POST["txtf3"])? $_POST["txtf3"]: '';
include ("conexion_bd.php");
$array_persona = array (0 => array($cal1, $fal1, $cal2, $fal2, $cal3, $fal3, $idgrupo, $idmateria, $idalumno, $idprofesor, $idaño, $idmes));
echo $array_persona;

//Ahora preparamos el insert
$sql = " insert into tb_calificacion (id_calificacion, parcial1, faltas_1, parcial2, faltas_2, parcial3, faltas_3, id_grupo, id_materia, id_alumno, id_profesor, id_mes, id_año) values ";

//Contamos el numero de registros

$n_registros = count($array_persona);
echo $n_registros;

$indice = 1;

//Recorremos el array

foreach($array_persona as $persona){

$c1 = $persona[0];
$f1 = $persona[1];
$c2 = $persona[2];
$f2 = $persona[3];
$c3 = $persona[4];
$f3 = $persona[5];
$grup = $persona[6];
$mat = $persona[7];
$al = $persona[8];
$prof = $persona[9];
$month = $persona[10];
$year = $persona[11];

//Creamos el cuerpo de los valores

$sql .= " ( $c1 , $f1, $c2, $f2, $c3, $f3, $grup, $mat, $al, $prof, $month, $year) ";
//echo $sql2;

//Y ubicamos la coma ya que el registro final no lleva coma

if($indice < $n_registros){ $sql .=" , "; }

$indice ++;
echo $indice;

}//foreach

$sql .= $sql;
echo $sql;
$res= mysql_query($sql);
if ($res){
echo "Alta exitosa";
}
else{
echo "Error en alta";
}
?>

pero me marca Error en alta.

y he probado con otro pero sucede exactamente lo mismo:

<?php
$cal1 = isset($_POST["txtc1"])? $_POST["txtc1"]: '';
$fal1 = isset($_POST["txtf1"])? $_POST["txtf1"]: '';
$cal2 = isset($_POST["txtc2"])? $_POST["txtc2"]: '';
$fal2 = isset($_POST["txtf2"])? $_POST["txtf2"]: '';
$cal3 = isset($_POST["txtc3"])? $_POST["txtc3"]: '';
$fal3 = isset($_POST["txtf3"])? $_POST["txtf3"]: '';
// Check if button name "Submit" is active, do this
if($Submit){
for($i=0;$i<$count;$i++){
$sql1="INSERT INTO tb_calificacion (id_calificacion, parcial1, faltas_1, parcial2, faltas_2, parcial3, faltas_3, id_grupo, id_materia, id_alumno, id_profesor, id_mes, id_año) VALUES ('', $c1[$i] , $f1[$i], $c2[$i], $f2[$i], $c3[$i], $f3[$i], $idgrupo[$i], $idmateria[$i], $idalumno[$i], $idprofesor[$i], $idmes[$i], $idaño[$i])";
echo $sql1;
$result1=mysql_query($sql1);
}
}

if($result1){
header("location:altacalifenc.php");
}
mysql_close();
?>
con este codigo me marca

Notice: Undefined variable: Submit

Notice: Undefined variable: result1

si alguien me puede ayudar gracias.
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

RE:altas simultaneas

Publicado por Pineapple (183 intervenciones) el 20/08/2008 22:47:22
Haber haber,no entiendo o estoy medio burro, lo segundo! =P tu tienes me imagino una tabla (html) con varios campos y en ellos vas registrando las calificaciones y estas se guardan, asi lo imagino, pero por ejemplo aki:

$idgrupo=$_POST['txtidgrupo'];
$idmes = $_POST['txtidmes'];
$idaño=$_POST['txtidaño'];
$idmateria=$_POST['txtidmateria'];
$idalumno = $_POST['txtidalumno'];
$idprofesor =$_POST['txtidprofesor'];

$cal1 = isset($_POST["txtc1"])? $_POST["txtc1"]: '';
$fal1 = isset($_POST["txtf1"])? $_POST["txtf1"]: '';
$cal2 = isset($_POST["txtc2"])? $_POST["txtc2"]: '';
$fal2 = isset($_POST["txtf2"])? $_POST["txtf2"]: '';
$cal3 = isset($_POST["txtc3"])? $_POST["txtc3"]: '';
$fal3 = isset($_POST["txtf3"])? $_POST["txtf3"]: '';

Recibes lo de un alumno, osea que solo traes un valor, y los de los otros alumnos?

y aqui:

$c1 = $persona[0];
$f1 = $persona[1];
$c2 = $persona[2];
$f2 = $persona[3];
$c3 = $persona[4];
$f3 = $persona[5];
$grup = $persona[6];
$mat = $persona[7];
$al = $persona[8];
$prof = $persona[9];
$month = $persona[10];
$year = $persona[11];

en tu array esta asignando a la persona 0 la calificacion , ala 1 las faltas, mmm osea no entiendo bien, en este caso creo que mejor harias un array con los campos no? y los ibas recorriendo e insertando, asi de que

txtc1[0]
txtc1[1]
txtc1[2].... etc. me explico

O corrigeme, =)
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

RE:altas simultaneas

Publicado por Pineapple (183 intervenciones) el 20/08/2008 22:47:33
Haber haber,no entiendo o estoy medio burro, lo segundo! =P tu tienes me imagino una tabla (html) con varios campos y en ellos vas registrando las calificaciones y estas se guardan, asi lo imagino, pero por ejemplo aki:

$idgrupo=$_POST['txtidgrupo'];
$idmes = $_POST['txtidmes'];
$idaño=$_POST['txtidaño'];
$idmateria=$_POST['txtidmateria'];
$idalumno = $_POST['txtidalumno'];
$idprofesor =$_POST['txtidprofesor'];

$cal1 = isset($_POST["txtc1"])? $_POST["txtc1"]: '';
$fal1 = isset($_POST["txtf1"])? $_POST["txtf1"]: '';
$cal2 = isset($_POST["txtc2"])? $_POST["txtc2"]: '';
$fal2 = isset($_POST["txtf2"])? $_POST["txtf2"]: '';
$cal3 = isset($_POST["txtc3"])? $_POST["txtc3"]: '';
$fal3 = isset($_POST["txtf3"])? $_POST["txtf3"]: '';

Recibes lo de un alumno, osea que solo traes un valor, y los de los otros alumnos?

y aqui:

$c1 = $persona[0];
$f1 = $persona[1];
$c2 = $persona[2];
$f2 = $persona[3];
$c3 = $persona[4];
$f3 = $persona[5];
$grup = $persona[6];
$mat = $persona[7];
$al = $persona[8];
$prof = $persona[9];
$month = $persona[10];
$year = $persona[11];

en tu array esta asignando a la persona 0 la calificacion , ala 1 las faltas, mmm osea no entiendo bien, en este caso creo que mejor harias un array con los campos no? y los ibas recorriendo e insertando, asi de que

txtc1[0]
txtc1[1]
txtc1[2].... etc. me explico

O corrigeme, =)
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

RE:altas simultaneas

Publicado por gabriela (4 intervenciones) el 20/08/2008 23:18:53
si, tengo una tabla donde se realiza la consulta:

<?php
include ("conexion_bd.php");

$grupo=$_POST['txtgrupo'];
$mes = $_POST['txtmes'];
$año=$_POST['txtaño'];
$materia=$_POST['txtmateria'];
$parcial = $_POST['txtparcial'];

$query = "SELECT tb_alumno.*,tb_cuatrimestre.*,tb_año.*, tb_area.*, tb_grupo.*, tb_materia.*
FROM tb_alumno, tb_cuatrimestre, tb_año, tb_area, tb_grupo, tb_materia
WHERE tb_alumno.id_mes = tb_cuatrimestre.id_mes AND tb_año.id_año = tb_alumno.id_año AND tb_grupo.id_grupo = tb_alumno.id_grupo
AND tb_grupo.id_area = tb_area.id_area
AND tb_alumno.id_grupo = $grupo AND tb_alumno.id_mes = $mes AND tb_alumno.id_año = $año AND tb_materia.id_materia = $materia ORDER BY tb_alumno.ap_paterno ASC";

$consulta = mysql_query($query);
$num = mysql_num_rows ($consulta);

if ($num>0){
while ($registro = mysql_fetch_array($consulta)) {
?>
<tr>
<td><?php echo $registro['matricula']; ?></td>
<td><?php echo $registro ['ap_paterno']; ?> <?php echo $registro ['ap_materno']; ?> <?php echo $registro ['nombre']; ?></td>
<td><label>
<input name="txtc1[]" type="text" id="txtc1" onkeypress="solonum()" value="0" size="5" maxlength="4"/>
</label></td>
<td><label>
<input name="txtf1[]" type="text" id="txtf1" onkeypress="solonum()" value="0" size="5" maxlength="2" />
</label></td>
<td><input name="txtc2[]" type="text" id="txtc2" onkeypress="solonum()" value="0" size="5" maxlength="4"/></td>
<td><input name="txtf2[]" type="text" id="txtf2" onkeypress="solonum()" value="0" size="5" maxlength="2" /></td>
<td><input name="txtc3[]" type="text" id="txtc3" onkeypress="solonum()" value="0" size="5" maxlength="4"/></td>
<td><input name="txtf3[]" type="text" id="txtf3" onkeypress="solonum()" value="0" size="5" maxlength="2" /></td>
</tr>


se supone que muestra todos los alumnos registrados en 'x' grupo, mes, año y demas segun lo que el usuario seleccione.
en cada registro se muestran las cajas de texto correspondientes para ingresar la calificacion y faltas.

al darle click en enviar manda a otro formulario que es (donde se supone) que tiene que hacer la insercion:

lo que se envia a la base de datos tiene que ser:

INSERT INTO tb_calificacion (id_calificacion, parcial1, faltas_1, parcial2, faltas_2, parcial3, faltas_3, id_grupo, id_materia, id_alumno, id_profesor, id_mes, id_año)

por eso es que recibo el $idgrupo, $idmes, $idaño etc.

el array recibe estas variables:
$array_persona = array (0 => array($cal1, $fal1, $cal2, $fal2, $cal3, $fal3, $idgrupo, $idmateria, $idalumno, $idprofesor, $idaño, $idmes));

y el insert:

$sql = " insert into tb_calificacion (id_calificacion, parcial1, faltas_1, parcial2, faltas_2, parcial3, faltas_3, id_grupo, id_materia, id_alumno, id_profesor, id_mes, id_año) values ";

el array en la posicion [0] recibe $cal1 (parcial1), en la posicion [1] recibe $fal1(faltas_1) y asi sucesivamente.

y por ultimo en el values

$sql .= " ( $c1 , $f1, $c2, $f2, $c3, $f3, $grup, $mat, $al, $prof, $month, $year) ";

espero haber sido un poco mas explicita y si me puedes ayudar muchas gracias.
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

RE:altas simultaneas

Publicado por Pineapple (183 intervenciones) el 21/08/2008 00:22:17
Te explicaste bastante bien, espero hacer lo mismo yo =P

Haber primero ke nada, 2 preguntas, si te muestra bien lo que pides? (Antes de insertar)

Y otra con tu codigo, donde le dices al array que se aumente, ahi solo estas declarandolos, mira cojo un poco de tu codigo y hago esto

<?php for ($i=0;$i<7;$i++) { ?>
<tr>
<td><label>
<input name="txtc1[]" type="text" id="txtc1" onkeypress="solonum()" value="0" size="5" maxlength="4"/>
</label></td>
<td><label>
<input name="txtf1[]" type="text" id="txtf1" onkeypress="solonum()" value="0" size="5" maxlength="2" />
</label></td>
<td><input name="txtc2[]" type="text" id="txtc2" onkeypress="solonum()" value="0" size="5" maxlength="4"/></td>
<td><input name="txtf2[]" type="text" id="txtf2" onkeypress="solonum()" value="0" size="5" maxlength="2" /></td>
<td><input name="txtc3[]" type="text" id="txtc3" onkeypress="solonum()" value="0" size="5" maxlength="4"/></td>
<td><input name="txtf3[]" type="text" id="txtf3" onkeypress="solonum()" value="0" size="5" maxlength="2" /></td>
</tr>
<?php } ?>

y en tu explorador ponle ver codigo y veras que tu array no aumenta, me explico?

Dime eso y seguimos vale?
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

Perdon... no habia entendido...

Publicado por Pineapple (183 intervenciones) el 21/08/2008 00:28:21
Ya se, no habia entendido bien, ahora dime recuperas tus arrays con algo asi:

for( $variable= 0; $variable < 3; $variable++ )
{
echo($_POST["Campo"][$variable]);
}
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

RE:Perdon... no habia entendido...

Publicado por gabriela (4 intervenciones) el 21/08/2008 20:15:15
para la consulta utilizo un while

con el que segun estoy recuperando los datos es con un foreach que me repite los datos del ultimo registro para cada alumno.

intente utilizar un for dentro del while pero lo que me hace este es que manda los datos al iniciar la consulta y marca errores.
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

RE:Perdon... no habia entendido...

Publicado por Pineapple (183 intervenciones) el 21/08/2008 21:22:46
Haber disculpa tantas peticiones pero esque estoy entendiendo tu logica, y no tengo ahorita una maquina para correr php, me podrias pegar el archivo donde haces tu inserccion porfavor...
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

insercion

Publicado por gabriela (4 intervenciones) el 22/08/2008 21:04:14
<?php
$idgrupo=$_POST['txtidgrupo'];
$idmes = $_POST['txtidmes'];
$idaño=$_POST['txtidaño'];
$idmateria=$_POST['txtidmateria'];
$idalumno = $_POST['txtidalumno'];
$idprofesor =$_POST['txtidprofesor'];

$cal1 = isset($_POST["txtc1"])? $_POST["txtc1"]: '';
$fal1 = isset($_POST["txtf1"])? $_POST["txtf1"]: '';
$cal2 = isset($_POST["txtc2"])? $_POST["txtc2"]: '';
$fal2 = isset($_POST["txtf2"])? $_POST["txtf2"]: '';
$cal3 = isset($_POST["txtc3"])? $_POST["txtc3"]: '';
$fal3 = isset($_POST["txtf3"])? $_POST["txtf3"]: '';
include ("conexion_bd.php");
$array_persona = array (0 => array($cal1, $fal1, $cal2, $fal2, $cal3, $fal3, $idgrupo, $idmateria, $idalumno, $idprofesor, $idaño, $idmes));
echo $array_persona;

//Ahora preparamos el insert
$sql = " insert into tb_calificacion (id_calificacion, parcial1, faltas_1, parcial2, faltas_2, parcial3, faltas_3, id_grupo, id_materia, id_alumno, id_profesor, id_mes, id_año) values ";

//Contamos el numero de registros

$n_registros = count($array_persona);
echo $n_registros;

$indice = 1;

//Recorremos el array

foreach($array_persona as $persona){

$c1 = $persona[0];
$f1 = $persona[1];
$c2 = $persona[2];
$f2 = $persona[3];
$c3 = $persona[4];
$f3 = $persona[5];
$grup = $persona[6];
$mat = $persona[7];
$al = $persona[8];
$prof = $persona[9];
$month = $persona[10];
$year = $persona[11];

//Creamos el cuerpo de los valores

$sql .= " ( $c1 , $f1, $c2, $f2, $c3, $f3, $grup, $mat, $al, $prof, $month, $year) ";
//echo $sql2;

//Y ubicamos la coma ya que el registro final no lleva coma

if($indice < $n_registros){ $sql .=" , "; }

$indice ++;
echo $indice;

}//foreach

$sql .= $sql;
echo $sql;
$res= mysql_query($sql);
if ($res){
echo "Alta exitosa";
}
else{
echo "Error en alta";
}
?>
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

RE:insercion

Publicado por Pineapple (183 intervenciones) el 25/08/2008 20:20:29
En las lineas....

foreach($array_persona as $persona){

$c1 = $persona[0];
$f1 = $persona[1];
$c2 = $persona[2];
$f2 = $persona[3];
$c3 = $persona[4];
$f3 = $persona[5];
$grup = $persona[6];
$mat = $persona[7];
$al = $persona[8];
$prof = $persona[9];
$month = $persona[10];
$year = $persona[11];

//Creamos el cuerpo de los valores

$sql .= " ( $c1 , $f1, $c2, $f2, $c3, $f3, $grup, $mat, $al, $prof, $month, $year) ";
//echo $sql2;

//Y ubicamos la coma ya que el registro final no lleva coma

if($indice < $n_registros){ $sql .=" , "; }

$indice ++;
echo $indice;

}//foreach

Donde ejecutas el insert????
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