Foros del Web » Programando para Internet » PHP »

Problema al mandar el valor de un select

Estas en el tema de Problema al mandar el valor de un select en el foro de PHP en Foros del Web. Hola que tal amigos antes que nada soy nuevo en esto. El problema que se me presenta es que cargo un select de una base ...
  #1 (permalink)  
Antiguo 18/01/2011, 20:11
 
Fecha de Ingreso: enero-2011
Ubicación: Puerto Vallarta, Jal
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Problema al mandar el valor de un select

Hola que tal amigos antes que nada soy nuevo en esto.

El problema que se me presenta es que cargo un select de una base de datos (mysql), bueno el problema no es ese, sino que al querer mandar el cambo seleccionado a la base de datos me marca el siguiente error.

Out of range value adjusted for column 'espId' at row 1

codigo donde lleno el select de la base de datos.

<?php

$link=mysql_connect("localhost","root","1234");
mysql_select_db("bdresidencias",$link);
?>
<select name= cbespecialidades>;

<?php
$result = mysql_query("SELECT * FROM tblespecialidad");


while ($row=mysql_fetch_array($result,MYSQL_ASSOC))
{
$id_tipo=$row['esp_Id'];
$descripcion=$row['esp_Nombre'];
echo'<option value="'.$id_tipo.'">'.$descripcion.'</option>';
}
echo '</select>'

?>


aqui es donde quiero mandar el valor select.

<?php

session_start();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','root','1234')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('bdresidencias')or die ('Error al seleccionar la Base de Datos: '.mysql_error());

$nomina = $_POST['txtnomina'];
$nombre = $_POST['txtNombre'];
$a_paterno = $_POST['txtapepaterno'];
$a_materno = $_POST['txtapematerno'];
$id_especialidad = $_POST['cbespecialidades'];
$contra = $_POST['txtcontra'];


$result = 'INSERT INTO tbldocentes(docNo_nomina, doc_Nombre, doc_apepaterno, doc_apematerno, espId, doc_contraseña)
VALUES(\''.$nomina.'\', \''.$nombre.'\', \''.$a_paterno.'\', \''.$a_materno.'\',\''.$id_especialidad.'\',\''.$c ontra.'\')';
mysql_query($result) or die(mysql_error());


if($result)
{
echo "<script language='javascript'>alert('Docente guardado correctamente.')</script>";
echo "<script>document.location.href= 'alta_docentes.php';</script>";

}

else
{

echo "<script language='javascript'>alert('Error al insertar')</script>";

}

?>




no se porque me manda este error, ya revise la base de datos y los tipos estan bien. ya cale a mostrar el ID obtenido de la base de datos en el option y si me lo muestra, el problema es que no puedo mandar el id.


lo que yo quiero hacer es lo siguiente:


si tengo

<select name= cbespecialidades>;
<option value=1>Lic. en Informatica</option>
</select>

en la base de datos quiero guardar el 1.

Espero verme dado a entender con mi problema.
  #2 (permalink)  
Antiguo 18/01/2011, 22:35
 
Fecha de Ingreso: mayo-2006
Ubicación: Argentina (Buenos Aires,CABALLITO)
Mensajes: 331
Antigüedad: 18 años, 6 meses
Puntos: 9
Respuesta: Problema al mandar el valor de un select

aparentemente por ese error, segun leí es porque la variable $id_especialidad no tiene valor, y algunas versiones de mysql tienen un bug: no deja mandar datos vacios a campos con estructura int

saludos,
  #3 (permalink)  
Antiguo 19/01/2011, 02:49
Avatar de tersipodes  
Fecha de Ingreso: noviembre-2010
Mensajes: 23
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema al mandar el valor de un select

Entiendo que todos los campos son texto excepto id_especialidad. Prueba cambiar tu sql de insert a esto:

$result = "INSERT INTO tbldocentes(docNo_nomina, doc_Nombre, doc_apepaterno, doc_apematerno, espId, doc_contraseña)
VALUES('$nomina','$nombre','$a_paterno','$a_matern o',$id_especialidad,'$contra')";

Si no te lo aceptara, podrías hacer una concatenación de texto como la siguiente:

$result = "INSERT INTO tbldocentes(docNo_nomina, doc_Nombre, doc_apepaterno, doc_apematerno, espId, doc_contraseña)
VALUES(' ".$nomina." ',' ".$nombre." ',' ''.$a_paterno." ',' ".$a_materno." ',".$id_especialidad.",' ".$contra." ')";

A veces las conexiones desde php a mysql son un poco pejigueras, y no aceptan todo el código. Los espacios entre las comillas simples y las comillas dobles se pueden (o mejor dicho, se deben) eliminar, pero así queda más clara la idea de poner entrecomillada y concatenada toda la sentencia SQL.

Espero que sea de ayuda.

Etiquetas: mandar, 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 15:22.