Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema de Adequação [sem DB]


Mestereko

Pergunta

Isso mesmo... como mostrar para um cliente o tipo de produto que mais se adapta em suas necessidades ?

Aqui onde trabalho chamamos isso de Sistema de Adequação, muito util para sites comerciais...

eu havia postado dúvidas no fórum e acabei encontrando a solução, gostei tanto que vou postar um script pronto pra quem quizer fazer isso em seu site...

sem complicações, sem DB e sem erro... apenas com cálculos !

os comentários irão explicar os passos principais do script que interpreta as informações...

apenas lembrando que esse código usa um exemplo de 5 perguntas e 3 alternativas para cada exemplo

vamos lá

adequacao.php

<?
// pegando os values dos radio buttons do form
    $radio1 = $_POST['radio1'];        
    $radio2 = $_POST['radio2'];
    $radio3 = $_POST['radio3'];
    $radio4 = $_POST['radio4'];
    $radio5 = $_POST['radio5'];

// array (vetor) que inicialmente receberá a quantidade de vezes
// que certa resposta foi marcada
    $resultados[0] = 0;
    $resultados[1] = 0;
    $resultados[2] = 0;
    
    
//primeiro grupo de respostas
if ($radio1 == 1)            // se radio1 receber o valor 1
   {            
    $resultados[0]++;        // incremente em 1 o vetor $resultados na posição 0    
   }
   elseif($radio1 == 2)        // se radio1 receber o valor 2
   {    
    $resultados[1]++;        // incremente em 1 o vetor $resultados na posição 1
   }
   elseif ($radio1 == 3)    // se radio1 receber o valor 3
   {  
    $resultados[2]++;        // incremente em 1 o vetor $resultados na posição 2
   }

// segundo grupo de respostas
if ($radio2 == 1){
    $resultados[0]++;
   }
   elseif ($radio2 == 2){
    $resultados[1]++;
   }
   elseif ($radio2 == 3){
    $resultados[2]++;
   }

// terceiro grupo de respostas
if ($radio3 == 1){
    $resultados[0]++;
   }
   elseif ($radio3 == 2){
    $resultados[1]++;
   }
   elseif ($radio3 == 3){
    $resultados[2]++;
   }

// quarto grupo de respostas
if ($radio4 == 1){
    $resultados[0]++;
   }
   elseif ($radio4 == 2){
    $resultados[1]++;
   }
   elseif ($radio4 == 3){
    $resultados[2]++;
   }

// quinto grupo de respostas
if ($radio5 == 1){                  
    $resultados[0]++;
   }
   elseif ($radio5 == 2){
    $resultados[1]++;
   }
   elseif ($radio5 == 3){
    $resultados[2]++;
   }


                                //Criando um vetor auxiliar para armazenar a
   $ordenado = $resultados;     //quantidade de cada resposta

   sort($ordenado);             // Ordenando o vetor em ordem crescente,
                                   // essa função n mantém a ordem dos indices

   $maior = $ordenado[2];       //Pegando o maior valor do vetor ordenado
                                //nesse caso o último

   $j = 0;                      //Variável auxiliar


   //Descobrindo qual índice se encontra o maior valor descoberto...
   for ($i = 0; $i < 3; $i++){
           if ($resultados[$i] == $maior){      
               $Indices[$j] = $i;               
               $j++;
           }
   }

   //Se o antepenúltimo e o último valor do vetor ordenado forem iguais, então
   //existe mais de um índice com o maior valor.

   if ($ordenado[1] == $ordenado[2]){ // if1
           echo "As respostas com maior número são: <br> ";

           //Para cada item do vetor $Indices, escreva na tela a resposta e a
           //quantidade de marcações dela.
        foreach($Indices as $valor){
            $resposta = $valor + 1;
            echo "$resposta com $resultados[$valor] marcações <br>";



        if ($resposta == 1){
            echo "<font color='FF0000'>Produtos do grupo 1</font><br>";
        } 
        elseif($resposta == 2){
            echo "<font color='FF0000'>Produtos do grupo 2</font><br>";
        }
        elseif($resposta == 3){
            echo "<font color='FF0000'>Produtos do grupo 3</font><br>";
        }
    

           }// FIM foreach

   } // FIM if1
   
   else{

       //Se só um item do vetor tem o maior valor, então só mostre ele.
       foreach($Indices as $valor){
            echo "A resposta com maior número é: ";
            $resposta = $valor + 1;
               echo "$resposta com $resultados[$valor] marcações <br>";
        
        if ($resposta == 1){
            echo "<font color='FF0000'>Produtos do grupo 1</font><br>";
        } 
        elseif($resposta == 2){
            echo "<font color='FF0000'>Produtos do grupo 2</font><br>";
        }
        elseif($resposta == 3){
            echo "<font color='FF0000'>Produtos do grupo 3</font><br>";
        }
      }
   }


?>
form.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
&lt;script language="JavaScript" type="text/javascript">

function checkAllRadioB(ParForm){
    var k,p,y,z,xy,i,p;
    var FrmElements = document.forms[ParForm].elements;
    //Faz um loop em todos os elementos existentes do formulário
    for(i=0;i<FrmElements.length;i++){    
        k = 1;
        if(FrmElements[i].type == 'radio'){
            y = i;
            z = y;
            while(FrmElements[y].name == FrmElements[y+1].name){
                y++;
                k++;
            }
        // k agora possui o tamanho do grupo dos botões  ex: r1,r1,rs1; k = 3
            i = y;
            xy = 0;
            for(p=0;p<k;p++){
                if(FrmElements[z+p].checked==false) xy++;
            }
            if(xy == k){
                alert('Favor responder todas as perguntas');
                return false;    
                }
            }
    }
    return false;
}
</script>

</head>

<body>
<form action="adequacao.php" method="post" name="form1" onSubmit="java script:return checkAllRadioB('form1')">

 <p>pergunta 1</p>
 <input name="radio1" type="radio" value="1" />teste1
 <input name="radio1" type="radio" value="2" />teste2
 <input name="radio1" type="radio" value="3" />teste3

  <p>pergunta 2</p>
 <input name="radio2" type="radio" value="1" />teste1
 <input name="radio2" type="radio" value="2" />teste2
 <input name="radio2" type="radio" value="3" />teste3

 <p>pergunta 3</p>
 <input name="radio3" type="radio" value="1" />teste1
 <input name="radio3" type="radio" value="2" />teste2
 <input name="radio3" type="radio" value="3" />teste3

 <p>pergunta 4</p>
 <input name="radio4" type="radio" value="1" />teste1
 <input name="radio4" type="radio" value="2" />teste2
 <input name="radio4" type="radio" value="3" />teste3

 <p>pergunta 5</p>
 <input name="radio5" type="radio" value="1" />teste1
 <input name="radio5" type="radio" value="2" />teste2
 <input name="radio5" type="radio" value="3" />teste3

 <p><input type="submit" value="executa" /></p>

</form>

</body>
</html>

como eu sempre digo... dúvidas, sugestões, bugs, pedidos, reclamações, pf postem aqui...

t+ :D

Editado por Mestereko
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...