Novato en programación

kroSio

#58 hecho !! ya me funciona, por dios voy a llorar de la emoción XDDDD Gracias !

#60 Es qué estoy obsesionado con que vaya cada cosa separada, por qué nuestro profesor no quiere que tengamos php y html mezclado... y encima de que sé poco, pues me hago un lio bastante gordo... muchas gracias por la ayuda, a todos ^^

1 respuesta
Merkury

#61 De nada, pero a veces es inevitable mezclar PHP y HTML.

A mi una técnica que me gusta para cosas pequeñas es generar el HTML a través del echo de PHP XD

1 respuesta
kroSio

#60 y #62 os dejo el codigo de como me ha quedado, y si se puede pulir algo más, no vaya a ser que me diga el profesor... ¿y esto por que lo usas? y esté de adorno o algo xDD

registro.php

<?php if($_POST) {
    $nombre = $_POST['nombre'];
    $usuario = $_POST['usuario'];
    $clave = $_POST['clave'];
    $email = $_POST['email'];
    if ($nombre == "" or $usuario == "" or $clave == "" or $email == "") { 
        header("Location: registro.php?mostrar_error=1"); 
    } else {
        include 'includes/config.php';
        $sql = sprintf("INSERT INTO usuarios VALUES (NULL,'$nombre','$usuario', md5('$clave'), '$email')");
        $res = mysql_query($sql);
        
if (!$res) header("Location: registro.php?mostrar_error=2"); $mensaje = sprintf("Usuario registrado correctamente"); } } ?>

respuesta.php

<div id="registro">
      	<?php if(isset($_GET['mostrar_error'])) { ?>
        <div class="error">
            <?php 
            if($_GET['mostrar_error']==1)  echo "Debes rellenar todos los campos";
            elseif ($_GET['mostrar_error']==2)  echo "Imposible conectar con el servidor ";
            echo "</div>";
    } ?>
    <form method="POST" action="respuesta.php">
        <label>Nombre:</label><input type="text" name="nombre"><br>
        <label>Nombre de usuario:</label><input type="text" name="usuario"><br>
        <label>Contraseña:</label><input type="password" name="clave"><br>
        <label>Email:</label><input type="text" name="email"><br>
    <div class="submit">
        <input type="submit" value="Registrar">
            </div>
    	   </form>
	  	</div>
   </div>
   </div>     

lo que me falla, (aparte de que no me valida los campos como el email.. que puedo poner lo que me salga....) es cuando termino el registro, que no me dice que el usuario se ha registrado correctamente, y me abre una página en blanco y ya está.

Creo que el error está en:

$mensaje = sprintf("Usuario registrado correctamente");

ya que no tengo esa variable en el otro documento y no se ni como ni donde añadirlo :S

1 respuesta
F3R7X0

No se si ira mucho al tema, pero a lo mejor a alguno le sirve de algo, ahora mismo unos de mi clase estan haciendo un streaming mierdens de desarrollo web en visual basic, por si quereis verlo ... http://es.twitch.tv/mikelrubio16

Merkury

¿sprintf?

Usa echo #63

Y por cierto en esa consulta puedes quitar el sprintf, no sirve de nada

1 respuesta
Lecherito

#34 #35

kroSio

#65 si pongo echo me muestra el mensaje pero en otra pagina en blanco que me lleva, yo quiero que lo haga en el mismo formulario, como el mensaje de cuando están los campos vacios que me lo marca arriba del formulario en rojo...

el sprintf también lo tengo en la linea 10 del archivo registro.php que he posteado en #63, con ese que hago? ya que es el que me inserta todo los campos en la base de datos...

1 respuesta
Merkury

#67 el sprintf no te hace la insercción.

Y si quieres que el mensaje se vea en donde el registro haz en el archivo php (si se mete bien el usuario)

 header("Location: registro.php?registro_ok=1"); 

Y luego en el HTML haz:

if($_GET['registro_ok'] == 1)
{
       echo '<label>Registro completado</label>'
}

De todas formas, #67 pedir ayuda y no entender lo que te decimos/pasamos no tiene mucho sentido.

1 respuesta
kroSio

#68 ya bueno, la verdad que me dicen de hacer codigo php en blanco y no tengo ni pajolera, intendo comprenderlo pero no hay manera, una vez creado más o menos entiendo lo que hace.

Es como el que entiende ingles pero no sabe hablarlo...

#70 si claro, busco lo que significan las cosas, por lo que tengo entendido de post y get, son metodos similares de envio, lo que pasa que uno lo hace por php codificado y otro por url, ¿no?

1 respuesta
Merkury

#69 Hombre deberías hacer por entender, la cosa es sabes lo que es el POST o el GET que has usado? ¿Te has molestado en buscarlo?

1 respuesta
Nucklear

Para mi una norma básica es que si no entiendes algo lo apuntes y lo estudies. No puedes codear si no comprendes lo que estas usando.

10 días después
kroSio

bueno, ya está de nuevo el pesado, tras decirme mi profesor que quiere que valide los datos, he tenido que restructurar todo, con la consecuencia de que ahora vuelvo como al principio, y no me funciona nada de nada :S, os explico

archivo de formulario de registro.php

<?php if(isset($_GET['mostrar_error'])) { ?>
        <div class="error">
            <?php 
            if($_GET['mostrar_error']==1)  echo "Debes rellenar todos los campos";
            else
			if ($_GET['mostrar_error']==2)  echo "El nombre debe tener menso de 15 caracteres ";
			else
			if ($_GET['mostrar_error']==3)  echo "El nick debe tener menos de 15 caracteres ";
			else
			if ($_GET['mostrar_error']==4)  echo "La contraseña no coincide ";
			else
			if ($_GET['mostrar_error']==5)  echo "El email no es valido ";
			else
			if ($_GET['mostrar_error']==6)  echo "Registrado correctamente ";
            echo "</div>";
    } ?>
    <form method="POST" action="respuesta.php">
        <label>Nombre:</label><input type="text" name="nombre"><br>
        <label>Nombre de usuario:</label><input type="text" name="usuario"><br>
        <label>Contraseña:</label><input type="password" name="clave"><br>
         <label>Repite la contraseña:</label><input type="password" name="clave2"><br>
        <label>Email:</label><input type="email" name="email"><br>
    <div class="submit">
        <input type="submit" value="Registrar">
            </div>
    	   </form>
	  	</div>
   </div>
   </div>     

ahora el archivo respuesta.php

<?php 
if(isset($_POST["submit"]))
{ 
$nombre = trim(htmlentities(mysql_real_escape_string($_POST["nombre"]))); 

$usuario = trim(htmlentities(mysql_real_escape_string($_POST["usuario"]))); 

$clave = trim(htmlentities(mysql_real_escape_string($_POST["clave"]))); 

$clave2 = trim(htmlentities(mysql_real_escape_string($_POST["clave2"]))); 

$email = trim(htmlentities(mysql_real_escape_string($_POST["email"])));

$mostrar_error = array(); 

if($nombre == "" or $usuario == "" or $clave == "" or $clave2 == "" or $email==""){ 
header("Location: registro.php?mostrar_error=1"); 

} 

if(strlen($nombre) > 15){ 
header("Location: registro.php?mostrar_error=2");  

} 

if(strlen($usuario) > 15){ 
header("Location: registro.php?mostrar_error=3");   

} 

if($clave != $clave2){ 
header("Location: registro.php?mostrar_error=4");   

}
 
if(!filter_var($email,FILTER_VALIDATE_EMAIL )){ 
header("Location: registro.php?mostrar_error=2");  

} 

else {
        include 'includes/config.php';
        $sql = "INSERT INTO usuarios VALUES (NULL,'$nombre','$usuario', md5('$clave'), '$email')";
        $reg = mysql_query($sql);
		
	if ($reg) header("Location: registro.php?mostrar_error=6");
	header("location: login.php");
 
} 
} 

?>

La cuestión es que ni me muestra los errores de ninguno de los campos ni nada, y a falta de una semana para entregarlo se me hace imposible empoyarme todo, y solo me queda improvisar y cojer codigo de lo que leo por diferentes tutoriales...

¿donde tengo los errores? sin rellenar nada le doy a enviar y me lleva a una página completamente en blanco :S

1 respuesta
Merkury

#72 Valida con javascript

O en su defecto haz devoluciones desde el script php con la variable $REQUEST['nombreVarCampo'] o con el $GET tal como validabas:

   if ($_GET['mostrar_error']==2)  echo "El nombre debe tener menso de 15 caracteres ";