Ir ao conteúdo
  • Cadastre-se

PHP Como passar valor de select para variável PHP


Posts recomendados

Boas galera

Eu tenho um formulário de marcar faltas a alunos e tenho dois selects (um para escolher a turma e outro para escolher o aluno).

Os dois vão buscar as opções à BD.

como eu posso fazer uma espécie de filtragem entre selects que, ao escolher uma turma por ex, me apareça só os alunos dessa respetiva turma.

Eu queria que desse para armazenar o valor selecionado no SELECT e depois pudesse colocar o valor na query do género: SELECT cod_aluno FROM aluno WHERE turma = '$valor_do_select_acima';

 

<select class="combo" size=1 name="Turma" id="Turma">
<option value=""></option>
<?php 

$ligacao = new mysqli("localhost", "root", "", "escola");

$ligacao->set_charset("utf8");

       $result = "SELECT DISTINCT cod_turma FROM aluno";
       $resultado = mysqli_query($ligacao, $result);

       while($row = mysqli_fetch_assoc($resultado)) {
         echo '<option value="'.$row['cod_turma'].'"> '.$row['cod_turma'].' </option>';
       }
    ?>
    
</select>
<br></td></tr><tr>
               
<td><b>Aluno:</td>
<td><select class="combo" size=1 name="Aluno" id="Aluno">
<option value=""></option>
    <?php 

$ligacao = new mysqli("localhost", "root", "", "escola");

       $result = "SELECT DISTINCT cod_aluno, nome FROM aluno";
       $resultado = mysqli_query($ligacao, $result);

       while($row = mysqli_fetch_assoc($resultado)) {
         echo '<option value="'.$row['cod_aluno'].'"> '.$row['nome'].' </option>';
       }
    ?>
</select>
Link para o comentário
Compartilhar em outros sites

Olá!
Segue sugestão:
https://replit.com/@washalbano/Select-Fill-Another#index.html

(infelizmente não posso passar o projeto zipado pra facilitar já baixar a estrutura prontinha e testar)
Pelo menos no replit(não dá pra testar) você vai poder ver a estrutura de pastas e arquivos, mas acredito que terá de copiar um a um.

 

image.png.573b05b6fe304e6faa6a8022031ea16c.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@washalbano Obrigado pela ajuda, eu tentei copiar o código e alterar em certas coisas, mas sinceramente, não consigo entender como posso colocar a funcionar.

 

Coloquei os scripts src no form e fiz as querys mas não mudou nada

@washalbano Index.PHP

 <form>
    <div class="row">
      <div class="col-md-4">
        <label for="turmas">Turma</label>
        <select class="form-select" id="turma">
          <option selected>Selecione uma turma</option>
        </select>
      </div>
      <div class="col-md-4">
        <label for="alunos">Aluno</label>
        <select class="form-select" id="aluno">
          <option selected>Selecione uma turma</option>
        </select></div>
    </div>
  </form>
  </div>
<script src="js/app.js"></script>

 

app.JS

const selectTurmas = document.querySelector('#turma')
const selectAlunos = document.querySelector('#aluno')

/**
 * FETCH JSON
 * Função que recebe os dados em json da API(que pode ser em php)
 * @param url
 * @param method
 * @returns {Promise<any>}
 */
const fetchJson = async (url, data, method = 'POST') => {
    // faz o request
    const request = await fetch(url, {
        method: method, body: data
    })

    const response = await request.json()

    return response
}

const feedTurmas = async () => {

    const turmasData = await fetchJson('get-turmas.php')
    for (const {cod_turma} of turmasData) {

        const option = document.createElement('option')
        option.value = cod_turma
        option.text = cod_turma
        selectTurmas.append(option)
    }
}

const feedAlunos = async (fk_turma) => {
    const formData = new FormData();
    formData.append('fk_turma', fk_turma)
    selectAlunos.innerHTML = '<option>Carregando...</option>';

    const alunosData = await fetchJson('get-alunos.php', formData)

    selectAlunos.innerHTML = ''
    for (const {cod_aluno, nome} of alunosData) {

        const option = document.createElement('option')
        option.value = cod_aluno
        option.text = nome
        selectAlunos.append(option)
    }
}

feedTurmas();

selectTurmas.addEventListener('change', () => {
    feedAlunos(selectTurmas.value)
})

 

get-alunos.PHP

<?php
  if (isset($_POST['fk_turma'])) {
    // trate/sanitize as variáveis que for usar
    $r = $_POST;

    // conecta ao database
    require 'connect.php';

    // define a query de busca
    $query = 'select cod_aluno, nome from alunos where fk_turma = ' . $r['fk_turma'];


    // executa a query e guarda o resultado em $result
    $result = $sqli->query($query);
// se houver alguma falha
    if ($sqli->error) {
      // exibe mensagem:
      die('<p class="error">Falha na consulta: ' . $sqli->error . '</p>');
    } else if ($result->num_rows) {
      // se não houve erro e há algum resultado
      $data = $result->fetch_all(MYSQLI_ASSOC);

      die(json_encode($data));
    } else {
      die(json_encode([['cod_aluno' => null, 'nome' => 'Nenhum aluno encontrado']]));
    }
  }

 

get-turmas.PHP

<?php
  // conecta ao database
  require 'connect.php';

  // define a query de busca
  $query = 'select cod_turma from alunos';

  // executa a query e guarda o resultado em $result
  $result = $sqli->query($query);
// se houver alguma falha
  if ($sqli->error) {
    // exibe mensagem:
    die('<p class="error">Falha na consulta: ' . $sqli->error . '</p>');
  } else if ($result->num_rows) {
    // se não houve erro e há algum resultado
    $data = $result->fetch_all(MYSQLI_ASSOC);

    die(json_encode($data));
  }

 

 

connect.PHP

<?php

// variáveis para conexão com banco de dados
  $host     = 'localhost';
  $user     = 'root';
  $password = '';
  $database = 'escola';

// estabelecer conexão com o mysql
  $sqli = $conn = new mysqli($host, $user, $password);

// verificar se houve erro na conexão
  if ($sqli->connect_error) {
    // se houve erro, mostra erro na tela
    die("<p><b>Erro!</b> Falha na conexão:<br>$sqli->connect_error</p>");
  }
// alterar o tipo de codificação da conexão com o banco de dados,  para utf8
  if (!$sqli->set_charset('utf8')) {
    die("<p>O charset não é utf8: $sqli->error</p>");
  }

// se não abrir o banco de dados para trabalhar
  if (!$sqli->select_db($database)) {
    die("<p class='error'><b>Erro!</b> Não foi possível abrir o banco de dados: <b>$database</b><br>$sqli->error</p>");
  }

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!