mcaa 0 Denunciar post Postado Março 2, 2012 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
rfps888 7 Denunciar post Postado Março 2, 2012 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
mcaa 0 Denunciar post Postado Março 2, 2012 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
rfps888 7 Denunciar post Postado Março 2, 2012 Troque essa linha, não pode ter o isset. if ( $_SERVER['REQUEST_METHOD']=='POST' ){ Compartilhar este post Link para o post Compartilhar em outros sites
mcaa 0 Denunciar post Postado Março 2, 2012 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
rfps888 7 Denunciar post Postado Março 2, 2012 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
mcaa 0 Denunciar post Postado Março 2, 2012 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
rfps888 7 Denunciar post Postado Março 2, 2012 post o codigo completo Compartilhar este post Link para o post Compartilhar em outros sites
mcaa 0 Denunciar post Postado Março 2, 2012 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
gremio10 14 Denunciar post Postado Março 2, 2012 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
rfps888 7 Denunciar post Postado Março 2, 2012 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
mcaa 0 Denunciar post Postado Março 5, 2012 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
mcaa 0 Denunciar post Postado Março 6, 2012 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
rfps888 7 Denunciar post Postado Março 6, 2012 faça: header('Location: suapagina.php'); Compartilhar este post Link para o post Compartilhar em outros sites
mcaa 0 Denunciar post Postado Março 6, 2012 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
rfps888 7 Denunciar post Postado Março 6, 2012 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