Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

133
Vistas
Cómo generar una identificación de boleto con la longitud correcta rellenando el medio con 0

Estoy tratando de generar un valor de identificación de ticket con este formato: yymm###### para usar en la tabla de mi base de datos. Esto expresa un año de 2 dígitos, un mes de 2 dígitos y una identificación numérica de 6 dígitos que es única para el prefijo año-mes.

Si no hay otras identificaciones de boletos para el mes y el año actual (abril de 2017 al momento de la publicación), la parte numérica del valor debe ser 000000 por defecto. El ID de ticket generado correcto, en este caso, debe ser: 1704000000 .

Si hay 1 o más identificadores de boletos preexistentes en el mes - año actual, entonces el nuevo identificador de boleto debe ser 1 más que el identificador de boleto más alto.

Actualmente estoy usando php para incrementar la identificación del boleto de esta manera:

 $tkid = $rowt["TICKET_ID"] + 1;

Pero usando este código, genera una identificación de ticket como esta: 17041

Ya puse mis atributos ticket_id en unsigned zerofill y escribo type int 6 .

Debido a una razón de diseño, no quiero usar el incremento automático .

Código:

 $sqlt = "SELECT TICKET_ID FROM group where groupid = '$tid' "; $ticket = mysqli_query($conn , $sqlt); $rowcount = mysqli_num_rows($ticket); if ($rowcount == 0) echo "No records found"; else { $rowt = mysqli_fetch_assoc($ticket); } $tkid = $rowt["TICKET_ID"] + 1; <input type="text" readonly="readonly" value="<?php echo date('ym'). $tkid ;?>" name="TICKET_ID" >
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Intenta cambiar esto:

 <?php echo date('ym'). $tkid ;?>

a esto:

 <?php echo date('ym') . str_pad($tkid, 6, '0', STR_PAD_LEFT); ?>

Ver str_pad() .

over 4 years ago · Santiago Trujillo Denunciar

0

Si este fuera mi proyecto, dejaría que mysql hiciera todo el trabajo (y usaría una declaración preparada por razones de seguridad).

Para eliminar cualquier conflicto entre PALABRA CLAVE / nombre de tabla, recomiendo marcar la tabla de group .

Mi consulta incrementará el valor más alto de TICKET_ID para el groupid seleccionado (¡y lo rellenará con ceros a la izquierda si todavía está usando este código al comienzo del próximo milenio!). Si no hay filas para el groupid seleccionado, se entregará un nuevo valor [yymm000000] en el conjunto de resultados.

 if($stmt=$conn->prepare( "(SELECT LPAD(`TICKET_ID`+1,10,'0') FROM `group` WHERE `groupid`=? ORDER BY `TICKET_ID` DESC LIMIT 1) UNION (SELECT CONCAT(DATE_FORMAT(CURDATE(),'%y%m'),'000000')) LIMIT 1;" ) ){ $stmt->bind_param("s",$tid); $stmt->execute(); $stmt->bind_result($new_tkid); $stmt->fetch(); echo "<input type=\"text\" name=\"TICKET_ID\" value=\"$new_tkid\" readonly=\"readonly\">"; $stmt->free_result(); }else{ echo "Query Syntax Error"; // echo mysqli_error($conn); }

Esto no solo brinda seguridad esencial a su consulta, sino que coloca toda la manipulación de datos en un solo lugar en lugar de mezclar la manipulación con el eco.

Funciones utilizadas:

  • PHP preparar ()
  • MYSQL LPAD()
  • UNIÓN MYSQL()
  • CONCAT MYSQL()
  • FORMATO DE FECHA_MYSQL()
  • MYSQL CURDATE()
  • PHP enlazar_param()
  • ejecutar PHP ()
  • PHP enlazar_resultado()
  • PHP buscar ()
  • PHP resultado_libre()
over 4 years ago · Santiago Trujillo Denunciar

0

Solicitud de formato usando printf

 <?php printf('%s%06d', date('ym'), $tkid); ?>

En serio, printf es un caballo de batalla

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda