Foros del Web » Programando para Internet » PHP »

Como enviar a la base de datos informacion de un select traido de ella

Estas en el tema de Como enviar a la base de datos informacion de un select traido de ella en el foro de PHP en Foros del Web. Hola Gente del foro. Les paso a contar: Armé un Select con informacion de una tabla de la base de datos. El problema está cuando ...
  #1 (permalink)  
Antiguo 02/02/2011, 19:42
Avatar de agusong  
Fecha de Ingreso: julio-2010
Ubicación: Mendoza
Mensajes: 56
Antigüedad: 13 años, 9 meses
Puntos: 0
Como enviar a la base de datos informacion de un select traido de ella

Hola Gente del foro. Les paso a contar:
Armé un Select con informacion de una tabla de la base de datos. El problema está cuando quiero volver a enviar la selección no me la envía, me envía correctamente los datos, menos el select.

Este es el codigo del select que arme:

<?php
include "conexion.php";
$consulta = "SELECT * FROM materia";
$resultado = mysql_query($consulta, $conexion);
$num_resultados = mysql_num_rows($resultado);


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

$row = mysql_fetch_array($resultado);
echo "<option>".stripslashes ($row["nombre_materia"])."</option>";
}
?>



y este es el codigo que recibe la informacion en otra pagina y la envia a la base de datos:

if (isset($grabar)){
include "conexion.php";

$dni= $_REQUEST['dni'];
$nombre= $_REQUEST['nombre'];
$n= count($materia);
for ($i=0; $i<$n; $i++){
$materiax= "$materias[$i]";
}


$consulta = "INSERT INTO inscripciones(dni, nombre, nombre_materia) VALUE ('".$dni."','".$nombre."','".$materiax."')";
$resultado = mysql_query($consulta, $conexion);



if ($resultado){
echo mysql_affected_rows()."&nbsp; inscripci&oacute;n grabada correctamente.";
echo "<table border=1px><tr><td>DNI</td><td>NOMBRE</td><td>MATERIA</td></tr>";
echo "<tr><td>".$dni."</td><td>".$nombre."</td><td>".$materiax."</td></tr></table>";
} else {echo "Error";}


}


?>
  #2 (permalink)  
Antiguo 02/02/2011, 21:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Como enviar a la base de datos informacion de un select traido de ella

¿y donde imprimes el tag <select/>?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 03/02/2011, 11:43
Avatar de agusong  
Fecha de Ingreso: julio-2010
Ubicación: Mendoza
Mensajes: 56
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Como enviar a la base de datos informacion de un select traido de ella

perdon lo copie mal: ahi va la parte del select:
<select name="materias[]">
<?php
include "conexion.php";
$consulta = "SELECT * FROM materia";
$resultado = mysql_query($consulta, $conexion);
$num_resultados = mysql_num_rows($resultado);


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

$row = mysql_fetch_array($resultado);
echo "<option>".stripslashes ($row["nombre_materia"])."</option>";
}
?>
</select>
  #4 (permalink)  
Antiguo 03/02/2011, 12:10
 
Fecha de Ingreso: diciembre-2008
Mensajes: 190
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Como enviar a la base de datos informacion de un select traido de ella

No entiendo bien algunas cosas:

1ro: Para levantar al procesar el select falta el:
$materias = $_REQUEST['materias'];

2do Los options no tienen valor... y deberias guardar en la base por el id de la materia y no el nombre ...algo asi
<option value='$row['idmateria']'>$row['nombremat'] </option>

si igual queres guardar por el nombre, al menos pone
<option value='$row['nombremat']'>$row['nombremat'] </option>

3ro. Imagino que son varios selects iguales (digo porq pusiste un array) porq puede elegir varias materias... en tal caso en el procesar deberia ser algo asi:
(ES VALUES NO VALUE) EL insert dentro del for , sino inserta un solo valor (tenes varias maneras , podes concatenar todas la consulta o insertarlas una a una..)

Código PHP:
$materias $_REQUEST['materias'];
$ncount($materia);
for (
$i=0$i<$n$i++){
$materiax"$materias[$i]";
$consulta "INSERT INTO inscripciones(dni, nombre, nombre_materia) VALUES ('".$dni."','".$nombre."','".$materiax."')";
$resultado mysql_query($consulta$conexion);

Insisto q deberias guardar el id nada más pero depende de vos.

Saludos
  #5 (permalink)  
Antiguo 03/02/2011, 12:10
Avatar de bocho0610  
Fecha de Ingreso: enero-2010
Ubicación: <? echo "Santiago, Chile"; ?>
Mensajes: 341
Antigüedad: 14 años, 3 meses
Puntos: 26
Respuesta: Como enviar a la base de datos informacion de un select traido de ella

pagina.php
Código PHP:
Ver original
  1. <?
  2. include "conexion.php";
  3. $ssql = mysql_query("SELECT * FROM materia");
  4. ?>
  5.  
  6. <select name="materias[]">
  7. <?while($row=mysql_fetch_array($ssql)){?>
  8. <option value=''><?echo $row['nombre']?></option>
  9. <?}?>
  10. </select>


pagina2.php
Código PHP:
Ver original
  1. $materias = $_POST['materias'];
  2. for($i=0;$i<count($materias);$i++){
  3. $ssql=mysql_query("insert into tabla values('".$materias[$i]."')");
  4. }


creo que algo asi es, es solo un ejemplo, no me crucifiques.
__________________
Sigueme en Twitter!
Septimoarte.cl <-- Un mundo en cine.
  #6 (permalink)  
Antiguo 03/02/2011, 12:14
 
Fecha de Ingreso: diciembre-2008
Mensajes: 190
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Como enviar a la base de datos informacion de un select traido de ella

Igual guardar 10 veces el registro del alumno por cada materia q se inscribe es un error...
deberias tener una tabla que los relacione:
materiasxAlumno con campos alumnoid y materiaid
...
  #7 (permalink)  
Antiguo 07/02/2011, 17:59
Avatar de agusong  
Fecha de Ingreso: julio-2010
Ubicación: Mendoza
Mensajes: 56
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Como enviar a la base de datos informacion de un select traido de ella

Tienes razón turfeano voy a tener que hacer una consulta que relacione las dos tablas.
Muchas Gracias por todas las respuestas! Voy a empezar a probar sus respuestas y después comento que tal fue...

Etiquetas: enviar, informacion, select
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 02:11.