Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => -1
            [id] => 490403
            [titulo] => SELECT/LIST PHP PDO
            [dataCadastro] => DateTime Object
                (
                    [date] => 2014-08-27 18:56:01
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 244531
            [status] => A
            [isExample] => 
            [NomeUsuario] => Ronaldo Lanhellas
            [Apelido] => 
            [Foto] => 244531_20150129162200.jpg
            [Conteudo] => Este é o componente que você precisa: http://jqueryui.com/autocomplete/
        )

)

SELECT/LIST PHP PDO

PHP
João Vitor
   - 25 ago 2014

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:
#Código
<?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.

Burg
   - 27 ago 2014

nesse caso voce precisa de um auto complete com os clientes de sua tabela "clientes", usa o autocomplete do jquery ui.

Burg
   - 27 ago 2014

nesse caso voce precisa de um auto complete com os clientes de sua tabela "clientes", usa o autocomplete do jquery ui.

Ronaldo Lanhellas
   - 27 ago 2014

Este é o componente que você precisa: http://jqueryui.com/autocomplete/

João Vitor
   - 28 ago 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.

#Código

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

João Vitor
   - 28 ago 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.

#Código

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

João Vitor
   - 28 ago 2014

....

Ronaldo Lanhellas
   - 28 ago 2014


Citação:
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.

#Código

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