Foros del Web » Programando para Internet » PHP »

Problema php mysql "registro"

Estas en el tema de Problema php mysql "registro" en el foro de PHP en Foros del Web. Buenas, hace poco encontre un tutorial para hacer un sistema de registro, lo int¡ente modificar añadiendo una casilla o como se llame a mi base ...
  #1 (permalink)  
Antiguo 02/06/2011, 12:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 12 años, 11 meses
Puntos: 16
Pregunta Problema php mysql "registro"

Buenas, hace poco encontre un tutorial para hacer un sistema de registro, lo int¡ente modificar añadiendo una casilla o como se llame a mi base de datos, usuario_avatar, añadi al codigo de registro todo igual como si fuera el nombre de usuario con la esperanza de que lo que se escribiera en la casilla avatar del codigo php se añadiera a la base de datos, pero no es asi, me da error: ha ocurrido un error y no se registraron los datos, que esta en el siguiente codigo.
Hay algo mal aqui, si alguien lo descubre se lo agradezco!

Código PHP:
<?php 
    
include('acceso_db.php'); // incluimos el archivo de conexión a la Base de Datos 
    
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario
        // creamos una función que nos parmita validar el email 
        
function valida_email($correo) { 
            if (
eregi("^[_.0-9a-z-]+@[0-9a-z._-]+.[a-z]{2,4}$"$correo)) return true
            else return 
false
        } 
        
// Procedemos a comprobar que los campos del formulario no estén vacíos 
        
$sin_espacios count_chars($_POST['usuario_nombre'], 1); 
        if(!empty(
$sin_espacios[32])) { // comprobamos que el campo usuario_nombre no tenga espacios en blanco
            
echo "El campo <em>usuario_nombre</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(empty(
$_POST['usuario_nombre'])) { // comprobamos que el campo usuario_nombre no esté vacío
            
echo "No haz ingresado tu usuario. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(empty(
$_POST['usuario_clave'])) { // comprobamos que el campo usuario_clave no esté vacío
            
echo "No haz ingresado contraseña. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(
$_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { // comprobamos que las contraseñas ingresadas coincidan
            
echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(!
valida_email($_POST['usuario_email'])) { // validamos que el email ingresado sea correcto
            
echo "El email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(empty(
$_POST['usuario_avatar'])) {
            echo 
"Pon tu avatar, por defecto: imagenes/avatar.gif. Si deseas un avatar personalizado pon la url de la imagen. <a href='javascript:history.back();'>Reintentar</a>";
        }else { 
            
// "limpiamos" los campos del formulario de posibles códigos maliciosos 
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']); 
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']); 
            
$usuario_email mysql_real_escape_string($_POST['usuario_email']);
            
$usuario_avatar mysql_real_escape_string($_POST['usuario_avatar']); 
            
// comprobamos que el usuario ingresado no haya sido registrado antes 
            
$sql mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'");
            if(
mysql_num_rows($sql) > 0) { 
                echo 
"El nombre usuario elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>";
            }else { 
                
$usuario_clave md5($usuario_clave); // encriptamos la contraseña ingresada con md5
                // ingresamos los datos a la BD 
                
$reg mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_avatar) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', '".$usuario_avatar."', NOW())");
                if(
$reg) { 
                    echo 
"Datos ingresados correctamente."
                }else { 
                    echo 
"ha ocurrido un error y no se registraron los datos."
                } 
            } 
        } 
    }else { 
?> 
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> 
        <label>Usuario:</label><br /> 
        <input type="text" name="usuario_nombre" maxlength="15" /><br /> 
        <label>Contraseña:</label><br /> 
        <input type="password" name="usuario_clave" maxlength="15" /><br /> 
        <label>Confirmar Contraseña:</label><br /> 
        <input type="password" name="usuario_clave_conf" maxlength="15" /><br /> 
        <label>Email:</label><br /> 
        <input type="text" name="usuario_email" maxlength="50" /><br />
        <label>Avatar:</label><br />
        <input type="text" name="usuario_avatar" maxlength="255" /><br /> 
        <input type="submit" name="enviar" value="Registrar" /> 
        <input type="reset" value="Borrar" /> 
    </form> 
<?php 
    

?>
Repito, todo fallo al añadir lo del avatar!
  #2 (permalink)  
Antiguo 02/06/2011, 12:35
Avatar de gysato  
Fecha de Ingreso: junio-2010
Ubicación: Tuxtla Gtz, Chiapas
Mensajes: 88
Antigüedad: 13 años, 10 meses
Puntos: 9
Respuesta: Problema php mysql "registro"

Revisando tu codigo encontre una linea mal, esta:

Código PHP:
$reg mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_avatar) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', '".$usuario_avatar."', NOW())"); 
Primero imagino que ya tienes creado el campo llamado usuario_avatar. Ahora en el insert al indicar los campos a los que añadiras pones al final "usuario_avatar" pero en el VALUES al final tienes NOW().

Es decir en donde indicas los campos a los que añadiras valores tienes 4 campos (usuario_nombre,usuario_clave,usuario_email,usuari o_avatar) pero en los VALUES tienes 5 ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', '".$usuario_avatar."', NOW())") imagino que NOW() es por un campo fecha/hora por lo que deberias de agregar el nombre del campo al final de (usuario_nombre,usuario_clave,usuario_email,usuari o_avatar,CAMPO_FALTANTE)

Salu2
  #3 (permalink)  
Antiguo 02/06/2011, 12:38
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Problema php mysql "registro"

Una sugerencia:
en vez de
$reg = mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_avatar) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', '".$usuario_avatar."', NOW())");
puedes dejarlo así:
$reg = mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_avatar) VALUES ('$usuario_nombre', '$usuario_clave', '$usuario_email', '$usuario_avatar', NOW())");

Pero no funciona ya que tu dices que vas a meter 4 datos (usuario_nombre, usuario_clave, usuario_email, usuario_avatar) y al meter el NOW meterías 5, con lo que mysql te lo rebota.

Última sugerencia: apara saber algo más de un error, siempre haz
echo mysql_error();
así mysql te dará una pista de por dónde va la cosa.
  #4 (permalink)  
Antiguo 02/06/2011, 12:43
Avatar de gysato  
Fecha de Ingreso: junio-2010
Ubicación: Tuxtla Gtz, Chiapas
Mensajes: 88
Antigüedad: 13 años, 10 meses
Puntos: 9
Respuesta: Problema php mysql "registro"

Cita:
Iniciado por ocp001a Ver Mensaje
Una sugerencia:
en vez de
$reg = mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_avatar) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', '".$usuario_avatar."', NOW())");
puedes dejarlo así:
$reg = mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_avatar) VALUES ('$usuario_nombre', '$usuario_clave', '$usuario_email', '$usuario_avatar', NOW())");

Pero no funciona ya que tu dices que vas a meter 4 datos (usuario_nombre, usuario_clave, usuario_email, usuario_avatar) y al meter el NOW meterías 5, con lo que mysql te lo rebota.

Última sugerencia: apara saber algo más de un error, siempre haz
echo mysql_error();
así mysql te dará una pista de por dónde va la cosa.
Captura siempre errores de mysql como dice ocp00la...

En lo personal prefiero sugiero concatenar variables para una mejor legibilidad del código.

Salu2

Etiquetas: mysql, 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 01:45.