Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/02/2007, 11:12
juan007
 
Fecha de Ingreso: marzo-2004
Ubicación: Chile
Mensajes: 382
Antigüedad: 20 años
Puntos: 0
Re: Rut Chile ...no puedo hacer funcionar

Gracias por las respuestas.

Erikfrancisco aplique el codigo que tu modificaste pero no me aparece nada al parecer no me imprime el resultado.

Voy a explicar un poco en que consite el rut chileno es un calculo que se hace para generar una cadena unica donde al valor de txtRut se le aplican una serie de operaciones matematicas para generar el digito verificador txtDv (ahora el cambie el nombre en el formulario para identificarlo bien antes tenia textfield)

ejemplo:

9541846 este viene siendo mi txtRut.

y atraves de una serie de calculos en la funcion deberia generarme el valor 5

La cadena completa quedaria de esta forma : 9541846-5 osea esto deberia imprimirme por pantalla.

Las modificaciones que aplique son las siguientes:

Para el formulario form_rut.php tan solo modifique el nombre del campo textfield por txtDv.

De esta forma quedo:
Código HTML:
<body>
<form id="form_rut" name="form_rut" method="post" action="procesar_rut.php">
  <table width="225">
    <tr>
      <td width="26">Rut:</td>
      <td width="108"><input name="txtRut" type="text" id="txtRut" /></td>
      <td width="69"><label>
        <input name="txtDv" type="text" id="txtDv" size="5" />
      </label></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><label>
        <input name="btnVerificar" type="submit" id="btnVerificar" value="Enviar" />
      </label></td>
      <td>&nbsp;</td>
    </tr>
  </table>
</form>
</body> 
Y para el caso del archivo procesar_rut.php modifique tus sugerecias y se incluyo el cambio de las variables que agregaste al final de esta forma:

$cadena = $_POST['txtRut'];
$formato = $_POST['textfield'];

se reemplaza por :

$rut = $_POST['txtRut'];
$dv = $_POST['txtDv'];

llamada a la funcion de esta forma:

echo rut( $rut, $dv )

Codigo completo modificado procesar_rut.php

Código PHP:
<?php
function rut($ru,$f) {

    
$parte explode('.',$ru,3);
    
$rut $ru $parte[0].$parte[1].$parte[2];
    
$i 0;
    
$res '0';
    while (
$rut) {
        
$resto round((($rut/10)-floor($rut/10))*10);
        
$rut floor($rut/10);
        
$res[$i++] = $resto;
    }
    
$suma = ($res[0]*2+$res[1]*3+$res[2]*4+$res[3]*5+$res[4]*6+$res[5]*7+$res[6]*2+$res[7]*3)/11;
    
$dv  11-ceil(($suma-floor($suma))*10);
    if (
$dv == 11) {
        
$dv 0;
    }
    elseif (
$dv == 10) {
        
$dv 'k';
    }
    
$a floor ($ru 1000000);
    
$b floor ($ru 1000) - $a 1000;
    
$c $ru floor ($ru 1000) * 1000;
    
// Lo siguiente revisa si los números $b y $c tienen sólo 1 o 2 dígitos
    // y los devuelve (como string) en el formato 00X o 0XY (3 dígitos)
    
if ($b 100 1) {
        if (
$b 10 1) {
            
$b '00'.$b;
        }
        else {
            
$b '0'.$b;
        }
    }
    if (
$c 100 1) {
        if (
$c 10 1) {
            
$c '00'.$c;
        }
        else {
            
$c '0'.$c;
        }
    }
    if (
$f==0) {
        return 
$dv;    // Devuelve el dígito verificador
    
}
    elseif (
$f==1) {
        return 
$a.'.'.$b.'.'.$c.'-'.$dv;    // Devuelve en el formato 12.345.678-5
    
}
    elseif (
$f==2) {
        return 
$a.$b.$c.'-'.$dv;    // Devuelve en el formato 12345678-5
    
}
    elseif (
$f==3) {
        return 
$a.$b.$c.$dv;    // Devuelve en el formato 123456785
    
}
}
// declaramos nombres de variables cortos de las variables enviadas mediante post 
$rut $_POST['txtRut']; 
$dv $_POST['txtDv']; 

// llamamos a la funcion 
echo rut$rut$dv ); 

?>
Eso espero haberme explicado bien......gracias por su tiempo y voluntad

Juan Pablo G.