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

 

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros 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 */;

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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 />';
}

 

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 landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
×

Informação importante

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