elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Generar Numero Consecutivo -PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Generar Numero Consecutivo -PHP  (Leído 16,557 veces)
Zitros

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Generar Numero Consecutivo -PHP
« en: 28 Febrero 2014, 22:11 pm »

Hola a todos!

Tengo un problema en php.

Trataba de generar un numero consecutivo para que luego se inserte en la base de datos en php. Lo que trato de realizar es que primero verifique si en la tabla tiene un dato en el campo y si no lo tiene, inserte el primer número.

Más o menos lo tengo pensado es de esta manera:
Código:
<?php
include 'conexión.php'; // conexión a base de datos
    $codigo = 1;
                $consulta = mysql_query("select `codigo` from `prueba_id` where `codigo` = $codigo");
           
               
if($consulta >0){

$cod_resultado= $consulta+$codigo;

mysql_query("INSERT INTO `prueba_id` (`Codigo`) VALUES ('$cod_resultado') ");

}

else {
mysql_query("INSERT INTO `prueba_id` (`Codigo`) VALUES ('$codigo') ");
}
?>

Sin embargo, al insertar en la base de datos me inserta 6. Y cuando vuelvo a ejecutar nuevamente no me vuelve a insertar nada. Se que debo meterle un while pero no se la sintaxis correcta para que funcione.

El propósito del código es para generar un numero consecutivo en el campo de la tabla: Codigo, dejando de lado la funcion autoincrement que viene como opción en mysql.


Muchas gracias de antemano por su ayuda!.


En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Generar Numero Consecutivo -PHP
« Respuesta #1 en: 28 Febrero 2014, 23:00 pm »

Citar
El propósito del código es para generar un numero consecutivo en el campo de la tabla: Codigo, dejando de lado la funcion autoincrement que viene como opción en mysql.

La mayoría de los motores de BD cuentan con la opción de auto-increment.

Lo que estas intentando hacer es peligroso. Si se realizan dos consultas o mas al mismo tiempo, estoy casi seguro de que se van a mezclar y vas a tener campos con códigos repetitivos. Precisamente por esto se invento el auto-increment, para evitar problemas de repetición.

De todos modos, lo que haces esta mal... simplemente saca el mayor numero actual, si mysql no lo encuentra, te devolverá un campo vació.

Usa MySQLI en vez de mysql. Este ultimo ya esta considerado como obsoleto y en futuras versiones de PHP sera eliminado.

Código
  1. <?php
  2.  
  3. // Conexion
  4. $mysql = mysqli_connect('servidor','usuario','pass','base de datos');
  5.  
  6. $consulta = mysqli_query($mysql,'SELECT MAX(Codigo) as Codigo FROM prueba_id LIMIT 1');
  7. $consulta = mysqli_fetch_array($consulta,MYSQLI_ASSOC);
  8.  
  9. // Si el codigo actual esta vacio o es 0, se convierte en 1.
  10. // En caso contrario se le suma +1.
  11. $codigo = (empty($consulta['Codigo']) ? 1 : $consulta['Codigo']+=1);
  12. echo 'El codigo actual es: '.$codigo;
  13.  
  14. $consulta = mysqli_query($mysql,'INSERT INTO prueba_id (Codigo) VALUES ('.$codigo.')');
  15. if(!$consulta){die('Error');}
  16.  
  17. ?>

Saludos


En línea

Zitros

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Re: Generar Numero Consecutivo -PHP
« Respuesta #2 en: 7 Marzo 2014, 18:54 pm »

Muchas gracias por la respuesta con base a tu publicación pude generar el siguiente código consecutivo:

Código:

function consecutivo(){
$consulta = mysql_query('SELECT MAX(`campo_id`) as `campo_id` FROM `tabla` LIMIT 1');//1
if(mysql_num_rows($consulta)>0)
  {


  $row=mysql_fetch_array($consulta);
$cod=$row[0];
$sig=$cod+1;
$Strsig = (string)$sig;
$formato = str_pad($Strsig, "6", "0", STR_PAD_LEFT);

}
else{
$sig=1;
$Strsig = (string)$sig;
$formato= str_pad($Strsig, "4", "0", STR_PAD_LEFT);

}
return $formato;

}



Pongo el código por si acaso es de utilidad. Gracias!!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Generar un número en intervalo de tiempo
Desarrollo Web
Cergath 2 5,486 Último mensaje 10 Enero 2011, 00:03 am
por #!drvy
SEGUIR CONSECUTIVO
PHP
kakashi20 1 2,247 Último mensaje 2 Junio 2012, 15:42 pm
por :ohk<any>
AYUDA: generar numero alfanumérico
Programación C/C++
mari2diaz 1 1,676 Último mensaje 8 Noviembre 2018, 04:32 am
por Beginner Web
numero consecutivo python
Scripting
asdexiva 1 2,296 Último mensaje 1 Junio 2020, 01:15 am
por tincopasan
necesito generar numero móviles gratis para whatsapp
Dispositivos Móviles (PDA's, Smartphones, Tablets)
diente225 1 2,465 Último mensaje 22 Agosto 2020, 13:59 pm
por Piangy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines