Foros del Web » Programando para Internet » PHP »

Código para registrarse

Estas en el tema de Código para registrarse en el foro de PHP en Foros del Web. Hola, estoy haciendo un código para que los usuarios se registren en una página. Creo que lo he hecho todo bien, incluso son partes de ...
  #1 (permalink)  
Antiguo 17/08/2009, 15:22
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Código para registrarse

Hola, estoy haciendo un código para que los usuarios se registren en una página. Creo que lo he hecho todo bien, incluso son partes de códigos que ya me han funcionado en otras ocasiones, sin embargo esto no me funciona y no veo el error por ningún lado. Por otro lado, no sé si es la mejor manera de hacerlo.

Son dos ficheros: formregistro.html y registro.php:

<html>
<form action="registro.php" method="post">
Usuario: <input type ="text" name ="dato[]"><br>
Contraseña: <input type= "text" name="dato[]"><br>
Nombre: <input type= "text" name="dato[]"><br>
Apellidos: <input type= "text" name="dato[]"><br>
Centro: <input type= "text" name="dato[]"><br>
Provincia: <input type= "text" name="dato[]"><br>
Población: <input type= "text" name="dato[]"><br>
Número de colegiado: <input type= "text" name=""dato[]"><br>
<input type ="submit" value ="LOG IN">
</form>
</html>

y registro.php

<?php
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$repetido=mysql_query("select count(*) from autores where nick=POST['usuario']");
if ($repetido){
echo "ya está en uso";
echo "<form action ='formregistro.html'><BR>";
echo"<input type='submit' value='ACEPTAR'><br>";
}
else{
$campo=$_post['dato'];
mysql_query("Insert autores
(nick,contraseña,nombre,apellidos,centro,provincia ,poblacion,colegiado)
VALUES
($campo[0],$campo[1],$campo[2],$campo[3],$campo[4],$campo[5],$campo[6]),$campo[7]");
echo "registrado corréctamente";
echo "$campo[0]";
echo "<form action ='opciones.php'><BR>";
echo"<input type='submit' value='ACEPTAR'><br>";
}
?>
</html>

Cuando me registro, me sale el mensaje de que me he registrado correctamente, pero la tabla autores sigue vacía.
  #2 (permalink)  
Antiguo 17/08/2009, 15:47
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 14 años, 9 meses
Puntos: 13
Respuesta: Código para registrarse

por qué el nombre de los input es dato[] ???
mejor ponle usuario o usu para que te sea más fácil saber que estás haciendo más adelante y qué es lo que estás guardando.

estás guardando la variable campo[x] y en ningun momento tienes declarada tal variable, además tampoco veo que estes recibiendo los datos del formulario. por ende no estas guardando nada, por eso sale vacia en tu BD!

yo lo haria asi:
Código PHP:
<?php
//Validamos si las variables vienen vacias o con datos
$user = (isset($_POST["usuario"])? $_POST["usuario"]:'');
$pass = (isset($_POST["contrasena"])? $_POST["contrasena"]:'');
$nom = (isset($_POST["nombre"])? $_POST["nombre"]:'');
$ape = (isset($_POST["apellido"])? $_POST["apellido"]:'');
$pro = (isset($_POST["provincia"])? $_POST["provincia"]:'');
    
//Validaciones del formulario, si hay un campo vacio le hacemos un cuak al usuario
if($user=="" || $pass=="" || $nom=="" || $ape=="" || $pro="")
{
    echo 
"<script>alert ('Debe Llenar Todos los campos')</script>";
    echo 
"<script>history.back()</script>";
}
else
//Acá conectamos la BD y consultamos por el nombre de usuario usuario
    
mysql_connect ("localhost""root""");
    
mysql_select_db ("tubase");
    
$consulta "Select usuario From tutabla Where usuario='$user'";
    
$resulta mysql_query($consulta);
        
    if (
$fila mysql_fetch_array($resulta)) //si existe nos dira y nos manda pa fuera
    
{
        echo 
"<script>alert ('El Usuario Ingresado Ya Existe!')</script>";
        echo 
"<script>history.back()</script>";
    }
        
    else 
//si no existe guardamos
    
{
        
$sql="Insert into tutabla (usuario,contrasena,nombre,apellido,provincia)
        values ('$user','$pass','$nom','$ape','$pro')"
;
        
mysql_query($sql);
        echo 
"<script>alert('Usuario Registrado con Exito!')</script>";
    }
}

?>
obviamente debes cambiar el name de los input por los que yo puse!

saludos
y nos avisas cualquier cosa

PD: no puse todos tus datos, pero es la idea, ahi tu completas lo que falta
  #3 (permalink)  
Antiguo 17/08/2009, 16:11
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Respuesta: Código para registrarse

Entiendo tu código, pero no veo gran diferencia con el mío, quiero decir, sigo pensando que el mío debería funcionar y no entiendo por qué no lo hace. Vamos a ver tus contestaciones:

1.por qué el nombre de los input es dato[] ???
mejor ponle usuario o usu para que te sea más fácil saber que estás haciendo más adelante y qué es lo que estás guardando.

Bueno, ok, pero eso no es un motivo para que no funcione


2.estás guardando la variable campo[x] y en ningun momento tienes declarada tal variable,
Esa idea la he tomado de este código tomado de un tutorial:

<html>
<head>
<title>Array en Forma :: PHP</title>
<head>
<body>
<br />
<b>Selecciona tus postres favoritos:</b><br /><br />
<form method="post" action="<?= $_SERVER['PHP_SELF'] ?>">
<input name="postre[]" type="checkbox" value="Helado de Vainilla">Helado de vanilla<br />
<input name="postre[]" type="checkbox" value="Pastel de Chocolate">Pastel de Chocolate<br />
<input name="postre[]" type="checkbox" value="Pay de elote">Pay de elote<br />
<input name="postre[]" type="checkbox" value="Bubulubu">Bubulubu<br />
<input name="postre[]" type="checkbox" value="Duraznos en almibar">Duraznos en almibar<br />
<input name="postre[]" type="checkbox" value="Fresas con crema">Fresas con crema<br />
<input name="send" type="submit" id="send" value="Enviar!">
</form>

<?php
if (isset($_POST['postre']))
{
$postre = $_POST['postre'];
$n = count($postre);
$i = 0;

echo "Tus postres favoritos son: rn" .
"<ol>";
while ($i < $n)
{
echo "<li>{$postre[$i]}</li> rn";
$i++;
}
echo "</ol>";
}
?>

</body>
</html>

Esta instrucción $postre = $_POST['postre']; es similar a la mía. Tampoco declara $postre y funciona. No es necesario declarar las variables en php.

3. además tampoco veo que estes recibiendo los datos del formulario. por ende no estas guardando nada, por eso sale vacia en tu BD

Los estoy recibiendo por post. Es cierto que no lo estoy comprobando como tú. Es verdad que es buena costumbre hacerlo, pero los estoy recibiendo, y si no los estoy recibiendo, no sé por qué no.
  #4 (permalink)  
Antiguo 17/08/2009, 16:31
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Código para registrarse

si el nombre para todos tus campos es dato[] <--- solo toma el ultimo de estos que es arreglo ----> 0
si generaras los campos mediante if's se generarían nombres de variables distintos
1, 2, 3 .... etc. este no es el caso.
ademas no le veo el fin del arreglo si al final igual estas ingresando dato por dato....
la forma correcta es como la plantea Twonex, es solo una alternativa pero es correcta, por lo menos para este caso.


saludos...
__________________
Gokuh Salvo al mundo. PUNTO!!!!
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:28.