[PHP] Ayuda con formulario/BD

S

Saludos mortales de mediavida!

Hace poco empeze a estudiar PHP y tengo como proyecto el desarrollar una pagina web y estoy teniendo un problema registrando usuarios en la base de datos, uso el siguiente código:

spoiler

¿Que es lo que me dejo de poner o que hago mal? Cualquier ayuda por poca que sea es mucha para mi ^^

NeB1

tienes la funcion registrarse, pero no la llegas a usar, no??

haz esto fuera de la función:

registarse($POST['name'], $POST['email'],$_POST['pass']);

S

Tengo puesto algo parecido en el iput "submit", pero no se si eso esta bien.¿ Eso que me pones donde lo pongo exactamente?

Gracias por la respuesta ^^

Elektr0_ddr

Vaya cacao maravillao tienes con los lenguajes.

Lo primero de todo diferencia entre lenguajes del lado del servidor (PHP) y lenguajes del lado del cliente (Javascript)

Busca en google pero si separas el codigo PHP a un fichero registrar.php y en el FORM pones action="registrar.php" ya estarás más cerca jaja

eXtreM3

Vamos a ver, por partes xD

1º A la hora de hacer el insert, no pongas en la consulta el ID_USER y luego NULL, sobreentiendo que lo has puesto como auto_increment, con lo que no hace falta que pongas ni el campo a añadir (id_user) ni el NULL en values.

2º No le pongas @ delante de las consultas para que esconda el error, si te salta error en alguna consulta arréglala.

3º No hagas print, haz echo.

Y ahora, a lo tuyo:

Estás enviando la información del formulario a formulario.php mediante el action, entonces lo que tienes que programar de código php se tiene que encontrar en un archivo que se llame formulario.php, y sería algo así:

<php
//Tus datos de conexion a la bd
$dbc=mysql_connect('host','usuario','pass');
mysql_select_db('nombre de la BD');
//Fin de conexion

//Con esto cogemos las variables del formulario
$name = $_POST['name'];
$email = $_POST['email'];
$pass = $_POST['pass'];

//Y ahora insertamos en la bd
$query= "INSERT INTO `a8576124_EoHe`.`USUARIO` (`EMAIL`, `NICK`, `PASS`) VALUES ('$email,'$name','$pass')";

if(mysql_query($query)){
echo '<p>Registrado correctamente</p>';

}else{
echo '<p style="color: red" >Error al registrar</p>';
}

?>

Creo que debería funcionar ;)

NeB1

#5 va a meter ese código dentro de la función y no le vá a funcionar porque en ningún momento le pasa los valores de $_POST a la función

Elektr0_ddr

#6 En #5 no hay ninguna funcion, directamente coger los parametros enviados por POST y hace la inserción xD

NeB1

#7 pero el código de #5 es clavado al que #1 tiene dentro de la función 'registrarse' arreglando algunas cosas. digo que igual se lía y mete ese código dentro de su función

eXtreM3

Hombre, le he dicho que ese código tiene que ir en un archivo llamado formulario.php

Se me olvidó decir que la función registrarse la puedes borrar #1, no te hace falta.

Por cierto #1, después del echo Registrado correctamente, puedes poner esta línea

header("Location:index.php");

Para que te redireccione si hace la inserción (aunque el "registrado correctamente" no lo verás, ya que lo imprime y rapidamente redirecciona)

S

Muchas gracias por las respuestas, acabo de llegar a casa asi que lo voy a probar todo. Lo malo que ahora he perdido los datos de la base da datos XDDD En fin, cuento los encuentre lo pruebo y os comento.

Muchas gracias de nuevo.

Si me salta un fallo o me funciona os aviso.

Edito: Bueno, tras algun que otro error (antes no me salian, asi que fue un paso de gigante) ya me funciona. Muchas gracias a todos los que me habéis contestado, y preparaos porque seguro que caen mas^^

eXtreM3

Cómo lo hiciste al final? Has eliminado la función registrarse y has creado el formulario.php? o de otra forma...

NeB1

#10 bienvenido ;).

#11 xDD seguro que al final lo ha hecho como le has dicho. No obstante he de decir, que el usar la función registrarse me parece buena idea, simplemente porque me gusta más que usen funciones o procedimientos para luego reutilizar código. Después metes esas funciones en un archivo rollo functions.php y tienes funciones pa hacer de tó

guner

#9 así lo que no va a ver es la redirección.

eXtreM3

#13 what?

NeB1

#14 igual se refiere a que si pones un header después de un ECHO te casca el header.

S

Lo hice con dos ficheros aparte, llamando a formulario.php, sin funciones. Pero me fallaba la funcion para insertar los datos en la base de datos, el php acabo tal que asi:





$dbc=mysql_connect('webhost','admin','pass');
mysql_select_db('nombreBD');



$name = $POST['name'];
$email = $
POST['email'];
$pass = $_POST['pass'];


$query= "INSERT INTO a8576124_EoHe.USUARIO (EMAIL, NICK, PASS) VALUES ('".$email."','".$name."','".$pass."')";

if(mysql_query($query)){
echo '<p>Registrado correctamente</p>';

}else{
echo '<p style="color: red" >Error al registrar</p>';
}

Lo único que cambia son las comillas en las variables ^^ Muchas gracias de nuevo sumachos ^^

Usuarios habituales

  • Silvox
  • NeB1
  • eXtreM3
  • guner
  • Elektr0_ddr