Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/01/2010, 12:06
Avatar de De_la_Cuesta_13
De_la_Cuesta_13
 
Fecha de Ingreso: abril-2009
Ubicación: Cali, Colombia.
Mensajes: 265
Antigüedad: 15 años
Puntos: 14
Información -Aporte- Función AutoID

Saludos,

Compañeros hoy no vengo a consultarles o preguntarles algo, el motivo de este foro será darles un aporte de código de PHP. Les explico un poco de que se trata:

En días pasados, cansado de la poca utilidad y óptimo uso que se puede tener utilizando un campo como autoincrement en alguna tabla de MySQL, decide escribir una función que me hiciera eso que aquella función hace, pero con más usabilidad. Por ejemplo:

Tengo los siguientes ID gracias al autoincrement: 1-2-3. Por supuesto que el siguiente será 4. Pero si tengo: 1-3, el próximo será: 4. Además, si borrase todos mis datos de la tabla que trabaja con autoincrement (suponiendo que mis ID eran: 1-2-3), con la tabla vacía insertando un nuevo dato su ID será 4. A diferencia, el código que les presento busca los ID faltantes (en el caso que tuviéramos: 1-3, el nuevo ID será: 2), o en caso que no hayan datos (sea que recién creaste la tabla o la BD, o borraste todos los datos que existían) el nuevo ID será: 1. - Espero haberme hecho entender correctamente-

A continuación les presento su uso:

conexion.php
Código PHP:
Ver original
  1. <?php
  2. /*
  3. Autor: De|aCuesta.
  4. Comentario: Enjoy it. ;-)
  5. */
  6.  
  7. function Conectarse(){
  8.  
  9. ##============================================================================================
  10. ## Configurar Conexión
  11. ##============================================================================================
  12.  
  13. $server="localhost";    ##Servidor
  14. $user="";               ##Usuario
  15. $password="";       ##Password
  16. $database="";           ##Base de Datos
  17.  
  18. ##============================================================================================
  19.  
  20. $conn=@mysql_connect("$server","$user","$password");
  21. $conn_db=@mysql_select_db("$database",$conn);
  22.  
  23. if(!$conn){
  24. echo "<br/><div align='center'
  25. style='font-family: Verdana; font-size:22px;font-weight: bold;color:red;'>
  26. ERROR CONECTANDO A LA BASE DE DATOS</div>";
  27. exit();
  28. }
  29.  
  30. if (!$conn_db){
  31. echo "<br/><div align='center'
  32. style='font-family: Verdana; font-size:22px;font-weight: bold;color:red;'>
  33. ERROR SELECCIONANDO LA BASE DE DATOS</div>";
  34. exit();
  35. }
  36.  
  37. return $conn;
  38.  
  39. }
  40.  
  41. Conectarse();
  42.  
  43. ?>
Nota: El anterior código se conecta con la BD.

funct_autoID.php
Código PHP:
Ver original
  1. <?
  2. /*
  3. Autor: De|aCuesta.
  4. Comentario: Enjoy it. ;-)
  5. */
  6.  
  7. include("conexion.php"); ## Fichero para conectarnos a la BD.
  8.  
  9. ## $tabla_bd: Es el valor que se recibe como nombre de la tabla donde vamos a obtener nuestro nuevo ID.
  10. ## $campo_bd: Es el campo numérico (de tipo entero) que vamos a consultar para tener el nuevo ID.
  11.  
  12. function funct_autoID($tabla_bd,$campo_bd){
  13.  
  14. $conn=Conectarse();## Nos conectamos a la BD.
  15.  
  16. ## Consultamos los ID existentes
  17. $ssql  = "SELECT $campo_bd FROM $tabla_bd order by $campo_bd";
  18. $rs = mysql_query($ssql,$conn);
  19.  
  20. $i=0;
  21.  
  22. if (mysql_num_rows($rs)!=0){
  23.  
  24.     while ($row=mysql_fetch_array($rs)){
  25.    
  26.         $datos[$i]=$row["$campo_bd"];
  27.         $i++;
  28.     }
  29. }
  30.  
  31. $val_max=$datos[$i-1];      ## Valor máximo de ID existentes.
  32. $total_val=count($datos);   ## Total de datos existentes.
  33. $p=0;$l=0;
  34.  
  35. ## Buscando ID disponibles
  36. for($j=1;$j<=$val_max;$j++){
  37.    
  38.     for($k=0;$k<$total_val;$k++){
  39.    
  40.         if($j==$datos[$k])
  41.             break;
  42.            
  43.         else
  44.             $p++;
  45.        
  46.         if($p==$total_val){
  47.             $val_disp[$l]=$j;
  48.             $l++;
  49.             }          
  50.     }
  51.     $p=0;
  52. }
  53.  
  54. ## Asignamos el nuevo ID
  55. if(count($val_disp)==0)
  56.     $id_new=$val_max+1;
  57. else
  58.     $id_new=$val_disp[0];
  59.  
  60. return ($id_new);  
  61.  
  62.  
  63. }
  64. ?>
Nota: Creo que queda claro cual es el uso del código anterior.

Y ahora el uso:
index.php
Código PHP:
Ver original
  1. <?
  2. /*
  3. Autor: De|aCuesta.
  4. Comentario: Enjoy it. ;-)
  5. */
  6.  
  7. include("funct_autoID.php"); ## Fichero que nos dará el nuevo ID.
  8.  
  9. $tabla_bd = "autoinc_dlc";
  10. $campo_tabla = "id";
  11.  
  12. $idnew_bd = funct_autoID($tabla_bd,$campo_tabla);
  13. //$idnew_bd = funct_autoID("autoinc_dlc","id");
  14. echo "El nuevo ID será: <b>".$idnew_bd."</b>"."<br/>".
  15.     "...by <b>De|aCuesta</b>";
  16.  
  17. ?>

Como pueden ver es mu fácil su uso. Sólo indicamos a que tabla y de cual campo de ésta obtendremos el nuevo ID (el campo debe ser de tipo entero).

Espero que lo usen y que les sea de mucha utilidad.

De|aCuesta.
__________________
Sólo quien nunca nada hace, nunca se equivoca.