Foros del Web » Programando para Internet » PHP »

Insert ¿?multiple¿?

Estas en el tema de Insert ¿?multiple¿? en el foro de PHP en Foros del Web. Primero que nada felicitar a la gran colaboracion que de alguna y otra manera me ayudo muchisimo. Y decir que no hubiera publicado este mensaje ...
  #1 (permalink)  
Antiguo 22/05/2008, 18:01
 
Fecha de Ingreso: mayo-2008
Mensajes: 3
Antigüedad: 16 años
Puntos: 0
Insert ¿?multiple¿?

Primero que nada felicitar a la gran colaboracion que de alguna y otra manera me ayudo muchisimo. Y decir que no hubiera publicado este mensaje de no ser necesario.
Al lio, llevo ya meses haciendo una pagina en php para mi clase (con notas, calendario, noticias, etc...) el problema esta en las notas, somos 16 alumnos y cada vez que hay un examen tengo que subir las notas a una BD MySql pero de momento lo hago a mano desde PhpMyAdmin porque no encuentro manera de hacerlo con PHP. Mi idea era hacer una tabla con todos los alumnos donde por cada alumno se pone un campo y ahi su nota ( a parte de antes que nada, la fecha y la asignatura, pero solo una vez, no por cada alumno) pero mi profesor de redes me dijo que mejor y menos complicado es hacer con <option> (claro esta que no lo escribo, se hace automatico) pero ahi viene el problema, no se como hacer ahora para subir las notas con un insert, me da error. QUE ROLLO!!! xD
La pregunta del millon, ¿como lo haria con tablas? (es la forma que yo logicamente veo sencilla pero segun mi profesor es chunga de escribir) y la segun pregunta del trillon ¿que le pasa a mi codigo? Adjunto tal codigo:
Código PHP:
<?php
/*
Registro de notas para la web de Paradarum.es de momento no tiene licencia y creo que no la tendra, sera de uso publico ya que
yo me aproveche de otros documentos publicos.
*/
//variable que recibo de registrar_fecha.php y la guardo para utilizarla en cada insert
$fecha=$_POST[fecha];
//conexion a la base de datos
$link mysql_connect("localhost","nombre","pass");
//Selección de la base de datos
mysql_select_db("base_de_datos",$link);
//Sentencia sql para mostrar los nombres y los codigos
$result=mysql_query("SELECT codal,nom,ape1,ape2 FROM alumnos");
//muestro la fecha recibida desde registrar_fecha.php para comprobar que la recibi y para comprobar que esta bien
echo "Has puesto la fecha (mm-dd-aaaa) $fecha";
?>
<form action="registrar_notas.php" method="post">
<select name="registro">
<option> Seleccione </option>
<?php
//Por cada registro encontrado en la tabla me genera un <option>
while ($row mysql_fetch_array($result))
{
$nombre $row["nom"];
$ape1 $row["ape1"];
$ape2 $row["ape2"];
$codal $row["codal"];
?>
<option><?php echo "$ape1 $ape2, $nombre";?></option>
<?php
}
?>
</select>
<input type = text name=<?php echo $codal?>>
<input type=submit name=aceptar>
<?php
if (isset($_POST[aceptar]))
{
$nota=$_POST[$codal];
mysql_query("INSERT INTO notas (fechaex, nota) WHERE codal=$codalVALUES ($fecha, $nota))";
}
?>
Y la version con tablas seria la siguiente, y la pregunta seria, ¿como puedo hacer un insert en el que me escribiera en el sql todas las notas a la vez?
Código PHP:
<form action="reg_tabla.php" method="POST">
<TABLE>
<?php
//conexion a la base de datos
$link mysql_connect("localhost","nombre","pass");
//Selección de la base de datos
mysql_select_db("base_de_datos",$link);
//Sentencia sql para mostrar los nombres y los codigos
$result=mysql_query("SELECT codal,nom,ape1,ape2 FROM alumnos");
while (
$row mysql_fetch_array($result))
{
$nombre $row["nom"];
$ape1 $row["ape1"];
$ape2 $row["ape2"];
$codal $row["codal"];
?>

<tr>
<TD><?php echo "$ape1 $ape2, $nombre";?></TD>
<td><input type="text" name="<?php echo "$codal";?>" size="3"></td>
</tr>
<?php
}
?>
</TABLE>
<input type="submit" name="enviar">
<input type="reset">
</form>
La tabla sql en la que tengo que subir tiene 4 columnas (por orden de izq a derecha): codasig (codigo de la asignatura, si, la tengo con clave primaria, es lo de menos), codal (un numero por cada alumno, por orden de lista), fechaex (la fecha del examen), nota (su nota...), comentario (por si las dudas, pero no lo uso). Espero que esta info sirva para sacarme de este bache. Muchas gracias por vuestra ayuda, casi todos los dias termino por estos lares navegando.

Última edición por cristian_fd; 22/05/2008 a las 18:24
  #2 (permalink)  
Antiguo 22/05/2008, 18:23
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Insert ¿?multiple¿?

pues el option que yo vea no lleva ningun valor para ello debe poner algun valor a ingresar en el VALUE="" de cada option......
lo que va entre <option> y </option> es solo lo que se muestra :º no es igual que un textarea ;)

aprenda a usar las comillas caso
<input type=submit name=aceptar> etc... se que igual le funcionan los codigos pero aprendamos a usar las comillas dobles y las simples :º

saludos....
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 22/05/2008, 18:27
isra00
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Respuesta: Insert ¿?multiple¿?

A ver, creo que la mejor solución es que al cargar la página se listen todos los alumnos (así no hay que escribir su nombre ni buscarlo en un Option Select), y a su lado un
Código HTML:
<input name="nota[x]"> 
donde x corresponde al ID del alumno. Para recoger los datos, se recorre con
Código PHP:
foreach ($_POST["nota"] as $alumno=>$nota
y a cada iteración se inserta en la BD, la cual por cierto no parece bien estructurada.

¿Cómo tienes las tablas? Yo haría algo como:

· Alumnos (id, nombre, apellido1, apellido2)
· Asignaturas (id, nombre, profesor)
· Matriculas (id_asignatura, id_alumno)
· Examenes (id, fecha, asignatura)
· Notas (id_examen, id_alumno, nota)
· Profesores (id, nombre, apellido1, apellido2)

Saludos!
  #4 (permalink)  
Antiguo 22/05/2008, 18:36
 
Fecha de Ingreso: mayo-2008
Mensajes: 3
Antigüedad: 16 años
Puntos: 0
Respuesta: Insert ¿?multiple¿?

Cita:
Iniciado por isra00 Ver Mensaje
A ver, creo que la mejor solución es que al cargar la página se listen todos los alumnos (así no hay que escribir su nombre ni buscarlo en un Option Select), y a su lado un
Código HTML:
<input name="nota[x]"> 
donde x corresponde al ID del alumno. Para recoger los datos, se recorre con
Código PHP:
foreach ($_POST["nota"] as $alumno=>$nota
y a cada iteración se inserta en la BD, la cual por cierto no parece bien estructurada.

¿Cómo tienes las tablas? Yo haría algo como:

· Alumnos (id, nombre, apellido1, apellido2)
· Asignaturas (id, nombre, profesor)
· Matriculas (id_asignatura, id_alumno)
· Examenes (id, fecha, asignatura)
· Notas (id_examen, id_alumno, nota)
· Profesores (id, nombre, apellido1, apellido2)

Saludos!
Lo de las tablas lo tengo bien (es decir, parecido a lo que dices, con claves primarias, pero no tantas tablas, solo 3) pero este no es el caso, indagare mas por lo del foreach y lo del <input type=text name=nota[x]> no se si te has percatado que lo tengo parecido pero en vez de un nota[x] recorro la consulta y escribo por cada vez y en cada name me sale el numero del alumno. Ahora bien, ¿como seria el insert? (todavia no mire lo del foreach, si es que tiene algo que ver). Gracias por vuestra ayuda. Ah, por lo de las comillas, no estoy acostumbrado a usarlas pero yo sé que tengo que usarlas y que algun dia tendre un problema gordo por ello.
  #5 (permalink)  
Antiguo 22/05/2008, 19:31
 
Fecha de Ingreso: mayo-2008
Mensajes: 3
Antigüedad: 16 años
Puntos: 0
Respuesta: Insert ¿?multiple¿?

He aqui el resulta con el foreach(), tambien modifique el input y agregue el campo id="" no se si estara bien...:
Código PHP:
<form action="reg_tabla.php" method="POST">
<TABLE>
<?php
//conexion a la base de datos
$link mysql_connect("localhost","j.vr3ka7_clase","argentina");
//Selección de la base de datos
mysql_select_db("jvr3ka7_insti",$link);
//Sentencia sql para mostrar los nombres y los codigos
$result=mysql_query("SELECT codal,nom,ape1,ape2 FROM alumnos");
while (
$row mysql_fetch_array($result))
{
$nombre $row["nom"];
$ape1 $row["ape1"];
$ape2 $row["ape2"];
$codal $row["codal"];
?>

<tr>
<TD><?php echo "$ape1 $ape2, $nombre";?></TD>
<td><input type="text" name="insertar" id="<?php echo "$codal";?>" size="3"></td>
</tr>
<?php
}
if (isset(
$_POST[enviar]))
{
foreach (
$_POST["insertar"] as $alumno => $valor)
{
$codigo=$_POST["insertar"];
echo 
"$codigo[$alumno] => $valor";
}
}
?>
</TABLE>
<input type="submit" name="enviar">
<input type="reset">
</form>
Pero...(siempre hay peros) me da error y no se porque (la verdad es qe no termino de enternderlo y eso que lo unico que busco es que me lo muestre por pantalla (depsues adaptarlo a un insert esta chupado pero...). Gracias por la ayuda
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 00:13.