selecione menu e PHP

0

Estou usando um menu para tentar obter dados em um banco de dados. Eu vi isso,

<select name="exam" id="exam" style="background-color: #FFDDF4">
   <option></option>
   <?php foreach($exams as $key=>$option):
      $selected = ($exam == $key) ? 'selected' : '';
      echo "<option value='$key' $selected>$option</option>";
   endforeach; ?>
</select>

Sem essa linha,

$selected = ($exam == $key) ? 'selected' : '';

é possível obter um valor escolhido no banco de dados? A variável $ exam é o nome real do elemento select?

Obrigado Shane

    
por Shane G 01.07.2015 / 10:48

1 resposta

0

Sim, é possível obter os dados no banco de dados - você pode deixar essa linha fora e ainda a enviará ao banco de dados.

A variável "exames" é uma estrutura de matriz contendo todas as opções para exibir na tela. Não é o nome do elemento selecionado. O elemento select é definido por name="exam" na primeira linha, ou seja, é "exam".

Eu não encontrei a linha em questão antes, mas é claramente definir o campo "selecionado" em uma opção específica. Este campo "selecionado" é então usado como padrão, mas outro exibindo-o como a opção padrão, não tem importância quando o formulário é realmente enviado.

Vamos dividir os elementos do seu código relevantes para uma consulta na Web:

O no início define que o campo é uma caixa de seleção. Os campos name, id e style são usados para formatar a aparência da página, portanto, não são relevantes para o envio de dados.

Isso define a opção suspensa no campo de campo como vazia inicialmente. Presumivelmente, isso é usado se alguém não tentou preencher o formulário antes.

   <?php foreach($exams as $key=>$option):
      $selected = ($exam == $key) ? 'selected' : '';
      echo "<option value='$key' $selected>$option</option>";
   endforeach; ?>

Aqui é onde fica interessante. Provavelmente, $ exams será uma matriz, então uma estrutura variável - abaixo seria um exemplo de uma estrutura possível, que eu usarei para minha resposta.

$exams['English']='English 101';
$exams['Maths']='Calculus';
$exams['Science']='Lab Experiments';

O "foreach" diz ao PHP para passar por cada elemento na matriz, definindo uma chave e um valor de opção.

Assim, a primeira vez que ele faz um loop (dado meu array) acima, a primeira vez que o loop é executado, $ key seria "English" e o valor seria "English 101". A segunda vez que $ key seria "Maths", o valor seria "Calculus" e assim por diante.

echo "<option value='$key' $selected>$option</option>";

escreve o código HTML, então, quando visto pelo navegador, ele se parecerá com Inglês 101 Cálculo Experiências de laboratório

Isso exibirá "Inglês 101", "Cálculo" e "Experiências de laboratório" no navegador, mas quando o formulário for enviado, ele publicará um valor de "Inglês", "Matemática" ou "Ciência", dependendo do o que foi selecionado.

o $ selecionado não seria usado na primeira vez que a página é exibida, no entanto, se a página foi visualizada e está sendo exibida de volta para o usuário - por exemplo, se foi feita alguma verificação de erro e encontrada erros, mas quer mostrar o formulário como ele recebeu - então o $ selecionado teria o valor "selecionado" para a opção que o usuário selecionou anteriormente, caso contrário, seria em branco. Isso diria ao navegador para mostrar o campo apropriado.

O endforeach presumivelmente termina a iteração. (A sintaxe usada aqui é diferente do que é típico - normalmente você usaria chaves).

    
por 01.07.2015 / 11:40

Tags