Ver Mensaje Individual
  #58 (permalink)  
Antiguo 12/01/2016, 20:46
xerifandtomas
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 7 meses
Puntos: 123
Respuesta: Ayudita con el ID inicio del año empezar otra vez

A ver...
Prueba con esto

Tabla
Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `Personas` (
  2.   `idp` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `CodigoUnico` text NOT NULL,
  4.   `Anio` datetime DEFAULT NULL,
  5.   `Nombre` VARCHAR(100) NOT NULL DEFAULT '',
  6.   `Apellido` VARCHAR(100) NOT NULL DEFAULT '',
  7.   PRIMARY KEY (`idp`)
  8. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

Script
Código PHP:
<?php
// Datos de conexion
$conexion mysqli_connect("localhost","usu_bd","pwd","nombre_bd");
// Verificar la conexión
if (mysqli_connect_errno()) {printf("Fall&oacute; la conexi&oacute;n: %s\n"mysqli_connect_error()); exit;}

$flag=0;
// Genera las variables $_GET como $get_variable
extract($_GETEXTR_PREFIX_ALL,"get");
if (isset(
$get_action) AND $get_action=='add'){$action=mysqli_real_escape_string($conexion$get_action);}else{$flag=1; echo 'Fallo action.';}
// ¿? idp no lo utilizas para nada
//$idp = $_GET['idp'];

// Genera las variables $_POST como $post_variable
extract($_POST,  EXTR_PREFIX_ALL,"post");
if (isset(
$post_Nombre)){$Nombre=mysqli_real_escape_string($conexion$post_Nombre);}else{$flag=1; echo 'Fallo Nombre.';}
if (isset(
$post_Apellido)){$Apellido=mysqli_real_escape_string($conexion$post_Apellido);}else{$flag=1; echo 'Fallo Apellido.';}
// ¿? Esto tampoco parece que valga para nada 
//$CodigoUnico = $_POST['CodigoUnico'];

// Formato de la fecha 
$fecha="2018-01-13 00:00:00"// Fecha de prueba, desconozco si la vas a generar con GET POST o con date('Y-m-d H:i:s'); 
// Extraemos el año
$ano=explode("-"$fecha);$ano=$ano[0];

//comprobamos que todo vaya bien
if ($flag===0) {echo '<p style="color:green">Recibo $variables ok</p>';}else{echo '<p style="color:red">Error. Revise los campos.</p>';exit;}

// Insertamos la fila
$inserta "INSERT INTO Personas (Nombre,Apellido,Anio) VALUES ('$Nombre','$Apellido','$fecha')";
mysqli_query($conexion,$inserta);
        
// Obtenemos el id del ultimo insert
$ultimo_inser mysqli_insert_id($conexion);

// Obtenemos la cantidad insertados en el año pertinente
$CodigoUnico"SELECT * FROM Personas WHERE YEAR(Anio)=".$ano." ";
if (
$result mysqli_query($conexion$CodigoUnico)) {
    
/* determinar el número de filas del resultado */
    
$row_cnt mysqli_num_rows($result);
    
/* cerrar el resulset */
    
mysqli_free_result($result);
}
// Damos formato al campo CodigoUnico // CODIGO-AÑO-ID. Ejemplo: N-2015-548
$CodigoUnico $row_cnt."-".$ano."-".$ultimo_inser;

// Actualizamos el campo del CodigoUnico del ultimo INSERT
$upsate "UPDATE Personas SET CodigoUnico = '$CodigoUnico' WHERE idp = '$ultimo_inser'";
mysqli_query($conexion,$upsate);

// Mostramos resultados      
if($upsate){
echo 
"Listo <br/>";
echo 
"ID es: " $ultimo_inser."<br/>";
echo 
"CodigoUnico: " $CodigoUnico." (CantidadAnual-A&ntilde;o-ID)<br/>";
} else {echo 
"Error: <br>" mysqli_error($conexion);}

// Cerramos la conexion
mysqli_close($conexion);
?>
Resultado
Código TEXT:
Ver original
  1. |id|CodigoUnico|Anio|Nombre|Apellido
  2. |15|1-2017-15|2017-01-13 00:00:00|pedro|pinto
  3. |16|2-2017-16|2017-01-13 00:00:00|pedro|pinto
  4. |17|3-2017-17|2017-01-13 00:00:00|pedro|pinto
  5. |18|4-2017-18|2017-01-13 00:00:00|pedro|pinto
  6. |19|1-2015-19|2015-01-13 00:00:00|pedro|pinto
  7. |20|2-2015-20|2015-01-13 00:00:00|pedro|pinto
  8. |21|3-2015-21|2015-01-13 00:00:00|pedro|pinto
  9. |47|1-2018-47|2018-01-13 00:00:00|pedro|pinto
  10. |48|2-2018-48|2018-01-13 00:00:00|pedro|pinto
  11. |49|3-2018-49|2018-01-13 00:00:00|pedro|pinto

Última edición por xerifandtomas; 12/01/2016 a las 21:14