Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sir Lonely

Conferencia 'quadro-a-quadro'

Recommended Posts

Topico Relacionado

http://forum.imasters.com.br/index.php?/topic/414025-php-nao-escreve-em-arquivo

---------------------------------------------------------------------------------

 

De onde paramos pelo Tópico anterior. Já estamos escrevendo e tudo o mais. A conferencia em feita porem esta errônia.

 

Vamos aos códgos:

 

Arquivo onde Digito os valores a serem conferidos no DB.txt Index.php (iput's)

<form action="./enviar.php" method="post" name="form1">

<input type="text" size="3" name="num1" id="" maxlength="2" />
<input type="text" size="3" name="num2" id="" maxlength="2" />
<input type="text" size="3" name="num3" id="" maxlength="2" />
<input type="text" size="3" name="num4" id="" maxlength="2" />
<input type="text" size="3" name="num5" id="" maxlength="2" />
<input type="text" size="3" name="num6" id="" maxlength="2" />
<input type="text" size="3" name="num7" id="" maxlength="2" />
<input type="text" size="3" name="num8" id="" maxlength="2" />
<input type="text" size="3" name="num9" id="" maxlength="2" />
<input type="text" size="3" name="num10" id="" maxlength="2" />
<input type="text" size="3" name="num11" id="" maxlength="2" />
<input type="text" size="3" name="num12" id="" maxlength="2" />
<input type="text" size="3" name="num13" id="" maxlength="2" />
<input type="text" size="3" name="num14" id="" maxlength="2" />
<input type="text" size="3" name="num15" id="" maxlength="2" />

<input name="enviar" type="submit"  />

</form>

enviar.php (tratamento do Db e Input's)

<?php

$num1 = $_POST['num1'];
$num2 = $_POST['num2'];
$num3 = $_POST['num3'];
$num4 = $_POST['num4'];
$num5 = $_POST['num5'];
$num6 = $_POST['num6'];
$num7 = $_POST['num7'];
$num8 = $_POST['num8'];
$num9 = $_POST['num9'];
$num10 = $_POST['num10'];
$num11 = $_POST['num11'];
$num12 = $_POST['num12'];
$num13 = $_POST['num13'];
$num14 = $_POST['num14'];
$num15 = $_POST['num15'];



$seq = array("$num1","$num2","$num3","$num4","$num5","$num6","$num7","$num8","$num9","$num10","$num11","$num12","$num13","$num14","$num15");
$arquivo = file('db.txt');
$acertos = 0;

foreach ($arquivo as $linha => $linhaConteudo) {
        foreach ($seq as $numero) {
                if (!strstr($linhaConteudo, $numero)===FALSE) {
                        ++$acertos;
                }
        }
        echo 'Linha <b>'.($linha+1).'</b>: '.$acertos.' acertos<br />';
        $acertos = 0;
}
?>

OK.

 

O que ocorre é o seguinte.

Da forma que está ele trata os inputs dessa forma:

 

Conteudo do DB.txt

01 02 03 04 05 07 08 09 11 12 15 16 19 20 22

 

Formulário (index.php) de conferência

02 03 04 05 06 07 08 09 10 11 12 13 14 15 16

 

Resultado

Linha 1 - 11 acertos.

 

Porem o correto seria 3 acertos, pois os unicos valores que batem na mesma casa são: 07,08,09.

 

ou seja, o php tem que tratar como VERDADEIRO apenas os valores que baterem nos inputs (no caso do exemplo) 'Num6', 'Num7' e 'Num8'.

 

Isso para cada linha no DB.

Pois o DB terá infinitas linhas de sequências crescentes com 15 dígitos no máximo.

-----

 

Obrigado por seu tempo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo não cheguei a ler o post anterior.

 

Mas imagino que a lógica feita deve comparar valores iguais entre os arrays e

não suas posições. Sendo assim fica certo dizer 11 acertos pois existem 11 valores

iguais entre os arrays.

 

Para fazer o que você quer, se a quantidade de chaves entre os arrays

forem iguais (ou seja, 15 tanto em um quanto o outro) basta você fazer

uma comparação dentro de um looping.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif array_intersect_assoc()

 

<?php
$db = array( 1 , 2 , 3 , 4 , 5 , 7 , 8 , 9 , 11 , 12 , 15 , 16 , 19 , 20 , 22 );
$in = array( 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );

var_dump( array_intersect_assoc( $db , $in ) );

 

Saída:

array(3) {
 [5]=>
 int(7)
 [6]=>
 int(8)
 [7]=>
 int(9)
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa amigo João esqueci completamente desta função.

 

Obrigado por me lembrar.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.