Generar Numero Consecutivo -PHP

Iniciado por Zitros, 28 Febrero 2014, 22:11 PM

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

Zitros

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:
<?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!.

#!drvy

CitarEl 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 (php) [Seleccionar]
<?php

// Conexion
$mysql mysqli_connect('servidor','usuario','pass','base de datos');

$consulta mysqli_query($mysql,'SELECT MAX(Codigo) as Codigo FROM prueba_id LIMIT 1');
$consulta mysqli_fetch_array($consulta,MYSQLI_ASSOC);

// Si el codigo actual esta vacio o es 0, se convierte en 1.
// En caso contrario se le suma +1.
$codigo = (empty($consulta['Codigo']) ? $consulta['Codigo']+=1);
echo 
'El codigo actual es: '.$codigo;

$consulta mysqli_query($mysql,'INSERT INTO prueba_id (Codigo) VALUES ('.$codigo.')');
if(!
$consulta){die('Error');}

?>


Saludos

Zitros

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



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!!!