Tengo en un fichero php lo siguiente:
Código PHP:
include ('functions.php');
$codigop = genera_codigo('dato', $anyo, 5, 'campoclave', 'mitabla');
$correcto = f_autoriza($codigop, 't_avion', 'Esta es la descripcion');
He probado solo la función "genera_codigo" y me devuelve el código correctamente; Por otra parte he probado la función f_autoriza y la inserción me la realiza correctamente una vez. Como parámetro de entrada en vez de pasarle el resultado de la función "genera_codigo", le pongo un código estático como texto y todo ok.
¿Qué puede estar ocurriendo entre las funciones para que se ingrese dos veces el mismo registro? Por más vueltas que llevo dándole toda la tarde no consigo sacar respuestas en claro.
Las funciones son estas:
Código PHP:
function genera_codigo($codigo, $codanyo, $longnum, $campo, $tabla){
$rs = @mysql_query("select $campo from $tabla order by $campo desc");
if (@mysql_num_rows($rs) == 0){
//No ha devuelto registro, lo que indica que la tabla está vacía.
for ($i=0;$i<(LONGNUM-1);$i++){
$ceros = $ceros.'0';
}
$codigo_a_devolver = $codigo.$codanyo.$ceros.'1'; //Codigo inicial a devolver
}else{
$regmayor = @mysql_result($rs, 0); //Obtengo el registro mayor
//Del código completo, extraigo la cadena correspondiente al número de 5 dígitos
$numero = substr($regmayor, strlen($codigo)+strlen($codanyo), $longnum); //NUMERO
//Al número obtenido lo incremento en 1 unidad
$numero = (int)$numero+1;
//Relleno con ceros a la izquierda el número incrementado hasta obtener la longitud establecida en $longnum
for ($i=0;$i<($longnum-strlen($numero));$i++){
$ceros = $ceros.'0';
}
//Genero el código completo a devolver
$codigo_a_devolver = $codigo.$codanyo.$ceros.$numero;
}
//Libero recursos
@mysql_free_result($rs);
//Retorno el nuevo código generado.
return $codigo_a_devolver;
} //Fin funcion genera_codigo
Código PHP:
function f_autoriza($codigo_autor, $tabla_asociada, $descripcion){
//0. Obtención de variables
$fechaSist = date("Y-m-d H:i:s"); //Fecha y hora del Sistema
//1. Insertar registro en T_AUTORIZACION
$sql = "insert into mitabla (campo1, campo2, campo3, campo4, campo5, campo6, campo7) ";
$sql = $sql."values ('$codigo_autor', '$_SESSION[codigosocio]', '$fechaSist', '$tabla_asociada', ";
$sql = $sql."'NO', '$descripcion', 'NO')";
@mysql_query($sql);
}
f_autoriza: Me inserta un registro en otra tabla una vez le haya pasado el codigo generado.