Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema de codigo

Estas en el tema de Problema de codigo en el foro de PHP en Foros del Web. Hola a todos, el codigo me funciona perfectamente excepto porque al introducir todos los datos correctamente...... directamente no hace nada, no introduce ningun usuario nuevo ...
  #1 (permalink)  
Antiguo 03/09/2012, 22:47
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
Problema de codigo

Hola a todos, el codigo me funciona perfectamente excepto porque al introducir todos los datos correctamente...... directamente no hace nada, no introduce ningun usuario nuevo en la base de datos..... he intentado que redireccione cuando se complemte bien y nada, no redirecciona tampoco con header..... se queda ahi, simplemente, como si no ocurriese nada, jajaja, mi idea es que se introduzca el usuario en la BD y se redireccione inmediatamente al index.php con algun mensaje del tipo " se ha registrado correctamente " ....... enfin......estoy loco ya con esto, aver si pueden ayudarme, un saludo !

Código:
<?php
	$primeravez = FALSE;
	if (empty($_POST['button'])){
		$primeravez = TRUE;
		$_POST['nombre'] = "";
		$_POST['apellidos'] = "";
		$_POST['pais'] = "";
		$_POST['ciudad'] = "";
		$_POST['fecha'] = "";
		$_POST['usuario'] = "";
		$_POST['contrasena'] = "";
		$_POST['email'] = "";
		$_POST['descripcion'] = "";
		}
?>

<html>

	<head>
	<link href="estilo.css" rel="stylesheet" type="text/css">
	<link href="estilos.css" rel="stylesheet" type="text/css">
	</head>

	<body>
    	<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    	  <table width="926" border="2" align="center">
    	    <tr>
    	      <td height="60" colspan="2" align="center"><h2>FORMULARIO DE REGISTRO</h2></td>
   	        </tr>
    	    <tr>
    	      <td width="466" height="39">Nombre:</td>
    	      <td width="596"><input type="text" name="nombre" id="nombre" value="<?php echo $_POST['nombre']; ?>"></td>
  	      </tr>
          <?php
		  	if(empty ($_POST['nombre']) && (!$primeravez)) {
				echo " <tr><td></td><td class = 'error'> Tiene que introducir su Nombre  </td></tr>";
				}
		  ?>
    	    <tr>
    	      <td height="41">Apellidos:</td>
    	      <td><input type="text" name="apellidos" id="apellidos" value="<?php echo $_POST['apellidos']; ?>"></td>
  	      </tr>
            <?php
		  	if(empty ($_POST['apellidos']) && (!$primeravez)) {
				echo " <tr><td></td><td class = 'error'>  Tiene que introducir sus Apellidos  </td></tr>";
				}
		  ?>
    	    <tr>
    	      <td height="38">Pais:</td>
    	      <td><input type="text" name="pais" id="pais" value="<?php echo $_POST['pais']; ?>"></td>
  	      </tr>
            <?php
		  	if(empty ($_POST['pais']) && (!$primeravez)) {
				echo " <tr><td></td><td class = 'error'>  Tiene que introducir su Pais  </td></tr>";
				}
		  ?>
    	    <tr>
    	      <td height="35">Ciudad:</td>
    	      <td><input type="text" name="ciudad" id="ciudad" value="<?php echo $_POST['ciudad']; ?>"></td>
  	      </tr>
            <?php
		  	if(empty ($_POST['ciudad']) && (!$primeravez)) {
				echo " <tr><td></td><td class = 'error'>  Tiene que introducir su Ciudad  </td></tr>";
				}
		  ?> 
    	    <tr>
    	      <td height="32">Fecha de Nacimiento:</td>
    	      <td><input name="fecha" type="text" id="fecha" value="<?php echo $_POST['fecha']; ?>"></td>
  	      </tr>
            <?php
		  	if(empty ($_POST['fecha']) && (!$primeravez)) {
				echo " <tr><td></td><td class = 'error'>  Tiene que introducir su Fecha de Nacimiento  </td></tr>";
				}
		  ?>
    	    <tr>
    	      <td height="36">Usuario:</td>
    	      <td><input type="text" name="usuario" id="usuario" value="<?php echo $_POST['usuario']; ?>"></td>
  	      </tr>
            <?php
		  	if(empty ($_POST['usuario']) && (!$primeravez)) {
				echo " <tr><td></td><td class = 'error'>  Tiene que introducir su Usuario  </td></tr>";
				}
		  ?>
    	    <tr>
    	      <td height="36">Password:</td>
    	      <td><input type="password" name="contrasena" id="contrasena" value="<?php echo $_POST['contrasena']; ?>"></td>
  	      </tr>
            <?php
		  	if(empty ($_POST['contrasena']) && (!$primeravez)) {
				echo " <tr><td></td><td class = 'error'>  Tiene que introducir su Password  </td></tr>";
				}
		  ?>
    	    <tr>
    	      <td height="34">Email:</td>
    	      <td><input name="email" type="text" id="email" value="<?php echo $_POST['email']; ?>"></td>
  	      </tr>
            <?php
		  	if(!$primeravez) 
				if(empty ($_POST['email']))
					echo " <tr><td></td><td class = 'error'>  Tiene que introducir su Email  </td></tr>";
					
			    elseif(!preg_match ("/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/", $_POST['email']))
					echo "<tr><td></td><td class = 'error'> Formato de mail no valido  </td></tr>";
					
		  ?>
    	    <tr>
    	      <td height="33">Algo sobre ti:</td>
    	      <td><textarea name="descripcion" id="descripcion" value="<?php echo $_POST['descripcion']; ?>" cols="50" rows="5"></textarea></td>
  	      </tr>
            <?php
		  	if(empty ($_POST['descripcion']) && (!$primeravez)) {
				echo " <tr><td></td><td class = 'error'>  Tiene que introducir algo sobre usted  </td></tr>";
				}
		  ?>
    	    <tr>
    	      <td height="66" colspan="2" align="center"><input type="submit" name="button" id="button" value="REGISTRARSE"></td>
   	        </tr>
  	    </table>
    	</form>
        <?php
		//Especifico que si está relleno el campo y no está vacio, realiza las instrucciones de conexión con la BD.
		if(isset ($nombre) && !empty ($nombre) && ($apellidos) && !empty ($apellidos) && ($pais) && !empty ($pais) && ($ciudad) && !empty ($ciudad) && ($fechanacimiento) && !empty ($fechanacimiento) && ($usuario) && !empty ($usuario) && ($pass) && !empty ($pass) && ($email) && !empty ($email) && ($descripcion) && !empty ($descripcion)){

		//Incluyo el archivo donde tengo los datos de conexión.
			include_once("conexion.php");
			$con = new mysqli($host,$user,$pw,$db);
			if(mysqli_connect_errno()){
				echo " Error al conectar con la base de datos ";
				exit();
				}
				
		//Guardo las variables recibidas desde el formulario
		$nombre = htmlspecialchars($_POST['nombre']);
		$apellidos = htmlspecialchars($_POST['apellidos']);
		$pais = htmlspecialchars($_POST['pais']);
		$ciudad = htmlspecialchars($_POST['ciudad']);
		$fechanacimiento = htmlspecialchars($_POST['fecha']);
		$usuario = htmlspecialchars($_POST['usuario']);
		$pass = htmlspecialchars($_POST['contrasena']);
		$email = htmlspecialchars($_POST['email']);
		$descripcion = htmlspecialchars($_POST['descripcion']);
		
		
		//Realizo la consulta
		$q = "INSERT INTO usuarios (Nombre, Apellidos, Pais, Ciudad, Fechanacimiento, Usuario, Pass, Email, 				Descripcion)";
		$q .= " VALUES ('$nombre', '$apellidos', '$pais', '$ciudad', '$fechanacimiento', '$usuario', '$pass', '$email', 	'$descripcion')" ;
		
		//Lanzo una excepción por si hay errores
		try{
			if(!$con -> query($q))
				throw new Exception (" Ha habido un error en su registro, intentelo de nuevo mas tarde ");
				
		else	
			echo " Gracias por registrarse ";
			}
				
		catch (Exception $e){
			echo $e -> getMessage();
			}
		}
	?>
	</body>
</html>
  #2 (permalink)  
Antiguo 04/09/2012, 02:08
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 11 años, 11 meses
Puntos: 58
Respuesta: Problema de codigo

Imprime el contenido de $q antes de que se realice el insert.

¿Seguro que está entrando en el if?
if(isset ($nombre) && !empty ($nombre) && ($apellidos) && !empty ($apellidos) && ($pais) && !empty ($pais) && ($ciudad) && !empty ($ciudad) && ($fechanacimiento) && !empty ($fechanacimiento) && ($usuario) && !empty ($usuario) && ($pass) && !empty ($pass) && ($email) && !empty ($email) && ($descripcion) && !empty ($descripcion))
  #3 (permalink)  
Antiguo 04/09/2012, 09:27
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Problema de codigo

Vale, ya he conseguido que funcione, el ERROR estaba en la captura de las variables como HTMLSPECIALCHARS $_POST[]; no me las reconocia y no capturaba nada.......
Ahora lo que me gustaría hacer es que si el registro es satisfactorio....REDIRECCIONAR a otra pagina con un mensaje de bienvenida, como puedo hacerlo !?!? , he probado header....pero como ya he utilizado ECHO en otras ocasiones antes...... no se si será eso, pero el caso es que no redirecciona a ningun lado y no se como hacerlo, gracias a todos ! un saludo !
  #4 (permalink)  
Antiguo 04/09/2012, 09:28
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Problema de codigo

aclaro que me gustaria redireccionar en el BLOQUE TRY, donde especifico que si sale mal haga una cosa....y si sale bien REDIRECCIONE, ahi es donde quiero meterlo, se puede !?
  #5 (permalink)  
Antiguo 04/09/2012, 16:42
 
Fecha de Ingreso: marzo-2012
Ubicación: mexicali
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema de codigo

Si se puede solo tienes que poner el codigo del insert arriba antes de utilizar un echo.

prueba esto:
Código PHP:
Ver original
  1. <?php
  2.  
  3. function empty_array($vars){
  4.     foreach($vars as $value)
  5.     {
  6.         if(empty($_POST[$value]))
  7.         {
  8.             return true;
  9.         }
  10.     }
  11.     return false;
  12. }
  13.  
  14. $vars = array('nombre','apellidos' ,'pais','ciudad','fecha','usuario' , 'contrasena','email','descripcion');
  15. //Especifico que si está relleno el campo y no está vacio, realiza las instrucciones de conexión con la BD.
  16. if(!empty_array($vars))
  17. {
  18.     foreach($vars as $value)
  19.     {
  20.         $$value = htmlspecialchars($_POST[$value]);
  21.     }
  22.    
  23.     //Incluyo el archivo donde tengo los datos de conexión.
  24.     include_once("conexion.php");
  25.     $con = new mysqli($host,$user,$pw,$db);
  26.     {
  27.         die('Error al conectar con la base de datos');
  28.     }
  29.    
  30.  
  31.  
  32.     //Realizo la consulta
  33.     $q = "INSERT INTO usuarios (Nombre, Apellidos, Pais, Ciudad, Fechanacimiento, Usuario, Pass, Email,                 Descripcion)";
  34.     $q .= " VALUES ('$nombre', '$apellidos', '$pais', '$ciudad', '$fechanacimiento', '$usuario', '$pass', '$email',     '$descripcion')" ;
  35.    
  36.     //Lanzo una excepción por si hay errores
  37.     try{
  38.         if(!$con -> query($q))
  39.             throw new Exception (" Ha habido un error en su registro, intentelo de nuevo mas tarde ");
  40.         else
  41.             header('Location: pagina_a_redireccionar.php');
  42.     }      
  43.     catch (Exception $e)
  44.     {
  45.         echo $e -> getMessage();
  46.     }
  47. }
  48.    
  49. if (empty($_POST['button']))
  50. {
  51.     $primeravez = TRUE;
  52.     foreach($vars as $value)
  53.     {
  54.         $_POST[$value] = "";
  55.     }
  56. }
  57. ?>
  58. <html>
  59.  
  60.     <head>
  61.     <link href="estilo.css" rel="stylesheet" type="text/css">
  62.     <link href="estilos.css" rel="stylesheet" type="text/css">
  63.     </head>
  64.  
  65.     <body>
  66.         <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  67.           <table width="926" border="2" align="center">
  68.             <tr>
  69.               <td height="60" colspan="2" align="center"><h2>FORMULARIO DE REGISTRO</h2></td>
  70.             </tr>
  71.                 <?php
  72.                     foreach($vars as $value){
  73.                         echo'<tr>
  74.                         <td width="466" height="39">'.strtoupper($value).':</td>
  75.                         <td width="596"><input type="text" name="'.$value.'" id="'.$value.'" value="'.$_POST[$value].'"></td>';
  76.  
  77.                         if(empty ($_POST[$var]) && (empty($primeravez)))
  78.                         {
  79.                             echo " <tr><td></td><td class = 'error'> Tiene que introducir $value  </td></tr>";
  80.                         }  
  81.                     }
  82.                 ?>
  83.             <tr>
  84.               <td height="66" colspan="2" align="center"><input type="submit" name="button" id="button" value="REGISTRARSE"></td>
  85.             </tr>
  86.         </table>
  87.         </form>
  88.     </body>
  89. </html>

Etiquetas: formulario, html, mysql, registro, sql, variables, 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 02:58.