Programación php
Email: Password:


¡Regístrate gratis! | ¿Has perdido tu password?

Home
Blog

En él que podrás informarte de todas las noticias relacionadas con el posicionamiento de páginas web.

Clica aquí para Entrar



Foro de programación en PHP

Responder el mensaje

introducir datos en la base de datos MySql

Autor: yair
Publicado: 08-4-2008 05:03 PM
mi problema es el siguiente tengo una tabla llamada grupos entonces creo un arreglo donde creo dependiendo del numero de alumnos de cada grupo una caja de texto que contiene bueno lo que me interesa es el campo calificacion el chiste de esto es que por ejemplo si tengo un alumno solo crea un campo con un alumno y puedo introducir la calificacion y si lo hace esta bien pero si tengo dos o mas alumnos solo me introduce el ultimo alumno de la lista y los demas los deja en blanco
bueno aqui pongo el codigo a ver si le entienden y me pueden hechar la mano
$tabla='grupos';
$result=mysql_query("SELECT nom_materias, clave_materia, periodo_escolar, clave_maestro FROM $tabla Where (clave_materia='$clave_materia'&&periodo_escolar='$periodo_escolar')");
$row=mysql_fetch_row($result);
$resulta=mysql_query("SELECT nom_alumno,calificacion FROM $tabla Where (clave_materia='$clave_materia'&&periodo_escolar='$periodo_escolar')");
echo "<form action ='buscagrupocalificacion1-3.php' method='post'>";
echo "<br>";
echo "<table align=center border=2>";
echo '<td align=center>Nombre de la materia</td>';
echo '<td align=center>Clave de la materia</td>';
echo '<td align=center>Periodo escolar</td>';
echo '<td align=center>Clave maestro</td>';

echo "<tr>";

echo "
<td align=center><input type=\"text\" readonly name=\"nom_materias\" value=\"$row[0]\" size=\"40\"></td>
<td align=center><input type=\"text\" name=\"clave_materia\" value=\"$row[1]\"></td>
<td align=center><input type=\"text\" name=\"periodo_escolar\" value=\"$row[2]\"></td>
<td align=center><input type=\"text\" readonly name=\"clave_maestro\" value=\"$row[3]\"></td>
";
}
echo "</table>";
# CREAMOS UNA CABECERA DE UNA TABLA (codigo HTML)
echo "<br>";
echo "<br>";
echo "<strong>LISTA DE ALUMNOS</strong>";
echo "<br>";
echo "<br>";
echo "<table align=center border=2>";
echo '<td align=center>Nombre alumnos</td>';
echo '<td align=center>Calificacion actual</td>';

while ($registro = mysql_fetch_row($resulta))
{
# insertamos un salto de línea en la tabla HTML
echo "<tr>";
# establecemos el bucle de lectura del ARRAY
# con los resultados de cada LINEA
# y encerramos cada valor en etiquetas <td></td>
# para que aparezcan en celdas distintas de la tabla
echo "
<td align=center><input type=\"text\" name=\"nom_alumno\" value=\"$registro[0]\" size=\"40\"></td>
<td align=center><input type=\"text\" name=\"calificacion\" value=\"$registro[1]\"></td>";
}

echo "</table>";
echo "<input type='submit' value='ENVIAR'>";
echo "</form>";
# cerramos la conexion
mysql_close();
?>


y en esta parte es donde ingreso los datos a la base de datos
<?
//conexion con la base de datos test
require ("abre_conexion.php");
//$db_link=mysql_connect("localhost","root","vertrigo");
//esta es la base de datos con la que vamos a trabajar
//mysql_select_db("itapizaco");
//ejecucion de la sentencia sql

$sSQL="Update grupos Set calificacion ='$calificacion' where nom_alumno ='$nom_alumno'&& clave_materia='$clave_materia'&&periodo_escolar='$periodo_escolar'";
mysql_query($sSQL);


?>
espero que alguien me pueda ayudar
Autor: Natxo
Publicado: 10-4-2008 04:52 AM
Hola yair, tengo varias cosas que no me encajan. Lo primero son los <tr> de la tabla que me da la sensación de que faltan.

Lo segundo es que si creas un while con <input type=\"text\" name=\"nom_alumno\" value=\"$registro[0]\"... estás creando cajas de texto con el mismo nombre para cada alumno, por tanto el último alumno es el que tendrá el valor guardado.

Una opción es declarar el input como un array name=\"nom_alumno[]\"
Y a la hora de recogerlo y hacer la insert tratarlo como tal.

Otra más casera es utilizar un contador en el while y declararlo como name=\"nom_alumno".$contador."\"
Esto te creará cajas de texto con nombres sucesivos nom_alumno0, nom_alumno1...

Evidentemente también lo debes aplicar en la calificación.