Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, pessoal.
Estou procurando por exemplos e soluções que me ajudem a criar a seguinte questão. Preciso criar formulários em um sistema, para gerar uma especie e Survey (questionário), onde os campos deveram ser criados pelo usuário, quase como no Google Forms, porem de uma forma mais simples, sem muita firula.
Os campos necessários serão, radios, checkbox, texts e textareas. Procurei on-line, e só me retorna resultados de inserção de dados no banco.
Desde já agradeço pela ajuda.
ESerra isso é bem parecido com TinyMCE ou esse do imaster faz...estou com problema para entender e implementar esse tipo de funcionaliade...você tem algum tutorial ou matéria sobre tal assunto?
Esse que a gente usa para digitar nada mais é do que um editor visual (WYSIWYG)... os melhores são tinyMCE ou CKEditor, implementar eles é fácil, basta baixar e seguir o manual.
Criei uma parte aqui porem estou tendo um problema, que creio que seja simples a questão.
HTML
<label for="resposta_1" class="floatleft">
<b>Resposta 1:</b>
<input type="text" name="resposta[]" size="40" />
</label>
<label for="resposta_2">
<b>Resposta 2:</b>
<input type="text" name="resposta[]" size="40" />
</label>
<label for="resposta_2" class="floatleft">
<b>Resposta 3:</b>
<input type="text" name="resposta[]" size="40" />
</label>
<label for="resposta_4">
<b>Resposta 4:</b>
<input type="text" name="resposta[]" size="40" />
</label>
<label for="resposta_5">
<b>Resposta 5:</b>
<input type="text" name="resposta[]" size="40" />
</label>
PHP
resposta = $_POST['resposta'];
echo "<pre>";
print_r($resposta);
exit;
E sempre esta retornando a palavra "Array", porem quando coloco:
$resposta[] = $_POST['resposta'];
Retorna isso:
Array
(
[0] => Campo A
[1] => Campo B
[2] => Campo C
[3] => Campo D
[4] => Campo E
[5] => Array
)
Porque esse 5º elemento, e quando dou print_r apenas da variável sem [] retorna apenas um a palavra Array?
O seu HTML é apenas aquilo ou tem mais alguma coisa?
Concluindo o comentário do colega, se for só isso que você tem no HTML não tem o porquê dar erro, mas se tem mais código ali está o problema.
Além disso tem apenas o form com method POST, o que esta acontecendo é que de alguma forma não está reconhecendo a variável **$resposta** mesmo que eu mude o nome dela ela não armazena os dados passados pelo **$_POST['resposta']** e assim quando dou **print_r **ela retorna apenas a palavra **Array**:
$resposta = $_POST['resposta'];
Porem quando retiro ela, e dou o print_r apenas em:
echo "<pre>";
print_r($resposta);
exit;
Dai retorna:
Array
(
[0] => Campo A
[1] => Campo B
[2] => Campo C
[3] => Campo D
[4] => Campo E
)O problema estava na utilização das tags <label> estavam gerando este comportamento estranho, porem não deixa de fazer sentido. Foi apenas substituir por <div> que correu tudo bem.
Na verdade era outra coisa, um função que estava usando na página acima desse forme, estava causando algum erro incomum no sistema. A função era a seguinte:
function anti_injection($texto){
$texto = preg_replace("/(TRUNCATE|FROM|UPDATE|SELECT|INSERT|DELETE|WHERE|DROP TABLE|SHOW TABLE|ALTER TABLE|\*|--)/","",$texto);
$texto = preg_replace("/(TRUNCATE|FROM|UPDATE|SELECT|INSERT|DELETE|WHERE|DROP TABLE|SHOW TABLE|ALTER TABLE|\*|--)/","",$texto);
$texto = str_replace("/(truncate|from|update|select|insert|delete|where|drop table|show table|alter table|\*|--)/","",$texto);
$texto = str_replace("/(truncate|from|update|select|insert|delete|where|drop table|show table|alter table|\*|--)/","",$texto);
$_POST = preg_replace("/(truncate|from|update|select|insert|delete|where|drop table|show table|alter table|\*|--)/","",$_POST);
$_GET = preg_replace("/(truncate|from|update|select|insert|delete|where|drop table|show table|alter table|\*|--)/","",$_GET);
$_COOKIE = preg_replace("/(truncate|from|update|select|insert|delete|where|drop table|show table|alter table|\*|--)/","",$_COOKIE);
$_POST = preg_replace("/(FROM|ALTER TABLE|SELECT|INSERT|DELETE|UPDATE|WHERE|DROP TABLE|TRUNCATE|DATABASE|CREATE|RESET|SHOW TABLES|#|\*|--|\\\\)/i","",$_POST);
$_GET = preg_replace("/(FROM|ALTER TABLE|SELECT|INSERT|DELETE|UPDATE|WHERE|DROP TABLE|TRUNCATE|DATABASE|CREATE|RESET|SHOW TABLES|#|\*|--|\\\\)/i","",$_GET);
$_COOKIE = preg_replace("/(FROM|ALTER TABLE|SELECT|INSERT|DELETE|UPDATE|WHERE|DROP TABLE|TRUNCATE|DATABASE|CREATE|RESET|SHOW TABLES|#|\*|--|\\\\)/i","",$_COOKIE);
$texto = str_replace("^","",$texto);
$texto = str_replace(" ","",$texto);
$texto = str_replace(" ","",$texto);
$texto = str_replace(" ","",$texto);
$texto = str_replace(" ","",$texto);
$texto = strip_tags($texto);
$texto = addslashes($texto);
$texto = mysql_real_escape_string($texto);
return $texto;// remove palavras que contenham sintaxe sql
}
Ideia básica:
1 - Uma tabela para gerenciar os questionários, irá agregar todas os campos;
2 - Uma tabela para os campos propriamente dito; aqui basicamente seriam necessários os campos:
3 - Uma tabela para os adicionais do campo, tirando o text/textarea, os demais campos são compostos por várias opções, então você salvaria estas opções nesta tabela.
Na parte de como criar isto propriamente dito, na parte dos campos, eu começaria exibindo apenas uma opção "tipo de campo" e a partir do tipo selecionado exibiria a opção adequada para o usuário preencher.
Isso tudo pode ser muito refinado, mas a ideia básica é esta.