Foros del Web » Programando para Internet » PHP »

¿Por qué no se inserta este registro?

Estas en el tema de ¿Por qué no se inserta este registro? en el foro de PHP en Foros del Web. Buenas tardes, yo tengo el siguiente código, y el asunto es que no se inserta el registro, ya revisé todo y no sé que andará ...
  #1 (permalink)  
Antiguo 04/03/2011, 08:13
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 10 meses
Puntos: 0
¿Por qué no se inserta este registro?

Buenas tardes, yo tengo el siguiente código, y el asunto es que no se inserta el registro, ya revisé todo y no sé que andará mal .
Código PHP:
Ver original
  1. <?
  2.  
  3.  
  4. /* Datos de conexión */
  5. $nombre = mysql_real_escape_string(trim($_POST['nombre']));
  6. $apellido = mysql_real_escape_string(trim($_POST['apellido']));
  7. $email = mysql_real_escape_string(trim($_POST['email']));
  8. $genero = mysql_real_escape_string(trim($_POST['genero']));
  9. $usuario = mysql_real_escape_string(trim($_POST['usuario']));
  10. $pais = mysql_real_escape_string(trim($_POST['pais']));
  11. $ip = mysql_real_escape_string(trim($_POST['ip']));
  12. $nacimiento = mysql_real_escape_string(trim($_POST['nacimiento']));
  13. $contrasena = md5(mysql_real_escape_string(trim($_POST['contrasena'])));
  14.  
  15. function comprobar_nombre_usuario($usuario){
  16.  
  17.    //compruebo que los caracteres sean los permitidos
  18.    $permitidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.";
  19.    for ($i=0; $i<strlen($usuario); $i++){
  20.       if (strpos($permitidos, substr($nombre_usuario,$i,1))===false){
  21.          echo " El nombre de usuario $usuario contiene caracteres incorrectos. Sólo se permite usar : a-z, A-Z, 1-9, - , _ y punto.Por favor, vuelve <a href=/index.php?cont=registro-1.php> atrás</a> y completa el formulario correctamente.";
  22.          
  23.       }
  24.       else {
  25.          
  26.          
  27.             $anadir = mysql_query("INSERT INTO usuarios (usuario,password,email,genero,pais,nacimiento,nombre,apellido,ip) VALUES ('$usuario','$contrasena','$email','$genero','$pais','$nacimiento','$nombre','$apellido',$ip')",$general);
  28.           }
  29.    }
  30.    
  31.  
  32.  
  33.  
  34. }
  35.  if($anadir) {
  36.      
  37.       echo " Tu registro se realizó con exito. <a href=/index.php?cont=log.php>¿Deseas iniciar sesión?</a>";
  38.       }
  39.  
  40.   else {
  41.       echo " Hubo un error al solicitar tu registro. ¿Deseas intentarlo <a href=/index.php?cont=registro-1.php>de nuevo</a>?. Si esto te sucede reiteradas veces, contacta con el administrador";    
  42.       }
  43.  
  44.  
  45. ?>

Lo que se recibe al enviar el formulario es el último Hubo un error al solicitar tu registro...
Gracias!
  #2 (permalink)  
Antiguo 04/03/2011, 08:22
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: ¿Por qué no se inserta este registro?

En el ultimo campo de tu query tienes ,$ip' en lugar de ,'$ip'

Para estos casos son utiles las funciones de mysql para mostrar errores... mysql_error();
  #3 (permalink)  
Antiguo 04/03/2011, 08:26
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: ¿Por qué no se inserta este registro?

Cita:
Iniciado por villaju Ver Mensaje
En el ultimo campo de tu query tienes ,$ip' en lugar de ,'$ip'

Para estos casos son utiles las funciones de mysql para mostrar errores... mysql_error();
Huy, muchas gracias, era algo tan simple.
Si tenes razon, no me acordaba de mysql_error ..
Gracias!
  #4 (permalink)  
Antiguo 04/03/2011, 08:39
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: ¿Por qué no se inserta este registro?

Realmente sigue dando el mismo error, y le puse mysql_error y no dice nada, así que supongo que es un problema puro de php...
PD: también arregle un error en la funcion de caracteres permitidos..
Y sigue igual

Creo que el error está acá:
Código PHP:
Ver original
  1. function comprobar_nombre_usuario($usuario){
  2.  
  3.    //compruebo que los caracteres sean los permitidos
  4.    $permitidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.";
  5.    for ($i=0; $i<strlen($usuario); $i++){
  6.       if (strpos($permitidos, substr($usuario,$i,1))===false){
  7.          echo " El nombre de usuario $usuario contiene caracteres incorrectos. Sólo se permite usar : a-z, A-Z, 1-9, - , _ y punto.Por favor, vuelve <a href=/index.php?cont=registro-1.php> atrás</a> y completa el formulario correctamente.";

Pero no consigo ver donde

Última edición por lauchalp95; 04/03/2011 a las 08:53
  #5 (permalink)  
Antiguo 04/03/2011, 09:00
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: ¿Por qué no se inserta este registro?

no entiendo si concatenas asi para mostrars las variables php?

Código PHP:
Ver original
  1. echo " El nombre de usuario" .$usuario ." contiene caracteres incorrectos. Sólo se permite usar : a-z, A-Z, 1-9, - , _ y punto. Por favor, vuelve <a href=/index.php?cont=registro-1.php> atrás</a> y completa el formulario correctamente.";


Por otra parte esa forma de guardar a mi me ah traido problemas y uso esta:

$
Código PHP:
Ver original
  1. sql2="INSERT INTO `usuario` VALUES (
  2.         '".$_POST['codigo']."',
  3.         '".$_POST['cedula']."',
  4.         '".$_POST['nombre']."',
  5.         '".$_POST['apellido']."',
  6.         '".$_POST['direccion']."',
  7.         '".$_POST['telefono']."',
  8.         '".$_POST['tipo']."',
  9.         '".$_POST['correo']."'
  10.         )";
  11.  
  12.         mysql_query($sql2,$link)or die(mysql_error());


cambia en tu caso las variables de post por los nombres que tu recibes. Bueno es una idea. saludos espero te sirva.
  #6 (permalink)  
Antiguo 04/03/2011, 09:26
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: ¿Por qué no se inserta este registro?

Cita:
Iniciado por leonagelic
no entiendo si concatenas asi para mostrars las variables php?
Las comillas dobles interpretan las variables, no hay necesidad de concatenar.

Cita:
Iniciado por lauchalp95
Realmente sigue dando el mismo error, y le puse mysql_error y no dice nada, así que supongo que es un problema puro de php...
PD: también arregle un error en la funcion de caracteres permitidos..
Y sigue igual
Yo si veo el error, y es una tonteria en realidad ...
Tienes todo eso en una funcion para comprobar el usuario, esta nunca se ejecuta por solo se DEFINIO
Otra cosa es que tienes la consulta dentro de un bucle FOR, por lo que se ejecutaria varias veces ...
  #7 (permalink)  
Antiguo 04/03/2011, 09:30
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: ¿Por qué no se inserta este registro?

Cita:
Iniciado por Ronruby Ver Mensaje
Las comillas dobles interpretan las variables, no hay necesidad de concatenar.



Yo si veo el error, y es una tonteria en realidad ...
Tienes todo eso en una funcion para comprobar el usuario, esta nunca se ejecuta por solo se DEFINIO
Otra cosa es que tienes la consulta dentro de un bucle FOR, por lo que se ejecutaria varias veces ...

Huy, es increible el error que cometí .___.
Muchas gracias xD
  #8 (permalink)  
Antiguo 04/03/2011, 10:47
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: ¿Por qué no se inserta este registro?

Cita:
Iniciado por Ronruby Ver Mensaje
Las comillas dobles interpretan las variables, no hay necesidad de concatenar.



Yo si veo el error, y es una tonteria en realidad ...
Tienes todo eso en una funcion para comprobar el usuario, esta nunca se ejecuta por solo se DEFINIO
Otra cosa es que tienes la consulta dentro de un bucle FOR, por lo que se ejecutaria varias veces ...
Bien, ya está arreglado y va mucho mejor, sin embargo, ahora la función toma absolutamente todo lo que pongo en el campo usuario, como un usuario no permitido por sus caracteres, ¿qué puede estar mal en esta función?
function comprobar($usuario){ // inicio funcion

Código PHP:
Ver original
  1. //compruebo que los caracteres sean los permitidos
  2.    $permitidos = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789-_."; //caracteres permitidos
  3.    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 */
  4.       if (strpos($permitidos, substr($nombre_usuario,$i,1))===false){ //inicio if si hay caracteres no validos...
  5.          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
  6.          return false;
  7.       }  //fin if
  8.    }  //si no
  9.    $anadir = mysql_query("INSERT INTO usuarios (nombre,apellido,email,genero,usuario,pais,ip,nacimiento,contrasena) VALUES ('$nombre','$apellido','$email','$genero','$usuario','$pais','$ip','$nacimiento','$contrasena')",$general) or die(mysql_error());
  10.    if($anadir) {echo" Te has registrado correctamente. ¿Deseas <a href=/index.php?cont=log.php>iniciar sesión?</a>";}
  11.    else
  12.    { 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.";
  13.        
  14.        }
  15.    return true;
  16. } //fin funcion

Siempre recibo:

Cita:
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 formulario de registro

Etiquetas: inserta, registro
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 19:00.