PHP - Dígito Verificador

 
Vista:
sin imagen de perfil
Val: 14
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Dígito Verificador

Publicado por DANIEL (5 intervenciones) el 07/12/2020 02:08:05
Hola, tengo problema con el digito verificador, como implementarlo. Lo que necesito es que en una form escribo escribo el rut y que me vaya mostrando el dígito a medida que escribo o cuando pierda el foco..

Mi código es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
if (!empty($_POST)){
    $rut = $_POST['rut'];
    $rut_dv = $_POST['rut_dv'];
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
 
<script>
function dv($rut){
    $s=1;
    for($m=0;$rut!=0;$r/=10)
    $s=($s+$rut%10*(9-$m++%6))%11;
    echo, chr($s?$s+47:75);
}
</script>
</head>
 
<body>
<form action="" method="POST">
    <input type="text" name="rut" id="rut"  value="<?php echo (!empty($rut)) ? $rut : ""; ?>">
    <input type="text" name="rut_dv" id="rut_dv" >
 
</form>
</body>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Dígito Verificador

Publicado por joel (1269 intervenciones) el 07/12/2020 08:53:05
Hola Daniel, exactamente que tienes que hacer tu pagina? no me queda claro como ayudarte...
Que quieres que por cada valor que se introduzca en el input rut mostrar el resultado de la función dv() en el input rut_dv?

Viendo por encima, veo que tienes varios errores en el código js... $r no esta definido, echo no existe en js, y chr tampoco!!



Sin saber si los cálculos son correctos, haber si te sirve esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
if (!empty($_POST)){
    $rut = $_POST['rut'];
    $rut_dv = $_POST['rut_dv'];
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
 
<script>
function dv($rut){
    $s=1;
    for($m=0;$rut!=0;$rut/=10) {
        $s=($s+$rut%10*(9-$m++%6))%11;
    }
    document.getElementById("rut_dv").value=String.fromCharCode($s?$s+47:75);
}
</script>
</head>
 
<body>
<form action="" method="POST">
    <input type="text" name="rut" id="rut" onkeyup="dv(this.value)" value="<?php echo (!empty($rut)) ? $rut : ""; ?>">
    <input type="text" name="rut_dv" id="rut_dv" >
 
</form>
</body>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Dígito Verificador

Publicado por DANIEL (5 intervenciones) el 07/12/2020 14:40:11
Hola:

Lo que necesito es que cada vez que ingrese valores en el input Rut, me calcule el Dígito verificador en Rut_DV.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Dígito Verificador

Publicado por DANIEL (5 intervenciones) el 07/12/2020 20:27:57
Muchas gracias, eso es lo que necesitaba, pero por alguna razón me entrega diferentes valores.

Si yo aplico la función sola me da los valores correctos, por ejemplo:

para 10528500 debe dar 0 => da 3
para 78564523 debe dar 5 => da 1
para 56856124 debe dar 4 => da /
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Dígito Verificador

Publicado por joel (1269 intervenciones) el 08/12/2020 09:08:43
Hola Daniel, a que función haces referencia? la de js que tu has puesto da error!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Dígito Verificador

Publicado por DANIEL (5 intervenciones) el 08/12/2020 16:05:54
Hola Joel, gracias por tu tiempo.
Mira, si yo corro la función siguiente sola, me entrega los datos correctos, pero si aplicó el código propuesto me dan otros valores

1
2
3
4
5
6
7
8
9
10
11
<?php
 
function dv($rut){
     $s=1;
     for($m=0;$rut!=0;$rut/=10)
         $s=($s+$rut%10*(9-$m++%6))%11;
     echo 'El digito verificador es: ',chr($s?$s+47:75);
}
 
dv(10528500)
?>

En este caso debe dar "0" cero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Dígito Verificador

Publicado por joel (1269 intervenciones) el 09/12/2020 08:17:29
ah... esa función es de PHP!!! tu la pusiste como si fuera de JavaScript... por eso te dije lo de los errores!!!

Por alguna razón, los cálculos en PHP no son los mismos que en JavaScript...

A mi modo de ver puedes hacer dos cosas:
1.- revisar la función en JavaScript para ver porque no realiza el calculo correctamente.
2.- utilizar AJAX para hacer la petición al servidor PHP.

Yo te recomiendo la primera, es la mas sencilla y correcta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Dígito Verificador

Publicado por DANIEL (5 intervenciones) el 10/12/2020 03:42:35
Muchas Gracias Joel, igualmente me sirvió tu orientación....seguiré buscando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar