Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Formulario de registro no guarda los datos en la BD

Estas en el tema de Formulario de registro no guarda los datos en la BD en el foro de PHP en Foros del Web. Hola a todos: Esta es mi primera consulta en el foro. Como breve presentación diré que no tengo formación en programación y que todo (lo ...
  #1 (permalink)  
Antiguo 20/05/2015, 04:48
 
Fecha de Ingreso: mayo-2015
Mensajes: 7
Antigüedad: 4 años, 6 meses
Puntos: 0
Pregunta Formulario de registro no guarda los datos en la BD

Hola a todos:

Esta es mi primera consulta en el foro. Como breve presentación diré que no tengo formación en programación y que todo (lo poco que se) lo he aprendido gracias a la red. Estoy haciendo una web en la que he creado un formulario de registro de usuarios con el siguiente código,

Código HTML:
<form name="fregistro" method="post" action="">
            
            	<p class="lineas">
                <span class="crotulos">Nombre y apellidos:</span>
                <span class="ccampos"><input type="text" name="nombre" class="campos-reg"></span>
                </p>
                
            	<p class="lineas">
                <span class="crotulos">e-Mail:</span>
                <span class="ccampos"><input type="email" name="email" class="campos-reg"></span>
                </p>
                
                <p class="lineas">
                <span class="crotulos">Usuario:</span>
                <span class="ccampos"><input type="text" name="usuario" class="campos-reg"></span>
                </p>
                
                <p class="lineas">
                <span class="crotulos">Contraseña:</span>
                <span class="ccampos"><input type="password" name="pas" class="campos-reg"></span>
                </p>             
                                               
                <p class="lineas">
                <span class="crotulos">Pais:</span>
                <span class="ccampos">       
                <select name="pais" class="campos-reg">
                    <option value="" selected></option>
                    <option value="AF">Afganistán</option>
                    <option value="AL">Albania</option> 
                    <option value="DE">Alemania</option> 
                    <option value="AD">Andorra</option> 
                    <option value="AO">Angola</option>
                    <option value="ZM">Zambia</option>  
                    <option value="ZW">Zimbabue</option>
                </select>
                </span>
                </p>
                
                <p class="lineas">
                <span class="crotulos">Categoria profesional:</span>
                <span class="ccampos"><input type="text" name="cat_prof" class="campos-reg"></span>
                </p>
                
                <p class="lineas">
                <span class="crotulos">Número de colegiado:</span>
                <span class="ccampos"><input type="text" name="num_col" class="campos-reg"></span>
                </p>
                
                <p class="lineas">
                <span class="crotulos">Acepto los <a href="legal.php" target="_blank">términos y condiciones</a>:</span>
                <span class="ccampos"><input type="checkbox" name="verif"></span>
                </p>

                <p class="lineas">
                <span class="crotulos">&nbsp;</span>
                <span class="ccampos"><input type="button" name="boton" value="Enviar registro" class="boton" onClick="javascript:Validar();"></span>
                </p>
                               
                <input type="hidden" name="proceso">
                
            </form> 
Por medio del siguiente script me aseguro de que el usuario rellena los campos del formulario,

Código HTML:
<script>
	function Validar(){
		document.fregistro.action="registro_usuarios.php";
		if(document.fregistro.nombre.value==""){
			alert("El campo nombre y apellidos es necesario");
			document.fregistro.nombre.focus();
			return;
		}			
		if(document.fregistro.email.value==""){
			alert("El campo e-Mail es necesario");
			document.fregistro.email.focus();
			return;
		}
		if (document.fregistro.email.value.indexOf('@') == -1){ 
			alert ("El e-Mail no es correcto"); 
			document.fregistro.email.focus();
                        return;
		}
		if(document.fregistro.usuario.value==""){
			alert("El campo usuario es necesario");
			document.fregistro.usuario.focus();
			return;
		}
		if(document.fregistro.pas.value==""){
			alert("El campo contraseña es necesario");
			document.fregistro.pas.focus();
			return;
		}		
		if(document.fregistro.pais.value==""){
			alert("El campo pais es necesario");
			document.fregistro.pais.focus();
			return;
		}	
		if(document.fregistro.cat_prof.value==""){
			alert("El campo categoria profesional es necesario");
			document.fregistro.cat_prof.focus();
			return;
		}	
		if(document.fregistro.num_col.value==""){
			alert("El campo número de colegiado es necesario");
			document.fregistro.num_col.focus();
			return;
		}	
		if(document.fregistro.verif.checked==""){
			alert("Es necesario aceptar los términos y condiciones");
			document.fregistro.verif.focus();
			return;
		}
		document.fregistro.proceso.value="Enviar registro";
		document.fregistro.submit();
	}
</script> 
Finalmente, con el siguiente código php verifico que no hay ningún usuario registrado con el mismo email y envio los datos a la base de datos,

Código PHP:
<?php
$proceso 
= isset($_POST['proceso']) ? $_POST['proceso']:"";
if(
$proceso=="Enviar registro"){
    
$nombre     utf8_decode($_POST['nombre']);
    
$email     $_POST['email'];
    
$usuario     $_POST['usuario'];
    
$pas         $_POST['pas'];
    
$pais     $_POST['pais'];
    
$cat_prof     $_POST['cat_prof'];
    
$num_col     $_POST['num_col'];
    
$verif     $_POST['verif'];
    
    
/*-- Validar usuario para que no se repita ---*/
    
$validarUsuarios "SELECT * FROM usudosi WHERE email='$email'";
    
$ejecutarValidar mysql_query($validarUsuarios);
    
$numreg mysql_num_rows($ejecutarValidar);
    
    if(
$numreg==0){
        
$insertarUsuarios="INSERT INTO usudosi(nombre, email, usuario, pas, pais, cat_prof, num_col, verif) VALUE('$nombre', '$email', '$usuario', '$pas', '$pais', '$cat_prof', '$num_col', '$verif')";
        
$resultadoInsertar=mysql_query($insertarUsuarios);
        
$mensaje "Usuario registrado con exito";
    }else{
        
$mensaje "¡ Usuario resgistrado ya existe !";
    }
}
?>
Evidentemente al principio del archivo está la instrucción para que se conecte a la base de datos (ya he verificado que funciona bien),

Código PHP:
<?php include "Connections/basedatos.php"?>
Con todo esto funcionando y sin darme errores, relleno los datos del formulario de registro y al clicar sobre el botón enviar registro, el formulario se limpia pero no se guardan los datos en la base de datos.

He leído en el foro, he buscado tutoriales y he ido haciendo pruebas sin conseguir que funcione.

Mis disculpas por extenderme tano pero he intentado aclarar al máximo los pasos que he seguido.

Agradecería cualquier sugerencia. Muchas gracias por la paciencia
  #2 (permalink)  
Antiguo 20/05/2015, 05:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Formulario de registro no guarda los datos en la BD

Tu FORM tiene el método POST, pero no veo donde se indica que script lo recibe.
Tampoco me queda claro cuando se carga el input hidden que aparece, y no veo que valides si los datos llegan o no al script de PHP.
El que no de un error no implica que esté haciendo realmente algo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/05/2015, 05:50
 
Fecha de Ingreso: mayo-2015
Mensajes: 7
Antigüedad: 4 años, 6 meses
Puntos: 0
Respuesta: Formulario de registro no guarda los datos en la BD

Muchas gracias por responder tan rápido gnzsoloyo:

Lo que he intentado hacer es que el metodo POST lo reciba

Código HTML:
<input type="button" name="boton" value="Enviar registro" class="boton" onClick="javascript:Validar();"> 
que aparece al final del formulario, se validen los datos con el script y si todo está ok los envie a la BD,

No se como hacer para validar si los datos llegan o no al script de PHP. Voy a investigar un poco este tema.

Un saludo
  #4 (permalink)  
Antiguo 20/05/2015, 06:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Formulario de registro no guarda los datos en la BD

Ok... ¿Y donde estás indicando que el POST lo reciba el script de PHP?

Código HTML:
Ver original
  1. <form name="fregistro" method="post" action="">

Porque, hasta lo que yo sé, action debería indicar el nombre del script...
Código HTML:
Ver original
  1. <form name="formulario" method="post" action="ejemploPost.php">
  2.  
  3. Nombre: <input type="text" name="nombre" value="">
  4.  
  5. <input type="submit" />
  6.  
  7. </form>



En cuanto a validar en PHP, creo que es evidente: Haces algo parecido a lo que realizas en JavaScript, pero para el $_POST que llega, porque el hecho de que lo tengas en el FORM, puede no implicar que esté llegando bien... Es una simple precaución, en especial para aquellos campos opcionales.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/05/2015, 14:21
 
Fecha de Ingreso: mayo-2015
Mensajes: 7
Antigüedad: 4 años, 6 meses
Puntos: 0
Respuesta: Formulario de registro no guarda los datos en la BD

Gracias gnzsoloyo por tus consejos.

He buscado un poco y he añadido esta modificación en el código
Código HTML:
<input type="hidden" name="MM_insert" value="form1"> 
y ya funciona bien.

Saludos

Etiquetas: bases-de-datos, formulario, 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 07:40.