Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Flaviaac

Vir por padrão o nome cadastrado no campo select não o id

Recommended Posts

Boa tarde pessoal,

Por favor, alguém saberia me ajudar!

 

O que eu quero é o seguinte,

Quando o usuário clicar no botão editar na página "listar_usuario.php" será direcionado para "editar_usuario.php", e nos campos, por padrão virão com as informações cadastradas no BD.

O campo de seleção (local) busca as opções de outra tabela do banco. O nome dos locais estão aparecendo normalmente para selecionar, mas quero que por padrão ele busque o nome do BD e não o id da tabela como está agora.

Tentei de várias formas e não estou conseguindo.

 

Obrigada!

 

 

lista.thumb.png.dd1ba6383dae632e02b7886319c99fa5.png

 

36836804_telalocal.png.72b864406926c2a5e4b0f6acd16f98a4.png

 

arquivo editar_usuario.php:

<form action="" method="post">
  <div class="form-row">

    <?php                        
    $usuario = $_GET['usuario'];                           
    $nome = $_GET['nome'];                                                 
    ?>

    <div class="form-group col-md-6">                        
      <label><span class="text-danger"></span> Usuário</label>
      <input name="usuario" type="text" class="form-control" value="<?php echo $usuario; ?>">
    </div>                    
    <div class="form-group col-md-6">                        
      <label><span class="text-danger"></span> Nome</label>
      <input name="nome" type="text" class="form-control" value="<?php echo $nome; ?>">
    </div>                   
    <!-------------select local--------------->                    
    <?php          
    $sql_dropbox = "SELECT id, sigla FROM local";
    $result_dropbox = $conn->query($sql_dropbox);
    $local_dropbox = $_GET['local_id'];
    $id = $_GET['id'];
    ?>
    <div class="form-row">                      
      <div class="form-group col-md-4">
        <label>Local</label>
        <select name="local" class="form-control">
          <option selected><?php echo $local_dropbox; ?></option>
          <?php
          while($row = $result_dropbox->fetch_assoc()){                                  
            echo "<option value=".$row['id'].">".$row['sigla']."</option>";
          }
          ?>                            
        </select>
      </div> 
    </div>  

    <div class="form-row">                      
      <div class="form-group col-md-4">
        <button type="submit" class="btn btn-primary" name="editar_u">Editar</button>
        <a href="listar_usuario.php" class="btn btn-primary" name="voltar">Voltar</a> 
      </div>
    </div>
    </form>                   

  <?php  
  $usuario_u = $_POST['usuario'];                   
  $nome_u = $_POST['nome'];                   
  $local_u = $_POST['local'];                      
  $id_u = $_GET['id'];

  if(isset($_POST['editar_u'])){     
    if($usuario_u !='' || $nome_u !='' || $local_u !=''){                                    
      $sql = "UPDATE usuario SET usuario='$usuario_u', nome='$nome_u', local_id=$local_u WHERE id=$id_u";           
      $result = mysqli_query($conn, $sql); 

      if($conn->query($sql) === TRUE){                                                             
        echo "<span class='alert alert-success'> Usuário editado com sucesso</span>";                              
      }else{                                                            
        echo "<span class='alert alert-danger'> Usuário não foi editado</span>";
      } 
    }
  }                                           
  $conn->close();
  ?>

  </div>
</div>

 

Arquivo listar_usuario:

<?php                
        $sql = "SELECT usuario.id, usuario.usuario, usuario.nome, usuario.local_id, local.sigla, usuario.data_criacao 
                FROM usuario
                INNER JOIN local 
                ON usuario.local_id = local.id";
        $result = $conn->query($sql);                         
      ?>

      <div class="table-responsive">
        <table class="table table-bordered table-hover table-striped">
        <thead>
          <tr>
            <th>ID</th>
            <th>Usuário</th>
            <th>Nome</th>                
            <th>Local</th> 
            <th>Data de Cadastro</th>  
            <th>Ações</th>                    
          </tr>
        </thead>                      
        <?php
          if ($result->num_rows > 0) {
          echo "<tbody>";                             
              while($row = $result->fetch_assoc()) {           
                  echo "<tr>";  
                      echo "<td>" .$row['id'] ."</td>";  
                      echo "<td>" .$row['usuario']. "</td>";  
                      echo "<td>" .$row['nome']. "</td>";                       
                      echo "<td>" .$row['sigla']. "</td>"; 
                      echo "<td>" .$row['data_criacao']. "</td>"; 
                      echo "<td>";                             
                          echo "<a href=\"editar_usuario.php?usuario={$row['usuario']}&nome={$row['nome']}&id={$row['id']}&local_id={$row['local_id']}\" class=\"btn btn-outline-primary\" title=\"editar\">Editar</a>&nbsp;&nbsp;";  
                          echo "<a href=\"excluir_usuario.php?id={$row['id']}\" class=\"btn btn-outline-primary\" title=\"apagar\">Apagar</a>";                          
                      echo "</td>";
                  echo "</tr>";    
              }                      
          } else {
              echo "0 resultados";
          }
        ?>                             
        </tbody>
        </table> 

        <?php  
          $conn->close();
        ?>

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Flaviaac no campo LOCAL você não quer que apareça o número 2 como na imagem e sim o nome do Banco de Dados (DB_TESTE) por exemplo?

 

Isso só é possível de duas maneiras, ou você faz um DE/PARA na programação ou você precisa ter o nome do banco gravado em alguma tabela para obter o nome através de um select.

 

O DE/PARA ficaria assim.

while($row = $result_dropbox->fetch_assoc()){
    if ($row['sigla'] == 1){
        echo "<option value=".$row['id'].">DB_TESTE</option>";
    }
    if ($row['sigla'] == 2){
        echo "<option value=".$row['id'].">DB_USUARIO</option>";
    }
    if ($row['sigla'] == 3){
        echo "<option value=".$row['id'].">DB_ID</option>";
    }
	//...
}

O que fica estranho, eu prefiro gerar uma tabela com os nomes que quero junto com o ID e ai sim amarrar no SELECT para obter o nome.

 

Digamos que eu tenha essa tabela que mencionei.

 

TABELA_NOME

ID                NOME_DB

1                  DB_TESTE

2                  DB_NOMES

3                 DB_ID

4                 DB_TABELAS

 

Então meu select ficaria assim:

$sql_dropbox = "SELECT id, sigla, nome_db FROM local a inner join tabela_nome b where a.sigla = b.id"; <!-- Inner Join para se obter o nome do DB gravado em uma tabela onde a SIGLA da tabela LOCAL (que acredito ser 1 ou 2, no exemplo da imagem IGUAL a 2) é igual ao ID da tabela_nome, então pego o nome no lugar da SIGLA para exibir -->
<select name="local" class="form-control">
    <?php echo"<option selected> ".$local_dropbox; ." </option>";
    while($row = $result_dropbox->fetch_assoc()){                                  
        echo "<option value=".$row['id'].">".$row['nome_db']."</option>";
    } ?>
</select>

Fora esses dois exemplos eu não conheço nenhum outro meio.

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por xRicardox
      Galera, boa tarde.
       
      Procurei algo no fórum porém não consegui chegar a uma conclusão sobre a forma de solucionar a minha necessidade.
       
      Estou desenvolvendo um sistema em PHP onde em um dos formulários html eu tenho dois campos <select> preenchidos por um foreach de um de um select mysql. O primeiro campo é referente ao cliente, onde deve ser escolher o cliente. No segundo campo temos os contratos e para isso tenho que limitar os contratos que retorna no select que realizo de acordo com o id do cliente escolhido no primeiro campo <select>.
       
       
       
       

       
       
      Andei procurando aqui no fórum e encontrei alguns parecidos a esta necessidade, mas não relacionado a select a banco. Alguém poderia me dar uma auxilio? Seria com Jquery? Como devo proceder?
       
       
      Obs: Releva alguns erros nas boas práticas da linguagem, estou iniciando neste mundo kkk.
       
       
      Att
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.