Foros del Web » Programando para Internet » PHP »

Script PHP inserta datos vaciós en Base de Datos SQLSRV (MSSQL)

Estas en el tema de Script PHP inserta datos vaciós en Base de Datos SQLSRV (MSSQL) en el foro de PHP en Foros del Web. Hola buenas a todos. Tengo un formulario HTML que tiene como función insertar los datos que la persona escribe en el formulario en una base ...
  #1 (permalink)  
Antiguo 20/02/2013, 09:54
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 2 meses
Puntos: 2
Script PHP inserta datos vaciós en Base de Datos SQLSRV (MSSQL)

Hola buenas a todos.

Tengo un formulario HTML que tiene como función insertar los datos que la persona escribe en el formulario en una base de datos. La conexión con la base de datos es correcta, incluso al "enviar" el formulario, se crea una fila en la base de datos.

El problema está en que los datos insertados están vacíos. La tabla creada en la base de datos no permite campos NULL, pero aún así se insertan los datos enviados por el formulario en la base de datos.

La tabla se compone de 5 campos:

-usuario_id (es el id del usuario, este campo SÍ se inserta, con un incremental)
-usuario_nombre (el nombre del usuario, se inserta en blanco)
-usuario_clave (la clave del usuario, se encripta en md5, pero vacío)
-usuario_email (el email del usuario, se inserta en blanco)
-usuario_freg (es campo, SI se inserta, que es la fecha y la hora)

AQUÍ LES DEJO LOS CÓDIGOS:

-FORMULARIO HTML
Código:
<!DOCTYPE html>
<html>
<header>
	  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
</header>
<body>
 <form action="registro.php" 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 /> 
		
        <input type="submit" name="enviar" value="Registrar" /> 
        <input type="reset" value="Borrar" /> 
    </form>
	</body>
	</html>
SCRIPT PHP

Código:
<?php 
    $serverName = "HOST";
$connectionInfo = array( "Database"=>"BASE DE DATOS", "UID"=>"USUARIO", "PWD"=>"CONTRASEÑA" );
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}
    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 has 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 has 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>"; 
        }else { 
            // comprobamos que el usuario ingresado no haya sido registrado antes 
            $sql = sqlsrv_query($conn,"SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'"); 
            if(sqlsrv_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 = sqlsrv_query( $conn,"INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_freg) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', GETDATE())"); 
                if($reg) { 
                    echo "Datos ingresados correctamente."; 
                }else { 
                    echo "ha ocurrido un error y no se registraron los datos.";
					die( print_r( sqlsrv_errors(), true));
                } 
            } 
        } 
    }
?>
Uso un servidor MSSQL, por lo tanto las órdenes de PHP son sqlsrv_xxxx
Gracias de antemano!
  #2 (permalink)  
Antiguo 20/02/2013, 10:02
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Script PHP inserta datos vaciós en Base de Datos SQLSRV (MSSQL)

Si ese es su código la respuesta es que usted no esta ni definiendo $usuario_nombre ni $usuario_email ademas como consejo eregi esta deprecada hace mucho...

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Etiquetas: formulario, html, inserta, registro, select, sql, tabla, 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 11:16.