Ir al contenido


Foto

generar códigos primari key auto_increment tipo 00001,00002,00003


  • Por favor identifícate para responder
4 respuestas en este tema

#1 caac

caac

    Newbie

  • Miembros
  • Pip
  • 1 mensajes

Escrito 13 enero 2014 - 03:57

hola gente, necesito generar códigos primari key auto_increment tipo 00001,00002,00003.....u otro tipo como proy01,proy02, proy03.... y mostrarlos a los usuarios para que identifiquen a que tipo de proyecto de investigacion pertenecen, porf si alguien podria ayudarme
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 13 enero 2014 - 04:19

Compañero, he editado el título del mensaje pues no es para nada intuitivo. ´

Saludos
  • 0

#3 porfi.dev

porfi.dev

    Advanced Member

  • Miembros
  • PipPipPip
  • 183 mensajes
  • LocationMy House @ México

Escrito 14 enero 2014 - 07:00

No hay forma directa con el motor de base de datos.

Tendrias que hacerlo con tu codigo PHP, suponiendo que tienes un autoincrement normal (1,2,3,4,5,6... 999, 1000, 1001)

utilzamos strlen para calcular


delphi
  1. $id = "6"; //Notese que es un string
  2. $cantidadDigito = strlen($id);
  3. $numCerosMaximo = 5; //es como decir 00000
  4.  
  5. for($i = $cantidadDigito; $i < 5; $i++){
  6.     $id = "0".$id;
  7. }


Al final quedaria algo como 00006.


Esto es solo una idea amigo, se me ocurren 3 procesos.

1. Dejar el autoincrement, y hacer el proceso que te mencione cada vez que se necesite.
Problema: Es que debes de hacer este proceso cada vez que quieras buscar o hacer algo con los registros para que el usuario lo vea asi.

2. Contar la cantidad de registros, y apartir de eso generar un ID como 0XXXX (aqui ya no seria autoincrement)
Problema: debes hacer un lock table para que no se registren multiples ID similares.

3. Crear un Stored Procedure, para que el motor de base de datos lo genere los ID como los deseas.



Mi recomendación es, comprobar que tipo de dato se va a manejar en laparte del back-end y en el front-end, mostrar "proy01" como ID tiene muchas formas de solucionarse.

Cuando tengas problemas con codigo qu hayas creado, estamos aqui para ayudarte.

Saludos  :)
  • 0

#4 Bish0p

Bish0p

    Advanced Member

  • Miembros
  • PipPipPip
  • 64 mensajes
  • LocationMéxico, DF

Escrito 30 enero 2014 - 11:09

Hola amigo,


Lo que pides para una base de datos en  MySql seria algo asi:



delphi
  1. CREATE  TABLE `bd`.`new_table` (
  2.   `idnew_table` INT ZEROFILL NOT NULL AUTO_INCREMENT ,
  3.   `new_tablecol` VARCHAR(45) NULL ,
  4.   PRIMARY KEY (`idnew_table`) );
  5.  
  6. INSERT INTO `bd`.`new_table` (`new_tablecol`) VALUES ('valor 1');
  7. INSERT INTO `bd`.`new_table` (`new_tablecol`) VALUES ('valor 2');
  8. INSERT INTO `bd`.`new_table` (`new_tablecol`) VALUES ('valor 3');




Para la segunda opcion que requieres de proy01,proy02, etc, no te recomiendo utilizar strings como llaves primarias. lo que se me ocurre es que puedes hacer una catalogo de proyectos y hay pongas los proyectos de los que dispones y los mandes a traer en donde requieras como llave foranea

Saludos


  • 0

#5 munozfino

munozfino

    Newbie

  • Miembros
  • Pip
  • 1 mensajes

Escrito 07 febrero 2014 - 12:16

Hala buenos Tardes nos se si es muy tarde para tu pregunta te envió esta código que creo que es lo que buscas



php
  1. $var="";
  2. $sql="select count(num_boleta),Max(num_boleta) from form";
  3.  
  4. $cs=$conexion->query($sql);
  5. while ($resul = $cs->fetch_array()){
  6. $count=$resul[0];
  7. $max=$resul[1];
  8. }
  9. if($count==0){
  10. $var="A001";
  11. }
  12.  
  13. else {
  14. $var="A".substr((substr($max,1)+1001),1);
  15. }


  • 0




IP.Board spam blocked by CleanTalk.