Foros del Web » Programando para Internet » PHP »

no inserta el primer registro.. y los demas si

Estas en el tema de no inserta el primer registro.. y los demas si en el foro de PHP en Foros del Web. Hola! Vieran.. tengo un problema bien curioso.. esoty haciendo un script en php y estoy en la aprte de registro de ususarios. Tengoel form, meto ...
  #1 (permalink)  
Antiguo 29/06/2003, 23:23
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 892
Antigüedad: 15 años, 10 meses
Puntos: 3
no inserta el primer registro.. y los demas si

Hola!

Vieran.. tengo un problema bien curioso.. esoty haciendo un script en php y estoy en la aprte de registro de ususarios. Tengoel form, meto los datos en la BD y despues de eso envio los datos del ususario a su mail (Contiene el nombre de ususario el pass y un numero pa activar la cuenta). Total, lo pruebo y va perfecto.. envia el mail, el mail llega con los datos insertados perocuando veo la tabla de la BD los datos no se han insertado! Despues diog que voy a hacer otra prueba.. y registor otor usuario, el mail se envia.. el mai llega con lso datos, veo la BD y estan los datos del segundo usuarioque registre! y asi sucesivamente.. es decir.. todos los demas ya se registran bien, pero el primero no! ¿Por que? Aqui esta el codigo...:

Código PHP:

<?
//Sacamos el numero al azar
$identificador rand(1000,9999);
if(!
$envio) {
?>
//El form
<?
}
        else
        {
        include(
"config.php");
        
        
//Insertamos los datos del Form
        
        
$query "INSERT into usuarios(nombre, pais, username, password, mail, identificador) VALUES('$nombre', '$pais', '$username', '$password', '$mail', '$identificador')";
        
$insertar mysql_query($query,$conexion);
        
        
//Sleccionamos los datos del ultimo usuario que se registro
        
        
$seleccion "SELECT * FROM usuarios WHERE username = '$username'";
        
$query2 mysql_query($seleccion,$conexion);
        
$datos mysql_fetch_array($query2);
        
        
//Variables
        
$nombre2 $datos["nombre"];
        
$nick $datos["username"];
        
$pass2 $datos["password"];
        
$identificador2 $datos["identificador"];
        
$correo2 $datos["mail"];
        
        
        
//Enviamos el mail
        
        // Tu email
        
$destino "$correo2";

        
// Asunto
        
$asunto "Bienvenido a Blog Comunitario!";

        
// Mensaje
        
$mensaje "Estimado $nombre2\n\nEl Blog Comunitario de Samue.com.mx te da la bienvenida como nuevo usuario
                    y esperamos que le des uen uso. Por favor, para poder utilizar tu cuenta dirigete a [url]www.samue.com.mx/tublog/activar.php[/url]
                    e introduce los siguientes datos:\n\nUsuario: $nick\nPassword: $pass2\nIdentificador: $identificador2\n\n
                    Una vez realizado este paso puedes empezar a postear mensajes, vamos.. animate!\n\nGuarda este mail para
                    futuras referencias.\n\nSamuel A. A.\nWebmaster"
;


        
// Enviamos el email
        
mail($destino$asunto$mensaje"From: [email][email protected][/email]");

        
// Redireccionamos a 'gracias.php'
        
echo "<font size=-1>El usuario se dio de alta correctamente, sin embargo no podra ser utilizado hasta que la cuenta se haya activado. Por favor, checa tu correo, dirigete a la dirección que ahi se especifica y pon tu nombre de usuario, contraseña y codigo de activación para empezar a usar tu cuenta. <b>Bienvenido!!</b></font>";
                
        
        }
        
?>
Pues ahi esta... ya lo he probado y efectivamente.. cuando se inserta el primer registro no se inserta en la bd y los datos si llegan al correo.. y despues ya todo va perfecto con los demas inscritos... alguien sabe la razon?

Tnks
__________________
Equívocos sin importancia
  #2 (permalink)  
Antiguo 30/06/2003, 01:28
 
Fecha de Ingreso: mayo-2003
Ubicación: Mntevideo Uruguay
Mensajes: 12
Antigüedad: 14 años, 7 meses
Puntos: 0
Sonrisa HABRIA QUE MIRAR UN POCO MAS ADENTRO

Sin mirar como tenes armada la base de datos, se me complica un poco decirte que exáctamente esta mal, pero te recomiendo que empiezes mirando la definición del campo identificador, ya que al usar random puedes caer fuera del rango que definiste para el identificador, te recomiendo que agregues muchos y revises si estan todos menos el primero si fuese asi habria que estudiar mas, si "desaparecen" varios puede que mi teoría sea correcta.
  #3 (permalink)  
Antiguo 30/06/2003, 03:29
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Solo una curiosidad. Dices que el email te llega con los datos correctos, ¿verdad?. Pues por lo que veo esos datos los lees de la base de datos justo despues de guardar los datos en la BD. Curioso, porque si los lee es que los ha guardado.

Por si acaso, usa mysql_affected_rows() para saber si inserto el registro.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 30/06/2003, 11:56
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 892
Antigüedad: 15 años, 10 meses
Puntos: 3
heeelp!

aaaaaaah vo a llorar...
ahora creo que inserta los datos cuando quierey cuando no no! y no he movido nada al codigo...

AdmServidores.. aqui esta la estructura de la tabla:

CREATE TABLE usuarios (
id smallint(5) unsigned NOT NULL auto_increment,
nombre text NOT NULL,
pais text NOT NULL,
username text NOT NULL,
password text NOT NULL,
mail text NOT NULL,
identificador varchar(4) NOT NULL default '',
activo char(2) NOT NULL default 'no',
PRIMARY KEY (id)
) TYPE=MyISAM;

Josemi.. efectivamente a mi tambien se me hace curioso uqe los datos si lleguen... y no se muestren el la DB.. intente poner el mysql_affected_rows() pero no se como deba de ir la estructura y me marca error

Inetnte asi

echo mysql_affected_rows($insertar);

Donde $insertar contiene el query y la variable de conexion.. heeeelp!

Edit: Me e dadocuenta que si dejo solamente el Insert (Es decir sin sacar los datos del ultimo usuario y el envio de mail) si agrega a todos los uusarios!
__________________
Equívocos sin importancia

Última edición por Threepwood; 30/06/2003 a las 11:59
  #5 (permalink)  
Antiguo 30/06/2003, 12:16
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Segun la configuración de tu script, el registro SI se ha insertado... fijate:

1.- Lees formulario
2.- Insertas en la BD
3.- Haces un query en la BD y le pides el registro de $username
4.- La base de datos te entrega el resultado
5.- Con ese resultado llenas los campos del correo

Como puedes ver, tu envio de correo NUNCA interactua con los datos del formulario, sino con el registro del usuario en la BD. Por lo tanto, si el mail se manda quiere decir que el registro en la BD si existe.

No será que tu programa o script para accesar a la BD es el que no te esta enseñando el registro?
__________________
Manoloweb
  #6 (permalink)  
Antiguo 30/06/2003, 12:23
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 892
Antigüedad: 15 años, 10 meses
Puntos: 3
Manoloweb..

Efectivamente es muy extraño todo. Utilizo phpmyadmin y en caso de que me estuviera engañando seria la primera vez.

Cuando voy a checar si introdujo el ususario en la abla me voy a la BD Diario, tabla usuarios y veo el boton Examniar desactivado y en Filas 0 sin embargo el correo si llega..... y es justo como tu dices los datos del mail nunca hacen contacto con el form si no con la DB.

No se.... estoy confundido
__________________
Equívocos sin importancia
  #7 (permalink)  
Antiguo 30/06/2003, 18:35
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 892
Antigüedad: 15 años, 10 meses
Puntos: 3
Vamos vamos gente!!!

Ayuda! Se que ustedes pueden... el misterio esta en que segun yo los datos no se almacenan en la tabla pero el correo si llega conlosdatos que se extraen de la tabla! Heeeeeelp!
__________________
Equívocos sin importancia
  #8 (permalink)  
Antiguo 30/06/2003, 21:56
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 892
Antigüedad: 15 años, 10 meses
Puntos: 3
Pues parece ser el final de la hisoria.

Subi el script a mi servidor y ahi todo funciona perfectamente, al parecer es problema con my mysql o phpmyadmin aun que es la primera vez que me pasa.

Gracias a todos :D
__________________
Equívocos sin importancia
  #9 (permalink)  
Antiguo 01/07/2003, 00:11
 
Fecha de Ingreso: mayo-2003
Ubicación: Mntevideo Uruguay
Mensajes: 12
Antigüedad: 14 años, 7 meses
Puntos: 0
RANDOM

Estas seguro que funciona 100% bien.
Tengo una teoría, la funcion rand genera un entero y la usas para $identificador, sin embargo fijate que en la base de datos lo definiste como varchar, me parece que viene por ahi el problema, tal vez habria que conocer un poco mas el comportamiento de mysql al respecto, pero eso es una anomalia que puede provocar esa falla.

Documentación:

1. identificador varchar(4) NOT NULL default
2. rand
(PHP 3, PHP 4 )

rand -- Generate a random value
Description
int rand ( [int min, int max])


If called without the optional min, max arguments rand() returns a pseudo-random value between 0 and RAND_MAX. If you want a random number between 5 and 15 (inclusive), for example, use rand (5, 15).
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:37.