Duda bastante nw con los select

Iniciado por mark182, 9 Noviembre 2009, 04:44 AM

0 Miembros y 1 Visitante están viendo este tema.

mark182

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.

cassiani

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 ..

mark182

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?

cassiani

revisa el query, si no me equivoco, eso debería mostrate un error..

xkiz ™

http://php.net/manual/en/function.mysql-error.php
fijate hace un echo  mysql_error();
para que te muestre donde esta el error

:ohk<any>

#5
mejor:

En el codigo HTML, debe haber un <form action="post"></form>
El que recibe, lo hace asi:

Código (php) [Seleccionar]


//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:

Código (php) [Seleccionar]
$sexo = $_POST["sexo"];

Y tambien, ejecutas tu consulta sin hacer una conexión, lo mejor seria hacerla asi:

Código (php) [Seleccionar]

$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:

Código (php) [Seleccionar]


$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
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

mark182

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.

:ohk<any>

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...

Saludos
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

cassiani


:ohk<any>

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:
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.