Foros del Web » Programando para Internet » PHP »

¿Por qué solo se inserta el usuario y no lo demás? PHP-MYSQL

Estas en el tema de ¿Por qué solo se inserta el usuario y no lo demás? PHP-MYSQL en el foro de PHP en Foros del Web. Buenos días, ante todo gracias. Este es el código que recopila las variables del formulario de registro: Código PHP: function  limpiar ( $value ){ $value  ...
  #1 (permalink)  
Antiguo 12/03/2011, 13:36
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
¿Por qué solo se inserta el usuario y no lo demás? PHP-MYSQL

Buenos días, ante todo gracias.
Este es el código que recopila las variables del formulario de registro:
Código PHP:
function limpiar($value){
$value =  mysql_real_escape_string(trim($value));
return 
$value;
}
function 
contrasena($value) {
    
$value md5(mysql_real_escape_string(trim($value)));
    return 
$value;
}
$nombre limpiar($_POST['nombre']);
$apellido limpiar($_POST['apellido']);
$email limpiar($_POST['email']);
$genero limpiar($_POST['genero']);
$usuario limpiar($_POST['usuario']);
$pais limpiar($_POST['pais']);
$ip limpiar($_POST['ip']);
$nacimiento limpiar($_POST['nacimiento']);
$contrasena contrasena($_POST['contrasena']);
$suma $_POST['suma']; 

Y este código las procesa:

Código PHP:
    function comprobar($usuario){ // inicio funcion
  

   //compruebo que los caracteres sean los permitidos 
   
$permitidos "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789-_."//caracteres permitidos
   
for ($i=0$i<strlen($usuario); $i++){ //inicio for i empieza en 0 , y el for se ejecuta hasta que i sea igual a la cant. de caracteres de usuario, y cada vez q se ejecuta se agrega 1 */
      
if (strpos($permitidossubstr($usuario,$i,1))===false){ //inicio if si hay caracteres no validos...
         
echo "El usuario $usuario no es válido porque tiene caracteres no permitidos. Solo se permite usar las mayúsculas, las minúsculas, los números, el guión bajo, el guión y el punto. ¿Quieres volver a llenar el <a href=/index.php?cont=registro-1.php>formulario de registro</a>?<br>"//hacer esto
         
return false
      }  
//fin if
   
}  //si no
   
   
$anadir mysql_query("INSERT INTO usuarios (nombre,apellido,email,genero,usuario,pais,ip,nacimiento,password)
    VALUES ('$nombre','$apellido','$email','$genero','$usuario','$pais','$ip','$nacimiento','$contrasena')"
) or die(mysql_error());
   if(
$anadir) {echo"Te has registrado correctamente. Puedes iniciar sesión en el centro de control que está en la parte superior.";} 
   else
   { echo
" No pudimos registrarte... Lo sentimos mucho. Pero podrías <a href=/index.php?cont=registro-1.php>volverlo a intentar</a>. De todas formas, si esto te sigue pasando, contacta con el administrador.";
       
       }
   return 
true
//fin funcion
 
 //////
 
$nuevo mysql_query("SELECT usuario FROM usuarios WHERE usuario = '$usuario'",$general);
 
$filas mysql_num_rows($nuevo);
 if(
$filas == 0) {
 if(
$suma == $_POST[resultado]) 
 {
     
comprobar($usuario);
 }
 else
 {
     echo
" ¿$_POST[numero1] + $_POST[numero2] es igual a $suma? ¿Estás seguro? Y yo que pensaba que era $_POST[resultado].";
     echo
" <br> Te has equivocado en la suma. Debes <a href=/index.php?cont=registro-1.php>volverlo a intentar</a>. ";
 }
 }
 else
 { echo 
"El usuario que intentas registrar ya está en uso. Vuelve <a href=/index.php?cont=registro-1.php>atrás</a> y elige otro.";} 
El asunto es que si todo es correcto, el mensaje de éxito sale:
Cita:
Te has registrado correctamente. Puedes iniciar sesión en el centro de control que está en la parte superior.
Sin embargo, en la base de datos, solo se inserta la $usuario.
Osea, si completo TODOS los campos, todos se insertan en blanco salvo usuario.
Los nombres de los campos son correctos..
Me cansé de pensar y no poder resolverlo, gracias..!

Última edición por lauchalp95; 12/03/2011 a las 13:42
  #2 (permalink)  
Antiguo 12/03/2011, 13:49
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: ¿Por qué solo se inserta el usuario y no lo demás? PHP-MYSQL

en la funcion comprobar($usuario); solo estas pasando esta variable
agregale las demas

funcion comprobar($usuario,$variable2,$variable3); etc..
  #3 (permalink)  
Antiguo 12/03/2011, 13:54
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: ¿Por qué solo se inserta el usuario y no lo demás? PHP-MYSQL

Cita:
Iniciado por ben_mx Ver Mensaje
en la funcion comprobar($usuario); solo estas pasando esta variable
agregale las demas

funcion comprobar($usuario,$variable2,$variable3); etc..
Quieres decir que al no pasarlas por esa función, estoy excluyendo todas las otras variables?
¿Por qué dices que es así?
Porque el INSERT está dentro de la función, no debería suceder eso
  #4 (permalink)  
Antiguo 12/03/2011, 14:00
 
Fecha de Ingreso: julio-2010
Ubicación: Galicia
Mensajes: 91
Antigüedad: 13 años, 9 meses
Puntos: 9
Respuesta: ¿Por qué solo se inserta el usuario y no lo demás? PHP-MYSQL

El insert está dentro de la función, pero no las demás variables, eso, como dice ben_mx tendrás que poner comprobar($nombre,$apellido,$mail....etc) con todas las variables que quieras que existan dentro de la funcion, si no, la función no tomará el valor de las variables declaradas fuera de ella. Otra opción sería que hagas la declaración de las variables que vayas a insertar dentro de la misma función. Saludos!
  #5 (permalink)  
Antiguo 12/03/2011, 14:03
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: ¿Por qué solo se inserta el usuario y no lo demás? PHP-MYSQL

Muchas gracias a ambos!!
Ya me funciona!
  #6 (permalink)  
Antiguo 12/03/2011, 14:41
 
Fecha de Ingreso: julio-2010
Ubicación: Galicia
Mensajes: 91
Antigüedad: 13 años, 9 meses
Puntos: 9
Respuesta: ¿Por qué solo se inserta el usuario y no lo demás? PHP-MYSQL

Nada, me alegra que te saliese, un saludete ^^

Etiquetas: usuarios
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 16:52.