Añadir ceros a la izquierda en php

Que onda experto tengo un campo de texto donde me valida el numero si existe o no pero en mi base de datos tengo registros de 2, 3, 4, 5, 6, 7, 8 y 9 dígitos lo que me gustaría es que los registros que tengan dígitos de 2 al 8 que me aparezca ceros en automático a la izquierda para que sean los 9 dígitos por decir si yo escribo:

123

Que me aparezca

000000123

1234

Que me aparezca

000001234

Pero que me aparezca en automático crees que se podrá es necesario que te ponga todo mi formulario

1 respuesta

Respuesta

Intenta con esta función que he creado

¿
<?php
 function generaCeros($numero){
 //obtengop el largo del numero
 $largo_numero = strlen($numero);
 //especifico el largo maximo de la cadena
 $largo_maximo = 8;
 //tomo la cantidad de ceros a agregar
 $agregar = $largo_maximo - $largo_numero;
 //agrego los ceros
 for($i =0; $i<$agregar; $i++){
 $numero = "0".$numero;
 }
 //retorno el valor con ceros
 return $numero;
 }
 //se usaría así
 echo generaCeros("123");
?>

ya lo probé y no me hace nada no me inserta los ceros a la izquierda

A mi me funciona, la he probado antes de enviarla. Valida como estas utilizando la función y revisa los errores de php que se estén generando.

si ya probé y solo me muestra el 000000123, mira este es mi formulario creo que ya lo avías visto pero bueno me hace la validación y todo pero en el campo quiero que aparezca los cero cuando el registro sea de 2 al 8 porque tengo registros de 2 dígitos de 3 4 5 6 7 8 y 9 pero cuando ingrese un numero que me aparezca los ceros a la izquierda cuando es:

dos dígitos aparezca así 000000034

tres dígitos aparezca así 000000229

cuatro dígitos aparezca así 000003838

y así asta los 8 dígitos

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js" ></script>
<script type="text/javascript">
function modForm(valor){
formulario = document.getElementById("formulario");
if(valor=='Telmex'){
formulario.action="https://index.php";
}
if(valor=='Bimbo'){
formulario.action="https://index2.php/";
}
if(valor=='Costeña'){
formulario.action="https://index.php";
}
}
$(document).ready(function(){
$("#expediente").blur(function(){
$('#Info').html('<img src="loader.gif" alt="" />').fadeOut(100);
$.ajax({
type: "POST",
url: "validar.php",
data: { expediente: $("#expediente").val()}
}).done(function( msg ) {
if(msg=="true"){
$("#Enviar").removeAttr('disabled');
$("#Info").html("<img src='si.png' ><span style='color:#009900'> <span style='font-size:15px;'>Exitoso</span></span>"); $("#imagen_carga").hide();
$('#Info').fadeIn(100).html(data);
}else{
$("#Enviar").prop("disabled", true);
$("#Info").html("<img src='no.png' ><span style='color:#f00'> <span style='font-size:15px;'>Empleado NO existe</span></span>"); $("#imagen_carga").hide();
$('#Info').fadeIn(100).html(data);
}
});
});
});
</script>
<form name="formulario" id="formulario" action = "" method="post" >
<p><font size="2" color="#c4c3c3">Ingresa los datos del Empleado:</font></p>
<table width="100%" border="0">
<tr>
numero
<td width="13%"><input name="expediente" type="text" id="expediente" onKeyPress="return validar_texto(event)" placeholder="9 dígitos.." size="19" maxlength="8"></td>
<td width="37%" height="50"><div id="Info"></div></td>
<td width="37%">
</tr>
<tr>
<td><select name="empresa" id="empresa" onChange="modForm(this.value)">
<option value="" selected>Selecciona Empresa</option>
<option value="Telmex">Telmex</option>
<option value="Bimbo">Bimbo</option>
<option value="Costeña">Costeña</option>
</select></td>
<td height="50">&nbsp;</td>
<td> </tr>
</table>
<input name="Enviar" type="submit" id="Enviar" value="Enviar" disabled="disabled" onClick="return validarForm(this.form);">
<input name="reset" type="reset" value="Limpiar" ">

en mi base de datos a los que le asen falta los ceros se le voy a poner para que estén así 9 dígitos con ceros pero lo que quiero cuando ingrese un numero de dos dígitos que me aparezca por automático lo ceros a la izquierda cuando mi cursor lo ponga o le de click en otra parte

¿?

Pero si te he dejado los datos para ejemplificar!

Tienes que cambiar el "123" por el valor del número que quieres evaluar!

echo generaCeros($VARIABLE);

Vamos, de verdad no me amargues el día!. No puedo desde acá controlar todo en tu equipo, pon de tu parte y pone atención a la programación si sabes que las funciones trabajan con parámetros variables!

Trabajé la función para que le puedas modificar parámetros me preocupé de todo eso pero tienes que modificarlo tu!.

si ya modifique puse una variable y ya ingreso cualquier numero y me imprimir el numero con los ceros pero quiero que los ceros me aparezcan dentro del campo de texto en ves de que me los imprima afuera que sea adentro del campo de texto y que no sea con el botón de enviar si no que cuando mi cursor le de click en cualquier parte de mi pantalla parecido al de validar que cuando le das click en otra parte te manda el mensaje así seria el de numero

Esta implementación la tienes que realizar con javascript.

function generaCeros(numero){
 //obtengo el largo del numero
 largo_numero = numero.length;
 //especifico el largo maximo de la cadena
 largo_maximo = 8;
 //tomo la cantidad de ceros a agregar
 agregar = largo_maximo - largo_numero;
 //agrego los ceros
 for(i =0; i<$agregar; i++){
 numero = "0"+numero;
 }
 //retorno el valor con ceros
 return numero;
}

Implementala dentro del evento blur que ya esta implementado en jquery actualmente y este valor añádelo al value del campo de texto por medio de la función .val() de jquery que esta asociada de texto.

ya puede hacer el evento blur mira aquí este es el script que me hace para que cuando mi cursor le de click en cualquier parte de mi pantalla me sale un mensaje pero hará como implemento la función que me pusiste

<script>
function validarEntero(valor){
//intento convertir a entero.
//si era un entero no le afecta, si no lo era lo intenta convertir
valor = parseInt(valor)
//Compruebo si es un valor numérico
if (isNaN(valor)) {
//entonces (no es numero) devuelvo el valor cadena vacía
return ""
}else{
//En caso contrario (Si era un número) devuelvo el valor
return valor
}
}
function compruebaValidoEntero(){
enteroValidado = validarEntero(document.f1.numero.value)
if (enteroValidado == ""){
//si era la cadena vacía es que no era válido. Lo aviso
alert ("Debe escribir un entero!")
//selecciono el texto
document.f1.numero.select()
//coloco otra vez el foco
document.f1.numero.focus()
}else
document.f1.numero.value = enteroValidado
}
</script>
</head>
<body>
<form name=f1>
Escriba un número entero: <input type=text name="numero" size=8 value="" onblur="compruebaValidoEntero()">
</form>
</body>
</html>

Te daré un ejemplo de como implementarlo con jquery. Me envías códigos que no tienen relación con la problemática y necesito que entiendas como funcionan las cosas antes de que me envíes códigos de otros proyectos.

<html> 
 <head>
 <title>Script de prueba</title>
 <script src="jquery.js"></script>
 <script>
 //implemento la funcion
 function generaCeros(numero){
 //obtengo el largo del numero
 largo_numero = numero.length;
 //especifico el largo maximo de la cadena
 largo_maximo = 8;
 //tomo la cantidad de ceros a agregar
 agregar = largo_maximo - largo_numero;
 //agrego los ceros
 for(i =0; i<agregar; i++){
 numero = "0"+numero;
 }
 //retorno el valor con ceros
 return numero;
 }
 //llamo a blur desde jquery
 $(document).ready(function(){
 $("#numero").blur(function(){
 //llamo la función y la anexo al value del campo de texto
 $(this).val(generaCeros($(this).val()));
 });
 });
 </script>
 </head>
 <body>
 <!-- campo de texto-->
 <input type="text" name="numero" id="numero">
 </body>
</html>

Creo dejar en claro donde se dejan todos los elementos necesarios para que se ejecute correctamente esta función en tu formulario.

Recuerda poner la función y llamarla desde ready de jquery donde se aloja finalmente la llamada al evento blur del campo de texto al que deseas asociar esta función.

Por favor pon atención y trata de aprender. Hay mucho que estudiar y tienes que ponerte en situación de que tienes que leer y aplicar mucho. La idea de que sea experto es ayudarte a que puedas tu desarrollar tus propios proyectos y que puedas ser líder en tus ideas, prefiero darte herramientas, a entregarte todo ya realizado sin que aprendas nada.

gracias espero después me puedas seguir contestando ya e estado practicando un poco mas

Por mi no hay problema en responderte, pero la idea es que vayamos mejorando, aprendiendo y no quedemos entrampados en cosas que hemos visto muchas veces y que tienes que interiorizar.

Mi idea de trabajar en este sitio es ayudar a que puedas en un futuro generar tus propias soluciones y que puedas trabajar en proyectos reales, pero me tienes que entender que a veces no puedo disponer tanto tiempo (gasto de mi tiempo libre o de algún espacio en mi trabajo) en programarte "experimentos" que no llevan a nada, o explicarte cosas demasiado básicas en las cuales se que no estás poniendo atención.

Como te comenté la idea es entregarte herramientas para que puedas hacer tus cosas no hacertelas yo siempre.

Mi ayuda siempre estará en pie de todas formas.

Y Recuerda ir cerrando tus preguntas abiertas, así enfocamos los flujos de preguntas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas