Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>>
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...**>
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 */;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.>
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>';*/
?>

>
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 />';
}
>
2 horas atrás, gramosiri2 disse: