Ir para o conteúdo
sEnte

Dropdown menu dúvida técnica

Mensagens Recomendadas

sEnte

Isto é mais uma dúvida de como fazer...

Passo a explicar.

No caso de um blog, posso adicionar posts a determinadas categorias.

Código HTML para uma dropdown

<select>
		   <option value = "1">-- SELECT--</option>
		   <option value = "2">one</option>
		   <option value = "3">two</option>
		   <option value = "4">three</option>
		   <option value = "5">four</option>
		 </select>

Em relação a BD posso adicionar os campos à BD inclusivé o -- SELECT --

A ideia é por exemplo quando estiver selecionado o -- SELECT -- dar uma mensagem do tipo seleciona a categoria.

É mais simples fazer um if onde mysql-query $row será comparado a -- SELECT -- e se for true dar mensagem de erro ou haverá outra maneira mais simples de o fazer.

Não tenho código feito neste PC mas mais tarde posso colocar um exemplo prático


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Nunca entendi se está correto, mas eu sempre fiz assim (desde que o HTML5 passou a ser suficientemente suportado):

<select class="requiredCheckbox" required>
<option value="" selected>-- SELECT--</option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
<option value="4">four</option>
</select>

Se não receber um inteiro neste, limito-me a rejeitar o formulário. Tão simples como isso. Não é preciso andar a ligar à BD e comparar valores... N sei de aonde é que veio essa tua ideia.

Não sei de aonde é que veio essa tua ideia de até considerares que é o conteúdo da opção que é enviado e não o valor (@value). É ao contrário.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
sEnte

Bem se calhar expliquei-me mail.

Isso em HTML5 está correcto, mas no meu caso eu tenho as <option> numa BD e depois populo através de um query que me vai buscar as diferentes categorias à BD

<select name="category">
 <?php
  foreach(get_categories() as $category){
 ?>
  <option value="<?php echo $category['id']; ?>"> <?php echo $category['name']; ?> </option>
 <?php
  }
 ?>
</select>

ou seja vou buscar as categorias dentro de BD. Por isso é que falei nessa trapalhada de andar a comparar valores.

Actualmente tenho 3 categorias "Uncategorised", "Categoria1" e "Categoria2".

A minha ideia era ter por defeito a -- SELECT -- mas caso do user se esquecesse de mudar de categoria ia dar um erro a dizer Por favor escolha uma categoria para publicar a mensagem

Editado por sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

@HappyHippyHippo

É o que parece

Mais uma situação em que quem pede "não sabe o que pede". Escreve que quer saber alhos mas pergunta bugalhos.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
sEnte

Eu não quero javascript/jquery nenhum. É PHP.

Na Base de dados tenho uma tabela de categorias, onde tem os campos cat_id e category

Como já disse antes o campo category tem 3 opções. "Uncategorised", "Categoria1" e "Categoria2" e quero juntar outra. " -- SELECT --", mas a select quero que seja a que é selecionada por defeito. Até aqui sem problemas.

Agora quero numa <option> ter essas categorias todas, mas quero que essa "-- SELECT --" seja nulo.tal como se fossemos a fazer a validação de um campo de inserção de dados.

A ideia é caso a categoria seja selecionada seja "-- SELECT --" dá erro caso contrário adiciona tudo como deve ser.

Será que se pode fazer assim?

if($category["name"] === "-- SELECT--"){
  echo 'Please choose a category';
}

Perguntei noutro forum e deram-me alguns exemplos mas queria saber quel a melhor maneira de fazer.

<select name="category">
   <option value="0">-Select-</option>
<?php
  foreach(get_categories() as $category){
?>
  <option value="<?php echo $category["id"]; ?>"> <?php echo $category["name"]; ?> </option>
<?php
}
?>
</select>

e depois comparar num if fazer algo do tipo $_POST["category"] == 0

Outra opção dada é meter o "-- SELECT -- " dentro de um array e depois usar o in_array e caso esteja dá erro

Editado por sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Perguntei noutro forum e deram-me alguns exemplos mas queria saber quel a melhor maneira de fazer.

Melhor opção entre as duas? Esta:

<select name="category">
   <option value="0">-Select-</option>
<?php
  foreach(get_categories() as $category){
?>
  <option value="<?php echo $category["id"]; ?>"> <?php echo $category["name"]; ?> </option>
<?php
}
?>
</select>

e depois comparar num if fazer algo do tipo $_POST["category"] == 0

Sem dúvida!

Eu acho que ainda há melhor mas essa já é boa.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
panickz

A forma mais simples que tens para fazer é usar jquery ou javascript..

<form onsubmit="check();">
<select id="id_select">
<option value="null">--SELECT--</option>
<option value="1">2</option>
</select>
<input type="submit">

Neste caso fazes onsubmit check() e tens de criar a função check.

function check(){
if($("id_select").val()=="null"){
alert("Deve escolher uma opção");
return false;
}else{
document.id_select.submit();
}
}

Algo deste genero.. ta uma mistura de jquery com javascript não é muito o meu forte. Acho que é a forma mais viavel do que ires verificar em php. Se tiver null ele não faz submit e manda um alerta senão não faz. Podes verificar em php mas a pagina tera sempre de fazer refresh.

Se queres mesmo fazer a verificaçao em php tens de usar um IF.

if($_POST["categoria"]=="null") { //por exemplo
//Aqui dentro estaria a query que nao vai correr porque esta null.
}else{
$warning = "Tem de escolher uma opção.";
// OU
echo ""Tem de escolher uma opção.""
}

Se tu tiveres a query na mesma pagina do formulario. Podes defenir um input type=hidden por exemplo com o nome action e value "query" depois o que fazes é que o formulario envia para a pagina onde se encontra caso a verificação falhe colocas a variavel "$warning" aonde quiseres no codigo e caso ela exista o warning aparece caso ele seja enviado não aparece. Terias de acrescentar outro IF:

if($_POST["action"]=="query"){
if($_POST["categoria"]=="null") { //por exemplo
//Aqui dentro estaria a query que nao vai correr porque esta null.
}else{
$warning = "Tem de escolher uma opção.";
// OU
echo ""Tem de escolher uma opção.""
}
}

Não sei se me fiz entender ou se é isto que pretendes mas ta ai. ;)

Editado por apocsantos
geshi

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.