Foros del Web » Programando para Internet » PHP »

validar rut chileno

Estas en el tema de validar rut chileno en el foro de PHP en Foros del Web. hola maestros estoy tratando de validar el digito del rut chileno pero no me funciona bien , en realidad solo sirva para validar mi propio ...
  #1 (permalink)  
Antiguo 15/01/2004, 10:49
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
validar rut chileno

hola maestros estoy tratando de validar el digito del rut chileno pero no me funciona bien , en realidad solo sirva para validar mi propio rut , pero el resto no (debe ser coincidencia claro).

<?php
error_reporting(0);
$rut=($_POST['rut']); // bienen de un formulario.
$dig=($_POST['dig']);


ECHO "rut:$rut<br>";
echo"dig:$dig<br>";


$c_caracteres=strlen($rut);
echo "n caracte:$c_caracteres";

for ($i=0;$i<=$c_caracteres;$i++) // recorre el rut de izquierda a derecha o de inicio a fin
{
echo "cuenta:$i<br>";
$caracter=substr($rut,$i,1); /*/ extrae un caracter
echo "caracter: $caracter<br><br><br>";
$sumar=0;

switch($i)
{
case 0:

$sumar1=($caracter*3)+$sumar;
echo " la sume entre $caracter*3+$sumar=$sumar1 <br>";


break;
case 1:


$sumar2=($caracter*2)+$sumar1;
echo " la sume entre $caracter*2+$sumar1=$sumar2 <br>";
break;
case 2:

$sumar3=$caracter*7+$sumar2;
echo " la sume entre $caracter*7+$sumar2=$sumar3 <br>";
break;
case 3:

$sumar4=$caracter*6+$sumar3;
echo " la sume entre $caracter*6+$sumar3=$sumar4 <br>";
break;
case 4:

$sumar5=$caracter*5+$sumar4;
echo " la sume entre $caracter*5+$sumar4=$sumar5 <br>";
break;
case 5:

$sumar6=$caracter*4+$sumar5;
echo " la sume entre $caracter*4+$sumar5=$sumar6 <br>";
break;
case 6:

$sumar7=$caracter*3+$sumar6;
echo " la sume entre $caracter*3+$sumar6=$sumar7 <br>";
break;
case 7:

$sumar8=$caracter*2+$sumar7;
echo " la sume entre $caracter*2+$sumar7=$sumar8 <br>";
break;



}




}
$sumat=$sumar1+$sumar2+$sumar3+$sumar4+$sumar5+$su mar6+$sumar7+$sumar8;
echo "<br><br>sumatotal: $sumat";



$div=$sumat%11;

$resto=11-$div;
echo "el digito es :$resto";


?>



creo que me equivoco en la formula ,por eso se los dejo para que me den una mano , gracias.....
  #2 (permalink)  
Antiguo 15/01/2004, 10:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno ..en estos casos si el problema es de "algorítmia" .. es decir, de la rutina/pasos a seguir/algoritmo de validación de ese numero .. lo principal (para los que no lo conozcan) es que indiques ese procedimiento de validación .. así se podrá dar alguna implementación.

Por mi parte ..hace tiempo que busqué dicho "algoritmo" y lo implementé en PHP (basado en una implementación de otro lenguaje de programación). Lo puedes ver aquí:

http://www.forosdelweb.com/showthrea...threadid=80823

(buff que tiempos xD .. nov 2002 fechado ese mensaje jeje).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 15/01/2004, 11:20
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
hola gracias por tu ayuda pero el script me marca un error en la linea 9

function validar_rut($rut,$digito_v){
$x=2;
$sumatorio=0;
for ($i=strlen($rut)-1;$i&gt;=0;$i--) // linea 9
{
if ($x&gt=7){$x=2;}
$sumatorio=$sumatorio+($rut[$i]*$x);
$x++;
}

el error:


Parse error: parse error, unexpected '=', expecting ')' in c:\php\www\prueba\vrut.php on line 9

me podrias indicar el error porfavor
  #4 (permalink)  
Antiguo 15/01/2004, 11:24
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
lo siento no me fije que mas abajo existia una coreccion gracias , el ultimo si funciona . chao

Última edición por mveraa; 15/01/2004 a las 11:33
  #5 (permalink)  
Antiguo 15/01/2004, 11:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si te fijas .. el código contiene caracteres "raros" .. (eso fué debido a la conversión de datos entre los foros antiguos (en ASP) y estos "nuevos" en PHP ..)

Si lees todo el mensaje que te indiqué (¬¬) verás el código corregido y la misma pregunta que estás haciendo .. ademas de una observación sobre determinada función que se usa para obtener el módulo de la división ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:50.