Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola galera!
Bom é o seguinte: estou desenvolvendo um SISTEMA DE AVALIAÇÃO ON-LINE e me deparei com um probleminha q tá dando o q fala <_<
O sitema funciona assim, o user inicia e de kra já mostra a 1ª pergunta e as opções para resposta, daí ele escolhe uma das opções e clica em PROXIMA para ir para a 2ª pergunta e assim por diante 3ª, 4ª, 5ª, mas é aí q tá pegando, veja o codigo:
>
$sql = "SELECT DISTINCT * FROM $get_tabela_db WHERE loja='$post_loja' AND linha='$post_linha' OR loja='TODAS' AND linha='$post_linha' OR loja='$post_loja' AND linha='TODAS' OR loja='TODAS' AND linha='TODAS' ORDER BY RAND() LIMIT 1";
$query = mysql_query($sql)or die(mysql_error());
Esse codigo ae, como vcs podem ver, seleciona os dados aleatoriamente usando RAND, e tras apenas um registro (LIMIT 1), que é a pergunta para o usuario responder, O PROBLEMA: é que o RAND as vezes REPETI algum registro, ou seja, algumas perguntas, daí num dá pq o usuario já respondeu aquela tal pergunta......COMO FAÇO PARA QUE O RAND() NÃO REPITA????
POR FAVOR, HELP :(
você pode guardar o ID de cada pergunta que o user está, em sessão.
E depois quando você for fazer o select, você coloca para que o ID, seja diferente do da sessão. Dae ele nunca vai repetir.
WHERE ID <> ID_SESSAONão loga não Adson, pq eu estou em uma INTRANET e é para os funcionarios da empresa responderem!
Só o pessoal que vai administrar o sistema, ou seja, cadastrar perguntas, respostar, ver as avaliações, percentuais etc.
Dee, eu já pensei nisso, mas o SELECT vai crescer muito dependendo da quantidade de questoes que tiver no banco!
Então estou procurando, primeiramente, se tem como eu fazer isso de maneira mais limpa, senão tiver como, vou ter que fazer dessa forma q tu me falaste. ^_^
Dário coloca assim acho que vai da certo.
DISTINCT(id_da_pergunta)
Se a pessoa não precisa de login pra responder, pode resolver como o Dee falou, guardando numa sessão. Mas eu colocaria os IDs na sessão em forma de array. Na hora de consultar a próxima pergunta, faria assim:
"SELECT DISTINCT * FROM $get_tabela_db WHERE (loja='$post_loja' AND linha='$post_linha' OR loja='TODAS' AND linha='$post_linha' OR loja='$post_loja' AND linha='TODAS' OR loja='TODAS' AND linha='TODAS') AND id_pergunta NOT IN (" . implode(',', $aray_sessao) . ") ORDER BY RAND() LIMIT 1"
Adson, assim não dá porque o DISTINCT faria efeito só um ID, sendo que o user já teria passa, por exemplo, por varias perguntas (ids), então teria que ser DISTINCT(todos os ids até a pergunta atual), mas como falei pro Dee, ficaria muito sujo o SELECT.
Vinicius tem um exemplo ae, é que eu num só muito de usar arrays saka! :(
Outra coisa que você pode fazer é o seguinte, você cria um cookie ao entrar na página, e na tabela das resposatas você cria dois campos id_pergunta e nome_cookie,aí no insert você manda inserir o valor do cookie e o id da pergunta, aí você pode fazer um select na tabela respostas tipo select id_pergunta from respostas where nome_cookie='$nome_cookie_que_foi_criado'.....
aí no seu select você coloca id<>'$id_pergunta' ..... mais ou menos isso, não ta bem explicado mais dar pra entender...
qualquer dúvida posta aí.
Entendi Adson, entendi!
Mas eu prefiro usar SESSION, mas acho q dá certo tambem! Seria quase a mesma coisa que o Dee postou, vou tentar mais essa possibilidades tambem.
Mim responde uma coisa, para o user responder essa avaliação ele precisa se logar, se sim tenho uma solução, aguardo......