Asignar numero en tabla automaticamente

Iniciado por teudiss, 17 Marzo 2010, 08:00 AM

0 Miembros y 1 Visitante están viendo este tema.

teudiss

tengo una tabla con numero,nombre y apellidos,  tengo que grabar usuarios con un numero unico para cada uno 1,2,3,4...... y que de alguna forma dicho numero se muestre en el formulario (en pantalla) antes de rellenar el formulario (no despues de enviar el formulario)

Es posible ?

index.php
<form id="form1" method="post" action="registro.php">
         NOMBRE</span>
        <input name="nombre" type="text" id="nombre" />
        <span class="Estilo10">APELLIDO_1</span>
      <input name="apellido_1" type="text" id="apellido_1" />
      </label>
      <span class="Estilo10">APELLIDO_2</span>
      <input name="apellido_2" type="text" id="apellido_2" />
    </p>
    <p>
     
    </p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <input type="submit" name="Submit" value="Enviar Registro" />
  </form>


registro.php
<?php
    
// Primero comprobamos que ningún campo esté vacío y que todos los campos existan.
    
if
(isset(
$_POST['nombre']) && !empty($_POST['nombre'])) &&
    isset(
$_POST['apellido_1']) && !empty($_POST['apellido_1']) &&
    isset(
$_POST['apellido_2']) && !empty($_POST['apellido_2'])) 
{
    

        
// Si entramos es que todo se ha realizado correctamente

        
$link mysql_connect("localhost","root","111");
        
mysql_select_db("Alumnos",$link);

        
// Con esta sentencia SQL insertaremos los datos en la base de datos
        
mysql_query("INSERT INTO chicos(nombre,apellido_1,apellido_2)
        VALUES ('
{$_POST['nombre']}','{$_POST['apellido_1']}','{$_POST['apellido_2']}')",$link);

        
// Ahora comprobaremos que todo ha ido correctamente
        
$my_error mysql_error($link);

        if(!empty(
$my_error)) {

            echo 
"Ha habido un error al insertar los valores. $my_error"

        } else {

            echo 
"Los datos han sido introducidos satisfactoriamente";

        }

    } else {

        echo 
"Error, no ha introducido todos los datos";

    }

?>



fede_cp

No entiendo muy bien lo que decis, decis que antes de loguearte, o de ingresar lo que tengas que ingresar, te reconozca con un id, que sea tuyo??.


si es eso, sin haber ingresado ningún tipo de dato, no creo que sea posible, no hay una camarita qeu te vea y diga oh, es ese usuario, toma el num 21. jaja  :laugh:



saludos, porai no entendi bien.
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!

teudiss

No, creo que no me explique muy bien.

Mi tabla contiene ahora 55 registros, quiero que el registro 56 se me muestre en el formulario a la vez que estoy rellenando el nuevo registro.

^Tifa^

Tendrias que hacer antes de que el usuario ingrese al formulario  ;) cuando clickee el boton o URL link del formulario, que este tenga una funcion dentro que consulte el campo de la tabla en cuestion que contiene los numeros, y que verifique cual es el ultimo numero (esto lo puedes verificar con SELECT MAX(campo) FROM TABLA) y cuando te retorne, agregar ese valor a una variable y sumarle 1 a ese valor para que asi quede en el siguiente numero  ;)

Ahora... tienes un dilema, un valor flotante en dicha variable porque si el usuario ingresa al formulario y ok se le coloca arriba tu ID sera tal... y si el usuario no llena el formulario y lo cancela, tendras que liberar de memoria ese valor en la variable para asignarselo a otro usuario.... pero si el usuario si llena y envia el formulario, bastaria con tomar el valor de esa variable he ingresarla a la tabla junto a la info del usuario  :P

fede_cp

claro, esta en lo correcto tifa, no habias expresado bien, si lo que queres es que antes de que un usuario se registre,o haga lo que haga, te diga el id que va a tener es fácil, en la tabla agregas una columna con los id, auto increment. y haces un max del id + (mas) 1,

saludos!
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!

teudiss

Cita de: ^TiFa^ en 17 Marzo 2010, 17:19 PM
Tendrias que hacer antes de que el usuario ingrese al formulario  ;) cuando clickee el boton o URL link del formulario, que este tenga una funcion dentro que consulte el campo de la tabla en cuestion que contiene los numeros, y que verifique cual es el ultimo numero (esto lo puedes verificar con SELECT MAX(campo) FROM TABLA) y cuando te retorne, agregar ese valor a una variable y sumarle 1 a ese valor para que asi quede en el siguiente numero  ;)

Ahora... tienes un dilema, un valor flotante en dicha variable porque si el usuario ingresa al formulario y ok se le coloca arriba tu ID sera tal... y si el usuario no llena el formulario y lo cancela, tendras que liberar de memoria ese valor en la variable para asignarselo a otro usuario.... pero si el usuario si llena y envia el formulario, bastaria con tomar el valor de esa variable he ingresarla a la tabla junto a la info del usuario  :P

Efectivamente es un problema si cancela, otro problema seria si hay mas de un usuario a la vez grabando verdad ?

Citarclaro, esta en lo correcto tifa, no habias expresado bien, si lo que queres es que antes de que un usuario se registre,o haga lo que haga, te diga el id que va a tener es fácil, en la tabla agregas una columna con los id, auto increment. y haces un max del id + (mas) 1,

Esto funciona si grabas 3 registros a la vez ? dedes 3 ordenadores distintos ?

raul338

Cita de: teudiss en 18 Marzo 2010, 11:43 AM
Cita de: ^TiFa^ en 17 Marzo 2010, 17:19 PM
Tendrias que hacer antes de que el usuario ingrese al formulario  ;) cuando clickee el boton o URL link del formulario, que este tenga una funcion dentro que consulte el campo de la tabla en cuestion que contiene los numeros, y que verifique cual es el ultimo numero (esto lo puedes verificar con SELECT MAX(campo) FROM TABLA) y cuando te retorne, agregar ese valor a una variable y sumarle 1 a ese valor para que asi quede en el siguiente numero  ;)

Ahora... tienes un dilema, un valor flotante en dicha variable porque si el usuario ingresa al formulario y ok se le coloca arriba tu ID sera tal... y si el usuario no llena el formulario y lo cancela, tendras que liberar de memoria ese valor en la variable para asignarselo a otro usuario.... pero si el usuario si llena y envia el formulario, bastaria con tomar el valor de esa variable he ingresarla a la tabla junto a la info del usuario  :P

Efectivamente es un problema si cancela, otro problema seria si hay mas de un usuario a la vez grabando verdad ?
Claro, si "reservas" y nunca llega a enviar el formulario, tendrias un registro vacio y tendrias que limpiarlo despues

Cita de: teudiss en 18 Marzo 2010, 11:43 AM
Citarclaro, esta en lo correcto tifa, no habias expresado bien, si lo que queres es que antes de que un usuario se registre,o haga lo que haga, te diga el id que va a tener es fácil, en la tabla agregas una columna con los id, auto increment. y haces un max del id + (mas) 1,

Esto funciona si grabas 3 registros a la vez ? dedes 3 ordenadores distintos ?

Teoricamente si, pero igual, asignale un nuevo "id" cuando se registre y dale el definitivo cuando se registre. Ejemplo
Tenemos los usuarios A, B, C:

A solicita la pagina, luego C y luego b
C es el primero en enviar el formulario, luego B y A no lo envia (cerro la ventana, ni si quiera puso cancelar)

Si reservas te quedarian.
ID | Usuario
1 | NULL (A)
2 | B
3 | C

Si le asignas cuando envian en el formulario te quedaria
ID | Usuario
1 | C
2 | B

y el A no apareceria

Al menos esa es mi idea, espero que te sirva

teudiss

Ok, NULL tambien ocurre cuando dejas el campo de texto vacio en un formulario, para que no ocurra esto.... es decir para que en mi tabla este el campo vacio en vez de que aparezca "NULL" tendria que configurar los registros de la tabla desactivando la pestaña de nulo ¿ es eso correcto ?

Mas que nada es por que tengo que realizar algunas consultas de los registros que sean distintos de "rojo" por ejmplo y no quieisera que me mostrara los  tambien los "NULL"

Gracias de nuevo

raul338

el problema de implementar NOT NULL es que se puede poner "" :xD

Haz dos tablas, una temporal y otra definitiva. Cuando alguien quiere ingresar le creas el registro en la tabla temporal y cuando termine lo mueves a la definitiva. Si quieres tener todo en una sola tabla hazle un flag (emjemplo: TerminoRegistro)

Luego limpias
Código (sql) [Seleccionar]
DELTE FROM REGISTROS WHERE TerminoRegistro = 'NO'

-Ramc-

Y ¿el número del ID está directamente relacionado con la antiguedad? Porque si no es así, puedes recorrer la tabla en busca de espacios vacios e ir agregando ahí, es costoso a nivel de optimización sobre todo cuando tienes muchos registros, pero, el problema está básicamente en que tengas que mostrarle al usuario el ID cuando ni siquiera ha hecho un registro efectivo, la idea de raul338 de una tabla alternativa y temporal tendría el mismo problema con espacios vacios.

¿Es 100% necesario mostrar el ID antes y no después del registro?

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.