Ir para conteúdo
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

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • 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.