Ir para conteúdo

POWERED BY:

Arquivado

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

mcaa

Criando teste de personalidade com php

Recommended Posts

Olá amigos,

 

não entendo muito de PHP, preciso criar um formulário com várias perguntas e as opções de resposta são em radio. Eu preciso que essas respostas sejam somadas, tipo quantas respostas foram a, b e c. E preciso que isso fique gravado numa sessão pois assim que a pessoa fizer o teste de personalidade no final aparece pra ela o resultado. Pessoal eu já pesquisei varios lugares, aqui é a minha ultima esperança, isto e um trabalho que estou fazendo pra daqui a 1 semana,

 

 

conto com a ajuda de todos.

 

Por enquanto eu fiz isso:

 

formulario.html

<form method="post" action="respostas.php" target="_self">

<ol>

<li>Valorizo muito a harmonia. Evito confrontos pois acredito serem  
menos eficazes que acordos mútuos.<br>
<input type="radio" name="q1" value="A">Concordo<br>
<input type="radio" name="q1" value="B">Neutro<br>
<input type="radio" name="q1" value="C">Discordo<br>
<br>

<li>Trabalho melhor com mudanças e imprevistos. Gosto de novidades.
Creio que não há nada pior para uma pessoa que viver uma vida monótona 
em casa e no trabalho. <br>
<input type="radio" name="q2" value="A">Concordo<br>
<input type="radio" name="q2" value="B">Neutro<br>
<input type="radio" name="q2" value="C">Discordo<br>

<br>
<li>Uso de gentileza para conseguir o que quero. 
Por trás do meu jeito terno há a consciência de que existem dois lados 
convergentes, o que me impedem de agir com o lado racional. <br>
<input type="radio" name="q3" value="A">Concordo<br>
<input type="radio" name="q3" value="B">Neutro<br>
<input type="radio" name="q3" value="C">Discordo<br>

<br>

</ol>


<input type="submit" value="Enviar">





 

 

 

resposta.php

 

<?php
// pegando os dados do input

// para pegar o valor do input nome
$pergunta1 = $_POST['pergunta1'];
$pergunta2 = $_POST['pergunta2'];
$pergunta3 = $_POST['pergunta3'];
$pergunta4 = $_POST['pergunta4'];
$pergunta5 = $_POST['pergunta5'];
$pergunta6 = $_POST['pergunta6'];
$pergunta7 = $_POST['pergunta7'];
$pergunta8 = $_POST['pergunta8'];
$pergunta9 = $_POST['pergunta9'];
$pergunta10 = $_POST['pergunta10'];
$pergunta11 = $_POST['pergunta11'];
$pergunta12 = $_POST['pergunta12'];
$pergunta13 = $_POST['pergunta13'];
$pergunta14 = $_POST['pergunta14'];
$pergunta15 = $_POST['pergunta15'];
$pergunta16 = $_POST['pergunta16'];
$pergunta17 = $_POST['pergunta17'];
$pergunta18 = $_POST['pergunta18'];
$pergunta19 = $_POST['pergunta19'];
$pergunta20 = $_POST['pergunta20'];
$pergunta21 = $_POST['pergunta21'];
$pergunta22 = $_POST['pergunta22'];
$pergunta23 = $_POST['pergunta23'];
$pergunta24 = $_POST['pergunta24'];
$pergunta25 = $_POST['pergunta25'];
$pergunta26 = $_POST['pergunta26'];
$pergunta27 = $_POST['pergunta27'];
$pergunta28 = $_POST['pergunta28'];
$pergunta29 = $_POST['pergunta29'];
$pergunta30 = $_POST['pergunta30'];
$pergunta31 = $_POST['pergunta31'];
$pergunta32 = $_POST['pergunta32'];
$pergunta33 = $_POST['pergunta33'];
$pergunta34 = $_POST['pergunta34'];
$pergunta35 = $_POST['pergunta35'];
$pergunta36= $_POST['pergunta36'];
$pergunta37 = $_POST['pergunta37'];
$pergunta38 = $_POST['pergunta38'];
$pergunta39= $_POST['pergunta39'];
$pergunta40= $_POST['pergunta40'];


// vamos imprimir os valores dgitados dos campos na pagina

echo "Nome: $nome<br />";
echo "E-mail: $email<br />";


echo "Resposta 1 : $pergunta1<br/> ";
...

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma forma rápida de fazer pode ser:

 

<form method="post" action="" target="_self">
<input type="radio" name="options[]" value="A">Concordo<br>
<input type="radio" name="options[]" value="B">Neutro<br>
<input type="radio" name="options[]" value="C">Discordo<br><br>
<input type="radio" name="options1[]" value="A">Concordo<br>
<input type="radio" name="options1[]" value="B">Neutro<br>
<input type="radio" name="options1[]" value="C">Discordo<br>
<input type="submit" value="send" name="send" />
</form>
<?php
session_start();
$_SESSION['A'] = 0;
$_SESSION['B'] = 0;
$_SESSION['C'] = 0;
if ( isset($_SERVER['REQUEST_METHOD']=='POST') ){
 //uma vez que as perguntas têm sempre 3 respostas pode-se fazer assim
for( $i=0;$i<3;$i++ ){
	if ( $_POST['options'][$i]!='' || $_POST['options1'][$i]!='' ){
		++$_SESSION[$_POST['options'][$i]];
		++$_SESSION[$_POST['options1'][$i]];
	}
}
}
print_r($_SESSION);
session_destroy();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma forma rápida de fazer pode ser:

 

<form method="post" action="" target="_self">
<input type="radio" name="options[]" value="A">Concordo<br>
<input type="radio" name="options[]" value="B">Neutro<br>
<input type="radio" name="options[]" value="C">Discordo<br><br>
<input type="radio" name="options1[]" value="A">Concordo<br>
<input type="radio" name="options1[]" value="B">Neutro<br>
<input type="radio" name="options1[]" value="C">Discordo<br>
<input type="submit" value="send" name="send" />
</form>
<?php
session_start();
$_SESSION['A'] = 0;
$_SESSION['B'] = 0;
$_SESSION['C'] = 0;
if ( isset($_SERVER['REQUEST_METHOD']=='POST') ){
 //uma vez que as perguntas têm sempre 3 respostas pode-se fazer assim
for( $i=0;$i<3;$i++ ){
	if ( $_POST['options'][$i]!='' || $_POST['options1'][$i]!='' ){
		++$_SESSION[$_POST['options'][$i]];
		++$_SESSION[$_POST['options1'][$i]];
	}
}
}
print_r($_SESSION);
session_destroy();

 

 

Deu o seguinte erro:

 

syntax error, unexpected T_IS_EQUAL, expecting ',' or ')'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque essa linha, não pode ter o isset.

 

 

if ( $_SERVER['REQUEST_METHOD']=='POST' ){

 

 

Não estou conseguindo marcar as outras questoes, apenas a primeira.

 

me retorno o erro:

 

 

Notice: Undefined index: options1 in C:\Documents and Settings\Carla\Meus documentos\UMBRELLATestes\USBW\root\apm\respostas.php on line 12

Notice: Undefined index: in C:\Documents and Settings\Carla\Meus documentos\UMBRELLATestes\USBW\root\apm\respostas.php on line 12

Notice: Undefined offset: 1 in C:\Documents and Settings\Carla\Meus documentos\UMBRELLATestes\USBW\root\apm\respostas.php on line 10

Notice: Undefined index: options1 in C:\Documents and Settings\Carla\Meus documentos\UMBRELLATestes\USBW\root\apm\respostas.php on line 10

Notice: Undefined offset: 2 in C:\Documents and Settings\Carla\Meus documentos\UMBRELLATestes\USBW\root\apm\respostas.php on line 10

Notice: Undefined index: options1 in C:\Documents and Settings\Carla\Meus documentos\UMBRELLATestes\USBW\root\apm\respostas.php on line 10

Compartilhar este post


Link para o post
Compartilhar em outros sites

São Notices, configure o seu php.ini para desabilitar essas mensagens.

 

De qualquer forma experimente trocar essas linhas:

 

if ( $_POST['options'][$i]!='' || $_POST['options1'][$i]!='' ){

por

if ( isset($_POST['options'][$i]) || isset($_POST['options1'][$i]) ){

Compartilhar este post


Link para o post
Compartilhar em outros sites

São Notices, configure o seu php.ini para desabilitar essas mensagens.

 

De qualquer forma experimente trocar essas linhas:

 

if ( $_POST['options'][$i]!='' || $_POST['options1'][$i]!='' ){

por

if ( isset($_POST['options'][$i]) || isset($_POST['options1'][$i]) ){

 

 

 

Aparece o seguinte erro:

 

 

Notice: Undefined index: options1 in C:\...\respostas.php on line 12

 

Notice: Undefined index: in C:\...\respostas.php on line 12

 


<?php
session_start();
$_SESSION['A'] = 0;
$_SESSION['B'] = 0;
$_SESSION['C'] = 0;
if ( $_SERVER['REQUEST_METHOD']=='POST') {
 //uma vez que as perguntas têm sempre 3 respostas pode-se fazer assim
       for( $i=0;$i<3;$i++ ){
               if ( isset($_POST['options'][$i]) || isset($_POST['options1'][$i]) ){
                       ++$_SESSION[$_POST['options'][$i]];
                       ++$_SESSION[$_POST['options1'][$i]];
               }
       }
}

session_destroy();

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

post o codigo completo

 

 

Formulário de perguntas

 

formulario.html

 

<form method="post" action="respostas.php" target="_self">

<ol>

<li>Valorizo muito a harmonia. Evito confrontos pois acredito serem  
menos eficazes que acordos mútuos.<br><!--maneira de avaliar, julgar e decidir T ou F-->
<input type="radio" name="options[]" value="A">Concordo<br><!--F-->
<input type="radio" name="options[]" value="B">Neutro<br>
<input type="radio" name="options[]" value="C">Discordo<br><!--T-->
<br>

<li>Trabalho melhor com mudanças e imprevistos. Gosto de novidades. <!--modo de perceber o mundo S ou N-->
Creio que não há nada pior para uma pessoa que viver uma vida monótona 
em casa e no trabalho. <br>
<input type="radio" name="options[]" value="A">Concordo<br> <!--N-->
<input type="radio" name="options[]" value="B">Neutro<br>
<input type="radio" name="options[]" value="C">Discordo<br> <!--S-->

<br>
<li>Uso de gentileza para conseguir o que quero. <!--maneira de avaliar, julgar e decidir T ou F-->
Por trás do meu jeito terno há a consciência de que existem dois lados 
convergentes, o que me impedem de agir com o lado racional. <br>
<input type="radio" name="options[]" value="A">Concordo<br><!--F-->
<input type="radio" name="options[]" value="B">Neutro<br>
<input type="radio" name="options[]" value="C">Discordo<br><!--T-->

<br>

</ol>


<input type="submit" value="send" name="send" />
</form>



 

 

respostas.php

 


<?php
session_start();
$_SESSION['A'] = 0;
$_SESSION['B'] = 0;
$_SESSION['C'] = 0;
if ( $_SERVER['REQUEST_METHOD']=='POST') {
 //uma vez que as perguntas têm sempre 3 respostas pode-se fazer assim
       for( $i=0;$i<3;$i++ ){
               if ( isset($_POST['options'][$i]) || isset($_POST['options1'][$i]) ){
                       ++$_SESSION[$_POST['options'][$i]];
                       ++$_SESSION[$_POST['options1'][$i]];
               }
       }
}

session_destroy();

?>

 

Irá exibir o resultado do teste

 

resultado.php

 


<?php
echo "Sua personalidade e " . $_POST["personalidade"];

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vejo necessidade de criar um array em radio button, é melhor sempre fazer com checkbox, mas, o que tu pode fazer é:

 

options[pergunta1][]
options[pergunta2][]
...

 

isso irá criar um array bi dimensional, e ai tu consegue trabalhar nele usando o foreach, e assim tu sabe os campos escolhidos e etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da forma que eu coloquei cada "bloco" de perguntas "A/B/C" tem de ser um options diference, ou seja:

 

FORMULARIO:

 

<form method="post" action="respostas.php" target="_self">

<ol>

<li>Valorizo muito a harmonia. Evito confrontos pois acredito serem  
menos eficazes que acordos mútuos.<br><!--maneira de avaliar, julgar e decidir T ou F-->
<input type="radio" name="options[]" value="A">Concordo<br><!--F-->
<input type="radio" name="options[]" value="B">Neutro<br>
<input type="radio" name="options[]" value="C">Discordo<br><!--T-->
<br>

<li>Trabalho melhor com mudanças e imprevistos. Gosto de novidades. <!--modo de perceber o mundo S ou N-->
Creio que não há nada pior para uma pessoa que viver uma vida monótona 
em casa e no trabalho. <br>
<input type="radio" name="options1[]" value="A">Concordo<br> <!--N-->
<input type="radio" name="options1[]" value="B">Neutro<br>
<input type="radio" name="options1[]" value="C">Discordo<br> <!--S-->

<br>
<li>Uso de gentileza para conseguir o que quero. <!--maneira de avaliar, julgar e decidir T ou F-->
Por trás do meu jeito terno há a consciência de que existem dois lados 
convergentes, o que me impedem de agir com o lado racional. <br>
<input type="radio" name="options2[]" value="A">Concordo<br><!--F-->
<input type="radio" name="options2[]" value="B">Neutro<br>
<input type="radio" name="options2[]" value="C">Discordo<br><!--T-->

<br>

</ol>


<input type="submit" value="send" name="send" />
</form>

 

CODIGO:

 

<?php
session_start();
$_SESSION['A'] = 0;
$_SESSION['B'] = 0;
$_SESSION['C'] = 0;
if ( $_SERVER['REQUEST_METHOD']=='POST') {
 //uma vez que as perguntas têm sempre 3 respostas pode-se fazer assim
       for( $i=0;$i<3;$i++ ){
               if ( isset($_POST['options'][$i]) || isset($_POST['options1'][$i]) ){
                       ++$_SESSION[$_POST['options'][$i]];
                       ++$_SESSION[$_POST['options1'][$i]];
                       ++$_SESSION[$_POST['options2'][$i]];
               }
       }
}

session_destroy();

?>

 

Mas existem várias outras formas de fazer isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da forma que eu coloquei cada "bloco" de perguntas "A/B/C" tem de ser um options diference, ou seja:

 

FORMULARIO:

 

<form method="post" action="respostas.php" target="_self">

<ol>

<li>Valorizo muito a harmonia. Evito confrontos pois acredito serem  
menos eficazes que acordos mútuos.<br><!--maneira de avaliar, julgar e decidir T ou F-->
<input type="radio" name="options[]" value="A">Concordo<br><!--F-->
<input type="radio" name="options[]" value="B">Neutro<br>
<input type="radio" name="options[]" value="C">Discordo<br><!--T-->
<br>

<li>Trabalho melhor com mudanças e imprevistos. Gosto de novidades. <!--modo de perceber o mundo S ou N-->
Creio que não há nada pior para uma pessoa que viver uma vida monótona 
em casa e no trabalho. <br>
<input type="radio" name="options1[]" value="A">Concordo<br> <!--N-->
<input type="radio" name="options1[]" value="B">Neutro<br>
<input type="radio" name="options1[]" value="C">Discordo<br> <!--S-->

<br>
<li>Uso de gentileza para conseguir o que quero. <!--maneira de avaliar, julgar e decidir T ou F-->
Por trás do meu jeito terno há a consciência de que existem dois lados 
convergentes, o que me impedem de agir com o lado racional. <br>
<input type="radio" name="options2[]" value="A">Concordo<br><!--F-->
<input type="radio" name="options2[]" value="B">Neutro<br>
<input type="radio" name="options2[]" value="C">Discordo<br><!--T-->

<br>

</ol>


<input type="submit" value="send" name="send" />
</form>

 

CODIGO:

 

<?php
session_start();
$_SESSION['A'] = 0;
$_SESSION['B'] = 0;
$_SESSION['C'] = 0;
if ( $_SERVER['REQUEST_METHOD']=='POST') {
 //uma vez que as perguntas têm sempre 3 respostas pode-se fazer assim
       for( $i=0;$i<3;$i++ ){
               if ( isset($_POST['options'][$i]) || isset($_POST['options1'][$i]) ){
                       ++$_SESSION[$_POST['options'][$i]];
                       ++$_SESSION[$_POST['options1'][$i]];
                       ++$_SESSION[$_POST['options2'][$i]];
               }
       }
}

session_destroy();

?>

 

Mas existem várias outras formas de fazer isto.

 

 

 

 

Eu fiz a logica do funcionamento do teste em java.

Pode me ajudar a converter para PHP?

 

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package apm;

import java.io.IOException;

/**
*
* @author Mara
*/
public class Apm {

   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) throws IOException {



       int i;
       int somaf=0, somat=0, somaj=0,somap=0,somas=0, soman=0, somae=0, somai=0;
       char r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;
       char resultft, resultjp, resultsn, resultie;



          r1 = InOut.leChar("Valorizo muito a harmonia. Evito confrontos pois acredito serem menos eficazes que acordos mútuos. f=Concordo ou t=Discordo");   
          r2 = InOut.leChar("Trabalho melhor com mudanças e imprevistos. Gosto de novidades. Creio que não há nada pior para uma pessoa que viver uma vida monótona em casa e no trabalho. n=Concordo ou s=Discordo");   
          r3 = InOut.leChar("Prefiro lugares animados. Aprendo melhor interagindo. Prefiro atividades dinâmicas como fazer esportes, conversar com amigos. e=Concordo ou i=Discordo");   
          r4 = InOut.leChar("Sinto-me bem com rotina; para mim metodologias e rotinas são infalíveis. A rotina me traz conforto e segurança.  j=Concordo ou p=Discordo");   
         /* r5 = InOut.leChar("Responda5");   
          r6 = InOut.leChar("Responda6");   
          r7 = InOut.leChar("Responda7");   
          r8 = InOut.leChar("Responda8");   
          r9 = InOut.leChar("Responda9");   
          r10 = InOut.leChar("Responda10");  


          */

        //  char[] resposta = new char[10];//aqui reservo espaço de memoria e defino o tamanho do vetor, assim colo são 10 perguntas
                               //reservo 10 posições para 10 respostas 

       //  for(i=0;i < 10; i++){

           if(r1 == 'f'){

               somaf=somaf+1;
               }else{

                   somat=somat+1;
           }   

           if(r2 == 'n'){

               soman=soman+1;
               }else{

               somas=somas+1;
           }   

           if(r3 == 'f'){

                somaf=somaf+1;
                   }else{
                somat=somat+1;
           }    

           if(r4 == 'e'){

                           somae=somae+1;
                       }else{

                           somai=somai+1;


           }

                   //}
        if(somaf > somat){

             resultft = 'F';
        }else{
             resultft = 'T';
        }

        if(somaj > somap){

             resultjp = 'J';
        }else{
              resultjp = 'P';
        }

        if(somas > soman){

            resultsn = 'S';
        }else{
              resultsn = 'N';
        }

         if(somai > somae){

               resultie = 'I';

        }else{
              resultie = 'E';
        }

       System.out.println("Sua personalidade contem as letras"+resultft +resultjp +resultsn +resultie +"nao necessariamente nesta ordem" );

   }
}

 

Alguém pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal me deem uma ajudinha com o codigo PHP, estou quase acabando.

 

 

<?php

$somaf = 0;
$somat = 0;
$somap = 0;
$somaj = 0;
$somap = 0;
$somai = 0;
$somae = 0;
$soman = 0;
$somas = 0;


$p = array()/* array para guardar os quatros tipos de variação de siglas*/
$siglaFT[];
$siglaSN[];
$siglaPJ[];
$siglaIE[];



for($i=1; $i=<4;$i++){

if($siglaFT[$i] == 'F'){

	$somaf += $somaf;
	}else{

	$somat += $somat;

}
}

if($somaf > $somat){

	$resultft = 'F';

	}else{

		$resultft = 'T';
}


for($i=1; $i=<4;$i++){

if($siglaSN[$i] == 'T'){


	$somas += $somas;
	}else{

	$soman += $soman;

}
}

if($somas > $soman){

	$resultft = 'S';

	}else{

		$resultft = 'N';
}

for($i=1; $i=<4;$i++){

if($siglaPJ[$i] == 'P'){


	$somap += $somap;
	}else{

	$somaj += $somaj;

}
}

if($somap > $somaj){

	$resultpj = 'S';

	}else{

		$resultpj = 'N';
}

for($i=1; $i=<4;$i++){

if($siglaIE[$i] == 'I'){


	$somai += $somai;
	}else{

	$somae += $somae;

}

}

if($somai > $somae){

	$resultie = 'I';

	}else{

		$resultie = 'E';
}







echo "As siglas de sua personalidade são : $resultft $resultjp $resultns $resultie  Não necessariamente nesta ordem<br/> ";

/*aqui quero que me direcione para a pagina da personalidade*/

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça:

 

header('Location: suapagina.php');

 

 

Beleza, mas e o restante do código? O professor me explicou ontem este codigo, mas sei que ta faltando alguma coisa nele, eu to rodando aqui e ele ta dando erro T_VARIABLE in C:// .....

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque o erro completo e já agora explique melhor o que pretende fazer é que esse codigo está muito confuso.

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.