SELECT/LIST PHP PDO
Boa tarde pessoal, estou fazendo um cadastro simples em php, só que gostaria de uma ajuda para que ao invés de utilizar um input e ter que digitar toda hora no o nome de um cliente (que é o exemplo que estou utilizando) ele trazer as informações em um select/list do banco de dados.
segue o código que estou utilizando:
No caso iria fazer um select em outra tabela (Clientes) e puxar a informação para eu inserir na tabela chamados onde os campos são
id_cli (pk)
nome_cli var (50)
se alguém puder me ajudar a fazer esse select/list em pdo eu agradeço muito.
segue o código que estou utilizando:
<?php
require 'database.php';
if ( !empty($_POST)) {
// keep track validation errors
$cliError = null;
// keep track post values
$cli = $_POST['cli_cham'];
// validate input
$valid = true;
if (empty($cli)) {
$cliError = 'Por favor insira o cliente';
$valid = false;
}
// insert data
if ($valid) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO chamados (cli_cham) values(?)";
$q = $pdo->prepare($sql);
$q->execute(array($cli));
Database::disconnect();
header("Location: index.php");
}
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="span10 offset1">
<div class="row">
<h3>Inclusão</h3>
</div>
<form class="form-horizontal" action="chamado.php" method="post">
<div class="control-group <?php echo !empty($cliError)?'error':'';?>">
<label class="control-label">Cliente</label>
<div class="controls">
<input name="cli_cham" type="text" placeholder="cliente" value="<?php echo !empty($cli)?$cli:'';?>">
<?php if (!empty($cliError)): ?>
<span class="help-inline"><?php echo $cliError;?></span>
<?php endif; ?>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-success">Abrir Chamado</button>
<a class="btn" href="index.php">Voltar</a>
</div>
</form>
</div>
</div> <!-- /container -->
</body>
</html>
No caso iria fazer um select em outra tabela (Clientes) e puxar a informação para eu inserir na tabela chamados onde os campos são
id_cli (pk)
nome_cli var (50)
se alguém puder me ajudar a fazer esse select/list em pdo eu agradeço muito.
João Vitor
Curtidas 0
Mais Respostas
Lucas Burg
25/08/2014
nesse caso voce precisa de um auto complete com os clientes de sua tabela "clientes", usa o autocomplete do jquery ui.
GOSTEI 0
Lucas Burg
25/08/2014
nesse caso voce precisa de um auto complete com os clientes de sua tabela "clientes", usa o autocomplete do jquery ui.
GOSTEI 0
Ronaldo Lanhellas
25/08/2014
Este é o componente que você precisa: http://jqueryui.com/autocomplete/
GOSTEI 0
João Vitor
25/08/2014
Eu consegui resolver de uma maneira bem mais simples no lugar da div do input coloquei o select e dentro dele eu faço uma select no banco e depois um foreach para listar as opção dentro de uma variável no option.
<div class="controls">
<select name="pri_cham" id="pri_cham">
<?php
$pdo = Database::connect();
$sql = "SELECT cod_pri,nome_pri FROM prioridade ORDER BY id_pri";
foreach ($pdo->query($sql) as $row) {
echo "<option value='".$row['cod_pri']."'>".$row['nome_pri']."</option>";
}
Database::disconnect();
?>
</select>
<?php if (!empty($prioError)): ?>
<span class="help-inline"><?php echo $prioError;?></span>
<?php endif; ?>
</div>
GOSTEI 0
João Vitor
25/08/2014
Eu consegui resolver de uma maneira bem mais simples no lugar da div do input coloquei o select e dentro dele eu faço uma select no banco e depois um foreach para listar as opção dentro de uma variável no option.
<div class="controls">
<select name="pri_cham" id="pri_cham">
<?php
$pdo = Database::connect();
$sql = "SELECT cod_pri,nome_pri FROM prioridade ORDER BY id_pri";
foreach ($pdo->query($sql) as $row) {
echo "<option value='".$row['cod_pri']."'>".$row['nome_pri']."</option>";
}
Database::disconnect();
?>
</select>
<?php if (!empty($prioError)): ?>
<span class="help-inline"><?php echo $prioError;?></span>
<?php endif; ?>
</div>
GOSTEI 0
João Vitor
25/08/2014
....
GOSTEI 0
Ronaldo Lanhellas
25/08/2014
Eu consegui resolver de uma maneira bem mais simples no lugar da div do input coloquei o select e dentro dele eu faço uma select no banco e depois um foreach para listar as opção dentro de uma variável no option.
<div class="controls">
<select name="pri_cham" id="pri_cham">
<?php
$pdo = Database::connect();
$sql = "SELECT cod_pri,nome_pri FROM prioridade ORDER BY id_pri";
foreach ($pdo->query($sql) as $row) {
echo "<option value='".$row['cod_pri']."'>".$row['nome_pri']."</option>";
}
Database::disconnect();
?>
</select>
<?php if (!empty($prioError)): ?>
<span class="help-inline"><?php echo $prioError;?></span>
<?php endif; ?>
</div>
Mas o seu código não tem o "auto-complete" apenas mostra os valores do SELECT. O componente auto-complete do jquery lhe possibilita maiores recursos, mas se você precisa apenas mostrar os valores sem muita "frescura", então de fato a sua solução é a melhor.
GOSTEI 0