Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Estou desenvolvendo um questionário eletrônico, todas as perguntas e respostas eu busco no banco de dados, algumas perguntas são apresentadas em ordem aleatória (mas sempre estão na mesma página), em cada página tenho um botão Prosseguir, um botão voltar (volta a página anterior) e Voltar ao inicio. A cada clique em prosseguir eu faço um update no banco de dados, o problema é quando clica em voltar, gostaria que os checkboxs/radiobuttons marcados anteriormente fossem apresentados.
Exemplo: - Página 5:
/applications/core/interface/imageproxy/imageproxy.php?img=http://i.imgur.com/Emg3j.jpg&key=10157fd5c3bab961b9fe606f60b3dc3e8346c19a3d885e283870711a1b7c2346" alt="Emg3j.jpg" />
Suponhamos que a pessoa marque 2 para tudo clique em prosseguir e depois vai para a página 6 preenche e vai para a página 7, por algum motivo ela deseja voltar para a página 5, então todos os radios buttons deveriam estar preenchidos com 2.
Pensei em gravar em variáveis de sessão, mas são mais de 20 páginas e ao todo umas 150 perguntas, acho que dessa forma fica muito 'pesado'.
Alguém tem alguma ideia?
Bom dia lycoz.
Você tem duas alternativas:
1º - Utilizando o banco de dados
Como você mesmo frisou, a cada submit é atualizado o banco de dados, se atualiza colocando as respostas do usuário você já tem donde pegar essas informações. Crie um if na página, se existir a session do usuário atual com algumas resposta, puxe as mesmas.
2º - Arrays
A segunda opção é com arrays.. e então quando o usuário voltar a página, pegar as informações das perguntas com os arrays #EDIT: (Frisar que estas "informações" viriam do banco).
Um exemplo com array:
<?php
if(!empty($_GET["action"]))
{
$resposta = array();
$resposta['nome'] = $_POST['nome'];
$resposta['email'] = $_POST['email'];
$resposta['telefone'] = $_POST['telefone'];
}
?>
<!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>
</head>
<body>
<form action="index.php?action=submit" method="post">
Nome: <input name='nome' type='text' value='<?php echo @$resposta['nome']?>' />
<br /><input name='email' type='text' value='<?php echo @$resposta['email']?>' />
<br /><input name='telefone' type='text' value='<?php echo @$resposta['telefone']?>' />
<br />
<br />
<input name="" type="submit" />
</form>
</body>
</html>
Neste exemplo, ficam na página desde o inicio, porém se não houver valor, não atrapalharam em nada e aí quando voltar, já terão valor, e entrará em ação.
Abraço.
Cara, com Array não daria certo, pq na mudança de uma pagina para outra os arrays se perderiam.
A Não ser que ele enviasse os valores dos arrays via GET.
Ou Ele usa $_SESSION ou Banco de Dados, arrays via GET eu não recomendo.
salve mano lycoz ! :natallaugh:
ly de LÍGIA!
e esse coz ?
>
Cara, com Array não daria certo, pq na mudança de uma pagina para outra os arrays se perderiam.
A Não ser que ele enviasse os valores dos arrays via GET.
Ou Ele usa $_SESSION ou Banco de Dados, arrays via GET eu não recomendo.
Vou tentar fazer usando $_SESSION, o meu medo é ficar muito pesado.Cara, com Array não daria certo, pq na mudança de uma pagina para outra os arrays se perderiam.
Positivo. Bem lembrado brother, por esta razão que sugeri a integração com o banco.. Lê novamente.. Dei duas alternativas, ou com array ou com banco de dados... porém nas duas hipóteses ele iria utilizar o banco, pois para carregar os arrays precisaria dos dados certo? Sugeri os arrays como uma forma de caminho para poupar várias consultas e linhas de código em uma página só... pois creio que ele tem uma página de modelo para todas as perguntas que são geradas com dados do banco, então em uma tabela no banco, ele registraria as informações necessárias, "name", "value".. então seria algo automático para todas as perguntas.
Vou tentar fazer usando $_SESSION, o meu medo é ficar muito pesado.
Bom, como já está no banco de dados, eu optaria por usar o exemplo que postei.. vai perder o valor de uma página para outra, você vai ter o trabalho de fazer a integração com o banco, carregando as array com dados já existentes... imagine 500 pessoas fazendo o questionário simultaneamente? Complicado registrar em sessions em.. com as array, iria ser armazenado, quando mudar de página esvaziam, e ao voltar se recarregam novamente, sem pesar muito... melhor na minha opinião.. más, como o sistema é seu.. pense bem.
Abraço.
Cara, eu acredito que só tem 2 formas... Uma tabela no banco com dados temporários ou sessão.