Registro de usuarios PHP

Espero puedan ayudarme en el tema, son varias dudas pero quiero empezar con esta... Tengo el siguiente código...

El php que envía los datos a una tabla...

<!--?php<br/-->error_reporting(0);
$nombre = $_POST['nombre'];
$apellidos = $_POST['apellidos'];
$edad = $_POST['edad'];
$correo = $_POST['correoenvia'];
$tel = $_POST['tel'];
$loc = $_POST['loc'];
$user = $_POST['user'];
$pss = $_POST['pss'];
$mensaje .= "Registro en CLIENTES de Environment con nombre de : \n" . $nombre . " " . $apellidos . "\n\n";
$mensaje .= "Edad : " . $edad. "\n\n";
$mensaje .= "E-mail : " . $correo. "\n\n";
$mensaje .= "Telefono : " . $tel. "\n\n";
$mensaje .= "Localidad : " . $loc. "\n\n";
$mensaje .= "Usuario creaado : " . $user. "\n\n";
$mensaje .= "Password creaado : " . $pss. "\n\n";
$mensaje .= "Enviado el : " . Date('d/m/Y', time());
$cabecera .= 'From: ' . $correo . "\n";
$para = '[email protected]';
$para1 = '[email protected]';
$asunto = 'Nuevo usuario en CLIENTES de Environment';
mysql_connect ('xxx', 'yyy', 'zzz') or die ('Error: ' . Mysql_error());
mysql_select_db ('aaa');
$query="INSERT INTO usuarios_ctes (nombre, apellidos, edad, correo, telefono, localidad, username, password) VALUES 
('$nombre', '$apellidos', '$edad', '$correo', '$tel', '$loc', '$user', '$pss')";
mysql_query($query) or die ('Error en la carga de datos');
mail($para, $asunto, $mensaje, $cabecera) and mail($para1, $asunto, $mensaje, $cabecera);
header("location:respuesta.html")
/*echo "Los datos se han enviado con exito"*/
/*echo 'Agendar otro paciente';*/
?>

Cuando se hace el envío me muestra una respuesta...

<html><head>
 <title>Datos</title> 
 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <meta http-equiv="Content-Script-Type" content="text/javascript">
 <link href="css/estilos.css" rel="stylesheet" type="text/css" />
 <script language="JavaScript">
<!--
function FP_swapImg() {//v1.0
 var doc=document,args=arguments,elm,n; doc.$imgSwaps=new Array(); for(n=2; n<args.length;
 n+=2) { elm=FP_getObjectByID(args[n]); if(elm) { doc.$imgSwaps[doc.$imgSwaps.length]=elm;
 elm.$src=elm.src; elm.src=args[n+1]; } }
}
function FP_preloadImgs() {//v1.0
 var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();
 for(var i=0; i<a.length; i++) { d.FP_imgs=new Image; d.FP_imgs.src=a; }
}
function FP_getObjectByID(id,o) {//v1.0
 var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById) el=o.getElementById(id);
 else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;
 if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c)
 for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]); if(el) return el; }
 f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;
 for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]); if(el) return el; } }
 return null;
}
// -->
</script>
</head>
<body onload="FP_preloadImgs(/*url*/'buttons/buttonAF.gif',/*url*/'buttons/buttonB0.gif')">
<div id="contenedor">
 <div id="cabecera">
 <h1>USUARIO CREADO</h1> 
 </div>
 <div class="elemento">
 <br><br>
 <h2>Usuario creado con exito.</h2>
 <p>Ya puedes acceder a contenido exclusivo.</p>
 </div>
</div>
<div style="position: absolute; width: 100px; height: 100px; z-index: 1; left: 391px; top: 238px" id="layer1">
 <a href="login.php">
 <img border="0" id="img1" src="buttons/buttonAE.gif" height="33" width="165" alt="Iniciar Sesion" onmouseover="FP_swapImg(1,0,/*id*/'img1',/*url*/'buttons/buttonAF.gif')" onmouseout="FP_swapImg(0,0,/*id*/'img1',/*url*/'buttons/buttonAE.gif')" onmousedown="FP_swapImg(1,0,/*id*/'img1',/*url*/'buttons/buttonB0.gif')" onmouseup="FP_swapImg(0,0,/*id*/'img1',/*url*/'buttons/buttonAF.gif')" fp-style="fp-btn: Embossed Capsule 4; fp-font-style: Bold; fp-transparent: 1" fp-title="Iniciar Sesion"></a></div>
</body></html>

Todo trabaja de maravilla, me guarda los datos en la DB, mi pregunta es como puedo hacer que al mostrar el resultado de usuario creado con éxito, me diga "Su ID de usuario es 123" donde -123- es el campo ID de mi tabla que es incremental cada que se guarda un registro, a su vez es otra consulta, como puedo hacer que em mi base de tatos ese ID empiece a corres desde por ejemplo 100 y no desde 1,

1 respuesta

Respuesta
1

Para poder averiguar el ultimo id insertado, php dispone de una función mysql_insert_id que sirve para eso.

Es tan simple de usar como

$ultimoId = mysql_insert_id($manejador);

donde $manejador es el manejador de la conexión a la base de datos. Es un problema que veo en tu código que no estableces un manejador para la conexión, supongo que se crea uno implícito, por lo tanto supongo que llamar a mysql_insert_id(); después de mysql_query($query) or die ('Error en la carga de datos'); pienso que te devolverá el dato.

Te aconsejo que orientes a objetos tu código.
Para que el auto incremento comience por 100 debes ejecutar una consulta sql en tu tabla

ALTER TABLE `mitabla` AUTO_INCREMENT =100;

el siguiente registro tomará el id 100 y el siguiente 101 y así. Ten en cuenta que no exista el id 100 ni posteriores o dará error en la creación de que el id ya existe.
Si usas phpmyadmin en operaciones tienes el campo para indicarlo mas gráficamente.

Ok perfecto en la consulta para incrementar el ID corre de maravilla gracias, pero en el tema del ID mm soy casi nuevo en esta parte y no te entendí muy bien, no se si tampoco me día entender replanteo mi duda por si acaso ...

quisiera que cuando me registrara y aparezca mi pagina de bienvenido etc etc etc, me mande un mensaje bienvenido USUARIO tu numero de usuario es XXX

donde XXX es el id que crea al registrarse.

muchas gracias saludos

Supongo que la tabla usuarios_ctes que usas donde insertas, tiene un campo id auto incrementable. Ese Id es el que quieres mostrar, y supongo que no se obtiene de manera diferente al nombre u otro dato de la tabla.

Con una consulta

SELECT * from usuarios_ctes order_by 'id_cliente' desc limit 1;

donde 'id_cliente' debe ser el nombre del campo id de tu tabla.

Esto te devolvería el último usuario registrado, pero la situación normal es que se obtenga a través de unas credenciales mandadas anteriormente (usuario y password), por lo que supongo que tendrás algo como

select * from usuarios_ctes where username='usernameenviado' and password='passwordenviado' 

Y así obtienes el usuario de la persona que se ha logueado verdad? pues con el * se indica que tome todos los campos, al obtenerlos debes llevarlo también.

Lo único que me queda es saber si creas un array asociativo o cómo lo haces, pero sería crear un array con los datos devueltos, un elemento por cada campo, y uno de los elementos sería el necesitado Id.

Perdón, en la 1º consulta, el order by se especifica order by, no order_by como te he puesto. De igual forma esa 1º consulta es explicativa tu usaras la 2º, pero si la ejecutas por verla, modifica eso

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas