| |||
Como pasar un valor numerico a letras Necesito saber el codigo de como pasar un valor numerico a letras. Se quiere implementar un formato de cheques donde el valor digitado en un campo de texto se ha convertido a letras. Ejemplo: 120000 lo pase a ciento veinte mil pesos m/cte XXXXXXXXXXXXXXXXXXXXXXXXXXXXX Se me es muy necesario. gracias |
| |||
Si hubieras entrado en las preguntas más frecuentes (FAQ) hubieras encontrado esto que seguro que te sirve! http://www.forosdelweb.com/f18/faqs-php-530600-post357290/ Si no es así dinos que es lo que falta! Saludos,
__________________ sergiold |
| |||
Aqui va el codigo ... para el que le interece <html> <body> <?php function numerotexto ($numero) { // Primero tomamos el numero y le quitamos los caracteres especiales y extras // Dejando solamente el punto "." que separa los decimales // Si encuentra mas de un punto, devuelve error. // NOTA: Para los paises en que el punto y la coma se usan de forma // inversa, solo hay que cambiar la coma por punto en el array de "extras" // y el punto por coma en el explode de $partes $extras=array("/[\$]/","/ /","/,/","/-/"); $limpio=preg_replace($extras,"",$numero); $partes=explode(".",$limpio); if (count($partes)>2) { return "Error, el número no es correcto"; exit(); } // Ahora explotamos la parte del numero en elementos de un array que // llamaremos $digitos, y contamos los grupos de tres digitos // resultantes $digitos_piezas=chunk_split ($partes[0],1,"#"); $digitos_piezas=substr($digitos_piezas,0,strlen($d igitos_piezas)-1); $digitos=explode("#",$digitos_piezas); $todos=count($digitos); $grupos=ceil (count($digitos)/3); // comenzamos a dar formato a cada grupo $unidad = array ('un','dos','tres','cuatro','cinco','seis','siete' ,'ocho','nueve'); $decenas = array ('diez','once','doce','trece','catorce','quince'); $decena = array ('dieci','veinti','treinta','cuarenta','cincuenta' ,'sesenta','setenta','ochenta','noventa'); $centena = array ('ciento','doscientos','trescientos','cuatrociento s','quinientos','seiscientos','setecientos','ochoc ientos','novecientos'); $resto=$todos; for ($i=1; $i<=$grupos; $i++) { // Hacemos el grupo if ($resto>=3) { $corte=3; } else { $corte=$resto; } $offset=(($i*3)-3)+$corte; $offset=$offset*(-1); // la siguiente seccion es una adaptacion de la contribucion de cofyman y JavierB $num=implode("",array_slice ($digitos,$offset,$corte)); $resultado[$i] = ""; $cen = (int) ($num / 100); //Cifra de las centenas $doble = $num - ($cen*100); //Cifras de las decenas y unidades $dec = (int)($num / 10) - ($cen*10); //Cifra de las decenas $uni = $num - ($dec*10) - ($cen*100); //Cifra de las unidades if ($cen > 0) { if ($num == 100) $resultado[$i] = "cien"; else $resultado[$i] = $centena[$cen-1].' '; }//end if if ($doble>0) { if ($doble == 20) { $resultado[$i] .= " veinte"; }elseif (($doble < 16) and ($doble>9)) { $resultado[$i] .= $decenas[$doble-10]; }else { $resultado[$i] .=' '. $decena[$dec-1]; }//end if if ($dec>2 and $uni<>0) $resultado[$i] .=' y '; if (($uni>0) and ($doble>15) or ($dec==0)) { if ($i==1 && $uni == 1) $resultado[$i].="uno"; elseif ($i==2 && $num == 1) $resultado[$i].=""; else $resultado[$i].=$unidad[$uni-1]; } } // Le agregamos la terminacion del grupo switch ($i) { case 2: $resultado[$i].= ($resultado[$i]=="") ? "" : " mil "; break; case 3: $resultado[$i].= ($num==1) ? " millón " : " millones "; break; } $resto-=$corte; } // Sacamos el resultado (primero invertimos el array) $resultado_inv= array_reverse($resultado, TRUE); $final=""; foreach ($resultado_inv as $parte){ $final.=$parte; } return $final; } $ejemplo1=56424.21; $ejemplo2="$ 6,125,652.11"; echo numerotexto($ejemplo1); echo "<br>"; echo numerotexto($ejemplo2); ?> </body> </html> ................. Bueno que les vaya bonito. bye |
| |||
Cita: Desde mi punto de vista no es agrasevidad, es una realidad, algo que esta en las FAQ nose tendria que repetir ni hablar, solamente cuando el codigo de las FAQ da error o similares.
Iniciado por higi Oye ... deja la agresividad ... bajale unpoco a tu tonito OK De igual forma de nada Saludos. |
| |||
Cita: Uy... que miedo
Iniciado por DarioDario Desde mi punto de vista no es agrasevidad, es una realidad, algo que esta en las FAQ nose tendria que repetir ni hablar, solamente cuando el codigo de las FAQ da error o similares. Saludos. Oye si ves el codigo original al publicado hay variaciones OK de todas formas lo tedre presente bueno necesito ayuda con otro tema me puedes colaborar? |
| |||
Cita: Oye Dario lo que necesito es lo siguiente:
Iniciado por DarioDario Desde mi punto de vista no es agrasevidad, es una realidad, algo que esta en las FAQ nose tendria que repetir ni hablar, solamente cuando el codigo de las FAQ da error o similares. Saludos. Tengo las siguientes tablas; CREATE TABLE beneficiario ( nit varchar(20) NOT NULL, descripbenef varchar(20) NOT NULL, tipobenef varchar(20), direccion varchar(40), ciudad varchar(20), telefono varchar(20), PRIMARY KEY (nit) ) TYPE = INNODB; CREATE TABLE documento ( numdoc varchar(10) NOT NULL, tipo char(2) NOT NULL, anolapso char(2), meslapso char(2), nit varchar(20) NOT NULL, indcu varchar(2) NOT NULL, anodoc char(2), mesdoc char(2), diadoc char(2), vrdoc double, detadoc text, descripuser varchar(20) NOT NULL, PRIMARY KEY (numdoc), INDEX (nit), FOREIGN KEY (nit) REFERENCES beneficiario(nit) ON UPDATE CASCADE ON DELETE CASCADE, ) TYPE = INNODB; .............. Lo que se busca es que en el momento en el que se este ingresando la informacion del formualario documento, cuando se digite el NIT del beneficiario este me traiga en nombre de ese beneficiario y lo visualice en el mismo formulario documento, ademas que me permita seguir ingresando los demas datos del formulario manteniendo los datos ya ingresados en las casillas de texto para luego ser enviada e insertase en las tablas Muchas gracias la colaboracion que me puedan brindar. |
| |||
Cita: Primero no necesitas el sarcasmo.
Iniciado por higi Uy... que miedo Cita: Si el thread tratara de buscar la mejor opción con respecto a esto, tu aporte seria muy agradable.
Iniciado por higi Oye si ves el codigo original al publicado hay variaciones OK Cita: Si me dices que problema tienes te ayudo con mucho gusto mientras mis conocimientos puedan ayudarte.
Iniciado por higi de todas formas lo tedre presente bueno necesito ayuda con otro tema me puedes colaborar? |
| |||
Bueno mientras escribia el post anterior has puesto la consulta . Como veo necesitarias utilizar AJAX, de eso no tengo ningun conocimiento pero si hay un subforo que te podria ayudar. De todas formas te recomendaria que abras un nuevo thrad para recivir una ayuda mas especifica y eficas y no mezclar tu problema con el de este thread ya que mucha gente no miraria tu post y tendrias menos ayuda y se divirtua este thread. Saludos. ---------- EDITADO --------- Cita: Tiene razón ya que seria un caos y por esta razon se han inventado las FAQ.
Iniciado por JavierB Imaginate que ponemos el código cada vez que alguien pregunta lo mismo... higi por favor abre un nuevo thread. |
| |||
Me puedes colaborar con otro tema ??? Lo que necesito es lo siguiente: Tengo las siguientes tablas; CREATE TABLE beneficiario ( nit varchar(20) NOT NULL, descripbenef varchar(20) NOT NULL, tipobenef varchar(20), direccion varchar(40), ciudad varchar(20), telefono varchar(20), PRIMARY KEY (nit) ) TYPE = INNODB; CREATE TABLE documento ( numdoc varchar(10) NOT NULL, tipo char(2) NOT NULL, anolapso char(2), meslapso char(2), nit varchar(20) NOT NULL, indcu varchar(2) NOT NULL, anodoc char(2), mesdoc char(2), diadoc char(2), vrdoc double, detadoc text, descripuser varchar(20) NOT NULL, PRIMARY KEY (numdoc), INDEX (nit), FOREIGN KEY (nit) REFERENCES beneficiario(nit) ON UPDATE CASCADE ON DELETE CASCADE, ) TYPE = INNODB; .............. Lo que se busca es que en el momento en el que se este ingresando la informacion del formualario documento, cuando se digite el NIT del beneficiario este me traiga en nombre de ese beneficiario y lo visualice en el mismo formulario documento, ademas que me permita seguir ingresando los demas datos del formulario manteniendo los datos ya ingresados en las casillas de texto para luego ser enviada e insertase en las tablas Muchas gracias la colaboracion que me puedan brindar. |