Hol como les va?
Recien comienzo con la programacion web. Estoy creando un sistema de registracion donde eh puesto un select con varias opciones. Lo que no puedo hacer es insertar la opcion elegida en mysql. Y pude insertar todo como el nombre de usuario, password y demas pero con el select nose como hacerlo. Me darian una mano?
Muchas gracias.
PHP?
ps capturas los datos del select igual que cualquier otro campo y lo pasas como parámetro en tu cadena sql.
No sé como lo estarás haciendo ..
Si en php, pero nose...no se inserta en la tabla
Codigo html:
Colegio y Curso: <select name="colegio">
<option value="1"selected>Pedro B. Palacios 1º (ESB)</option>
<option value="2">Pedro B. Palacios 2º (ESB)</option>
<option value="3">Pedro B. Palacios 3º (ESB)</option>
</select>
Codigo php:
$nombre = $_REQUEST["nom"];
$apellido = $_REQUEST["ape"];
$coleycurso = $_REQUEST["colegio"];
mysql_query("INSERT INTO alumnos (nombre,apellido,colegio)
VALUES ('$nombre', '$apellido', '$sexo', '$coleycurso')");
El nombre y apellido se guardan pero el colegio (el select) no. :-\
Que estoy haciendo mal?
revisa el query, si no me equivoco, eso debería mostrate un error..
http://php.net/manual/en/function.mysql-error.php
fijate hace un echo mysql_error();
para que te muestre donde esta el error
mejor:
En el codigo HTML, debe haber un <form action="post"></form>
El que recibe, lo hace asi:
//Funcion que limpia las variables y asegura contra inyección SQL
function addslashes__recursive($var){
if (!is_array($var))
return addslashes($var);
$new_var = array();
foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
return $new_var;
}
//Usando la funcion
$_POST=addslashes__recursive($_POST);
//Recibiendo variables.
$nombre = $_POST["nom"];
$apellido = $_POST["ape"];
$coleycurso = $_POST["colegio"];
Ahora bien, en el codigo que pusiste dice:
Citarmysql_query("INSERT INTO alumnos (nombre,apellido,colegio)
VALUES ('$nombre', '$apellido', '$sexo', '$coleycurso')");
Osea, aclaras que tu tabla tiene 3 campos, nombre, apellido, colegio, pero introduces 4 campos, sexo se agrega, el cual no se recibe en ningun lado, osea que puede estar ocasionando un error, porque deberia entrar algo.
Lo que supongo te falta es:
$sexo = $_POST["sexo"];
Y tambien, ejecutas tu consulta sin hacer una conexión, lo mejor seria hacerla asi:
$consulta = "INSERT INTO alumnos (nombre, apellido, sexo, colegio)
VALUES ('$nombre', '$apellido', '$sexo', '$coleycurso'";
mysql_query($consulta, $datos_conexion) or die(mysql_error());
Donde $datos_conexion seria igual a:
$hostname = 'localhost';
$username = 'user';
$password = '****'
$datos_conexion = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
Y creo que con eso se arregla.
Haber si nos cuentas como anda.
Saludos
Perdon...lo que pasa es que el original tiene sexo, email, tel y cel pero para hacerlo mas resumido borre todo lo demas pero se ve que me olvide de borrar sexo ;D jeje, tambien deje de lado la parte de la conexion con la base de datos porque es algo obvio. Lo que no entendi muy bien es para que sirve esa funcion que pusiste? Que es lo que hace?
Gracias a todos.
Citar
//Funcion que limpia las variables y asegura contra inyección SQL
function addslashes__recursive($var){
if (!is_array($var))
return addslashes($var);
$new_var = array();
foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
return $new_var;
}
Inyeccion SQL:
Citar
nyección SQL es una vulnerabilidad informática en el nivel de la validación de las entradas a la base de datos de una aplicación. El origen es el filtrado incorrecto de las variables utilizadas en las partes del programa con código SQL.
Seguir leyendo... (http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL)
Saludos
jejeje evitarla!!
Cita de: cΔssiΔni en 9 Noviembre 2009, 16:26 PM
jejeje evitarla!!
:xD
Pues claro, no es una función para inyecciones sql, para eso no pones nada y eres vulnerable :P :laugh:
see ya se ¬¬ decia que solo le respondias "inyeccion sql" capaz y cree que es para llevarla acabo
ohk :¬¬ :¬¬
entonces....que es lo que tengo que hacer? medio que no estoy entendiendo mucho jejej. Pongo ese script o no?
Listo ya lo pude solucionar. Igualmente me quedo la intriga para que sirve ese script. Gracias a todos.
Hola, con addslashses igual puedes inyectar saltos de lineas, caracteres nulos y % como comodines en caso de haber un like, mejor utiliza la función que está diseñada para evitar una inyección sql:
http://cl.php.net/manual/en/function.mysql-real-escape-string.php