Jump to content
gramosiri2

Editar tabela com valor correspondente <select>

Recommended Posts

Gente me da um help, tenho um formulário para editar os dados da tabela, está funcionando normalmente. Porém ao carregar a pagina está buscando o último nome da tabela.

Gostaria de saber um jeito de quando carregar a página, já venha selecionado o valor correspondente ao dado daquela tabela.

 

Por exemplo, cadastrei 3 cargos: Auxiliar, Adm e Técnico. Dai cadastrei um funcionário com o cargo de Adm, quando carrega a pagina de editar ele já vem selecionado o ultimo valor, no caso Técnico e não o de Adm...

 

<label class="badge badge-secondary">Cargo:</label><br>
  <select class="form-control" name="cargo_id">
    <?php 
    while($linha = mysqli_fetch_array($consulta_cargo)){
      echo '<option value="'.$linha['id_cargo'].'" selected>'.$linha['nome_cargo'].'</option>';
    }
    ?>
</select><br><br>

 

Share this post


Link to post
Share on other sites
2 horas atrás, gramosiri2 disse:

<label class="badge badge-secondary">Cargo:</label><br> <select class="form-control" name="cargo_id"> <?php while($linha = mysqli_fetch_array($consulta_cargo)){ echo '<option value="'.$linha['id_cargo'].'" selected>'.$linha['nome_cargo'].'</option>'; } ?> </select><br><br>

 

Boa noite 

Eu uso sempre assim

<div class="col-md-6">
	<div class="form-group">
<label>Cargos:</label>
	<select class="form-control" name="id_categoria">
<?php $Query = DBRead('cargos','*',"WHERE status = 'S' AND id order by nome ASC"); if (is_array($Query)) 
{ foreach ($Query as $c_cargos) { ?>
	<option value="<?php echo $c_cargos['id']; ?>" <?php Selected($dados['id_categoria'], $c_cargos['id']); ?>><?php echo $c_cargos['nome']; ?></option>
									            	
<?php } } ?>
	</select>
	</div>
</div>

Ou tente desta forma

O que muda é apenas a forma da programação

<div class="col-md-6">
	<div class="form-group">
<label>Cargos:</label>
	<select class="form-control" name="cargo_id">
     <?php $con = new mysqli("localhost", "root", "senha","bancodedados" ) or die (mysql_error());
$query = $con->query("SELECT * FROM cargos");                                            
  while($c_cargos = $query->fetch_array()) {
	                                   ?>
<option value="<?php echo $c_cargos['id']; ?>" <?php Selected($dados['cargo_id'], $c_cargos['id']); ?>><?php echo $c_cargos['nome']; ?></option>
									            	
<?php } ?>
	</select>
	</div>
</div>

Espero ter lhe ajudado...

Share this post


Link to post
Share on other sites
16 horas atrás, Jack Oliveira disse:

 

Boa noite 

Eu uso sempre assim


<div class="col-md-6">
	<div class="form-group">
<label>Cargos:</label>
	<select class="form-control" name="id_categoria">
<?php $Query = DBRead('cargos','*',"WHERE status = 'S' AND id order by nome ASC"); if (is_array($Query)) 
{ foreach ($Query as $c_cargos) { ?>
	<option value="<?php echo $c_cargos['id']; ?>" <?php Selected($dados['id_categoria'], $c_cargos['id']); ?>><?php echo $c_cargos['nome']; ?></option>
									            	
<?php } } ?>
	</select>
	</div>
</div>

Ou tente desta forma

O que muda é apenas a forma da programação


<div class="col-md-6">
	<div class="form-group">
<label>Cargos:</label>
	<select class="form-control" name="cargo_id">
     <?php $con = new mysqli("localhost", "root", "senha","bancodedados" ) or die (mysql_error());
$query = $con->query("SELECT * FROM cargos");                                            
  while($c_cargos = $query->fetch_array()) {
	                                   ?>
<option value="<?php echo $c_cargos['id']; ?>" <?php Selected($dados['cargo_id'], $c_cargos['id']); ?>><?php echo $c_cargos['nome']; ?></option>
									            	
<?php } ?>
	</select>
	</div>
</div>

Espero ter lhe ajudado...

 

@Jack Oliveira fiz os testes aqui, porém retornou esse erro de sintaxe:

 

Parse error: syntax error, unexpected '$c_cargos' (T_VARIABLE), expecting ',' or ';' in C:\xampp\htdocs\lista_frigo\views\inserir_func.php on line 95

 

OBS*: Usei o segundo código que postou...

Share this post


Link to post
Share on other sites
3 horas atrás, gramosiri2 disse:

 

@Jack Oliveira fiz os testes aqui, porém retornou esse erro de sintaxe:

 

Parse error: syntax error, unexpected '$c_cargos' (T_VARIABLE), expecting ',' or ';' in C:\xampp\htdocs\lista_frigo\views\inserir_func.php on line 95

 

OBS*: Usei o segundo código que postou...

Veja este aqui... qualquer coisa poste seu código completo e o Banco de dados

<?php
	$servidor = "localhost";
	$usuario = "root";
	$senha = "";
	$dbname = "teste";
	
	//Criar a conexao
	$conn = mysqli_connect($servidor, $usuario, $senha, $dbname);
	
	if(!$conn){
		die("Falha na conexao: " . mysqli_connect_error());
	}else{
		//echo "Conexao realizada com sucesso";
	}	
	
?>

Cadastro.php

 

<?php
	include_once("conexao.php");
?>
<!DOCTYPE html>
<html>
	<head>
		<title> Cadastro</title>
		<meta charset="utf-8">
	</head>
	</body>
		<form method="POST" action="processa_cad_usuario.php">
			Nome: <input type="text" name="txt_nome_usuario" placeholder="Digite o nome completo"><br><br>
			E-mail: <input type="email" name="txt_email_usuario" placeholder="Digite o Email"><br><br>
			Senha: <input type="password" name="txt_senha_usuario" placeholder="Digite a senha"><br><br>
			Níveis de Acesso: 
				<select name="select_niveis_acesso">
					<option>Selecione</option>
					<?php
						$result_cargos = "SELECT * FROM cargos";
						$resultado_cargos = mysqli_query($conn, $result_cargos);
						while($row_cargos = mysqli_fetch_assoc($resultado_cargos)){ ?>
							<option value="<?php echo $row_cargos['id']; ?>"><?php echo $row_cargos['nome']; ?></option> <?php
						}
					?>
				</select><br><br>
			<input type="submit" value="Cadastrar">
		</form>
	</body>
</html>

cadastros_usuario.php

 

<?php
	include_once("conexao.php");
	$nome_usuario = $_POST['txt_nome_usuario'];
	$txt_email_usuario = $_POST['txt_email_usuario'];
	$txt_senha_usuario = $_POST['txt_senha_usuario'];
	$select_niveis_acesso = $_POST['select_niveis_acesso'];
	
	//echo "$nome_usuario - $email_usuario";
	
	$result_usuario = "INSERT INTO usuarios(nome, email, senha, niveis_acesso_id, created) VALUES ('$nome_usuario','$txt_email_usuario', '$txt_senha_usuario', '$select_niveis_acesso', NOW())";
	$resultado_usuario = mysqli_query($conn, $result_usuario);
	
	if(mysqli_affected_rows($conn) != 0){
				echo "
					<META HTTP-EQUIV=REFRESH CONTENT = '0;URL=http://localhost/usuario/cadastro.php'>
					<script type=\"text/javascript\">
						alert(\"Usuario cadastrado com Sucesso.\");
					</script>
				";	
			}else{
				echo "
					<META HTTP-EQUIV=REFRESH CONTENT = '0;URL=http://localhost/usuario/cadastro.php'>
					<script type=\"text/javascript\">
						alert(\"O Usuario não foi cadastrado com Sucesso.\");
					</script>
				";	
			}
?>

Banco de dados

-- phpMyAdmin SQL Dump
-- version 4.1.14
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Mar 31, 2016 at 04:09 AM
-- Server version: 5.6.17
-- PHP Version: 5.5.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `teste`
--

-- --------------------------------------------------------

--
-- Table structure for table `cargos`
--

CREATE TABLE IF NOT EXISTS `cargos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(50) NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Dumping data for table `cargos`
--

INSERT INTO `cargos` (`id`, `nome`, `created`, `modified`) VALUES
(1, 'Administrador', '2016-03-25 00:00:00', NULL),
(2, 'Colaborador', '2016-03-25 00:00:00', NULL),
(3, 'Cliente', '2016-03-25 00:00:00', '2016-03-27 20:26:18'),
(4, 'Fornecedor', '2016-03-27 20:12:03', '2016-03-27 20:18:11');

-- --------------------------------------------------------

--
-- Table structure for table `usuarios`
--

CREATE TABLE IF NOT EXISTS `usuarios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(240) NOT NULL,
  `email` varchar(240) NOT NULL,
  `senha` varchar(240) NOT NULL,
  `niveis_acesso_id` int(11) NOT NULL,
  `created` datetime NOT NULL,
  `modified` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Dumping data for table `usuarios`
--

INSERT INTO `usuarios` (`id`, `nome`, `email`, `senha`, `niveis_acesso_id`, `created`, `modified`) VALUES
(1, 'Admin', 'admin@teste.com.br', '202cb962ac59075b964b07152d234b70', 1, '2016-03-25 01:01:01', NULL),
(2, 'Teste', 'teste@teste.com.br', '202cb962ac59075b964b07152d234b70', 1, '2016-03-25 02:02:02', '2016-03-27 19:22:38'),
(3, 'Demo', 'demo@teste.com.br', '202cb962ac59075b964b07152d234b70', 3, '2016-03-25 03:03:33', NULL),
(4, 'Demo1', 'demo1@teste.com.br', '202cb962ac59075b964b07152d234b70', 1, '2016-03-25 22:50:38', NULL);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

Share this post


Link to post
Share on other sites

Toda vez que o loop faz a volta ele escreve a opção com os dados de acordo com os valores obtidos naquela volta.

Então é simples, bastando fazer uma comparação se o que vai ser escrito na volta atual condiz com o valor que você queira que seja selecionado.

echo "<option value=\"{$linha['id_cargo']}\" ". ($linha['id_cargo'] == $comparar ? 'selected' : null) .">{$linha['nome_cargo']}</option>";

$linha['id_cargo'] == $comparar

Ou seja se na volta atual id_cargo for igual ao $comparar irá escrever a atual opção como selecionado.

Essa variável $comparar você terá que definir ela fora do laço de repetição sendo seu valor o mesmo que será transcrito como selecionado.

Share this post


Link to post
Share on other sites
1 hora atrás, Omar~ disse:

Toda vez que o loop faz a volta ele escreve a opção com os dados de acordo com os valores obtidos naquela volta.

Então é simples, bastando fazer uma comparação se o que vai ser escrito na volta atual condiz com o valor que você queira que seja selecionado.


echo "<option value=\"{$linha['id_cargo']}\" ". ($linha['id_cargo'] == $comparar ? 'selected' : null) .">{$linha['nome_cargo']}</option>";

$linha['id_cargo'] == $comparar

Ou seja se na volta atual id_cargo for igual ao $comparar irá escrever a atual opção como selecionado.

Essa variável $comparar você terá que definir ela fora do laço de repetição sendo seu valor o mesmo que será transcrito como selecionado.

@Omar~ no caso a variavel comparar vai receber os valores de [cargo_id] que faz relacionamento com o id_cargo?

 

Fiz assim mas não funcionou...

    <?php 
    $comprar = mysqli_fetch_array($consulta_func);
    while($linha = mysqli_fetch_array($consulta_cargo)){
      /*echo '<option name="cargo_id" id="cargo_id">'.$linha['nome_cargo'].'</option>';*/

      echo "<option value=\"{$linha['id_cargo']}\" ". ($linha['id_cargo'] == $comparar['cargo_id'] ? 'selected' : null) .">{$linha['nome_cargo']}</option>";
    }
    /*echo '<option></option>';*/
    ?>

 

Sem título2.png

Sem título.png

Share this post


Link to post
Share on other sites
7 horas atrás, gramosiri2 disse:

no caso a variavel comparar vai receber os valores de [cargo_id] que faz relacionamento com o id_cargo?

Sim... Digamos que o usuário X tem seu ID 3, logo a comparação será feita com isso.

 

Eu sugiro que você armazene esse ID do usuário em uma sessão durante o login.

Então ao acessar essa página você faz a comparação dos dados no loop "no caso id_cargo" é o mesmo da sessão daquele usuário.

 

Seria o mesmo que um debug desses

$comparar = 3;
$voltas_no_loop = 0;
while ($linha = mysqli_fetch_array($consulta_cargo)) {
    $voltas_no_loop++;
    echo 'Volta atual: ' . $voltas_no_loop . ' / ' . ($linha['id_cargo'] == $comparar ? "Sim esse é o ID: {$comparar}" : "Não é o id: {$comparar}") . '<br />';
}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Leandro Volanick
      Boa tarde pessoal.
       
      Gostaria de uma ajuda em uma consulta sql, onde quero agrupar os todos produtos comprados pelo mesmo CPF, dentro de uma array. 
       
      Segue o que estou usando:
      $data=mysqli_query($mysqli, "SELECT xml.id, xml.xProd as produto, prod.id as iddoproduto, GROUP_CONCAT( prod.xProd ) FROM produtos AS prod LEFT JOIN xml as xml ON xml.xProd = prod.xProd GROUP BY xml.CPFdest"); while($info=mysqli_fetch_array($data)) echo '['.$info['iddoproduto'].'],'; No momento, o codigo está trazendo apenas 1 produto, quero que ele printe todos produtos que o CPFdest já comprou.
       
       
    • By Vítor Gonçalves
      Boa Tarde, gostaria se alguém poderia me ajudar!
      tenho um sistema desktop que é validado a cada 6 meses, quando termina essa validade ele pedi para renovar!
      - desejo criar um script em PHP  com a seguinte função:
      -pegar a senha gerada no sistema e enviar para o servidor web( hostinger server-sql) via php
      - o servidor gera e mostra uma contra senha  para ser copiada de volta.
      - ao colar a contra senha no campo "nova licença" no meu programa, ele compara com a que tá no banco de dados na hostinger se bate a mesma e libera o uso.
       
      - já vi isso em outro sistema mas não tive acesso aos scripts para ver como funciona.
    • By Anonicah
      Olá preciso de ajuda com esse exercício. Montei até a parte de formulário + validação de javascrip no dreamweaver mas buguei com o resto. O que eu fiz:
       

      <html>
      <head>
      <title> Formulário CPF validado com Java Script </title>
          
          <script language="javascript" type="text/javascript">
      function validar() {
      var cpf = form1.cpf.value;
          
      if (cpf == "") {
      alert('Preencha o campo com seu cpf');
      form1.cpf.focus();
      return false;
      }
          
      }
      </script>
          
          
      </head>
      <body>
      <form name="form1" action="enviar.php" method="post">
      CPF:
      <input name="cpf" type="text"><br /><br />
      <input type="submit"  onclick="return validar()">
      </form>
      </body>
      </html>
       
       
      EXERCÍCIO
      Criar um formulário simples em html com um único campo CPF;
      Fazer uma validação em javascript antes de fazer o post;
      Consumir o WS https://bi.vidaclass.com.br/utils para consultar informações do CPF enviado pelo form;
      Do retorno obtido exibir na tela:
      Nome, email, telefone
      Se tem compra em saude: Sim | Não
      Quantas compras: (5) ex.
      Se tem farma: Sim | Não
      Se tem dependente: Sim | Não
      Qtd. de dependentes: (2) ex.

      Obtem o token para consumir os endpoints;
      https://bi.vidaclass.com.br/auth
      {
          "company_id": 1,
          "username": "webmaster@vidaclass.com.br",
          "password": "Teste20170705"
      }
      Endpoint para consultar o CPF
      https://bi.vidaclass.com.br/utils
      {
          "action": 4,
          "key": {
              "cpf": 25383193820
          }
      }
    • By Luciano Marques
      Então pessoal é o seguinte: Estou tendo problemas para impedir acesso simultâneo no meu projeto. Foi depois de muito pesquisar que vim aqui abrir esse tópico. 
      Enfim, eu até consegui colocar uma teoria em prática que era a de criar uma coluna na tabela `usuarios` com 1 para ativo, e 2 para  inativo. e depois coloquei no topo a condição IF para se 1 já preenchido não permite o login. até ai de boa. o problema vem se o usuário não desloga só fecha a janela. a coluna ainda permanece como ativa 1. mesmo expirando o login, não ocorre o update na base de dados. Se alguém puder me ajudar nessa, preciso concluir esse trabalho ainda essa semana. desde já agradeço 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.