Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal.
Sou iniciante em PHP e estou desenvolvendo um sistema de bolsas de estudos. Estou com dificuldade na seguinte questão.
Tenho a tabela Bolsas onde as bolsas de estudos são cadastradas e tenho outras tabelas como cidade, cursos, instituição, etc. No formulário de cadastro da Bolsa, nas opções cidade, cursos instituição... eu faço uma consulta no Banco de Dados e retorno os valores num ComboBox.
<select class="form-control1" name="curso">
<option value="">Selecione ...</option>
<?php
// Instancia o objeto PDO
$pdo = new PDO('mysql:host=localhost;dbname=bolsascursos', 'root', '');
$consulta = $pdo->query("SELECT id, nome FROM cursos;");
while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) {
?>
<option value="<?php echo $linha['id'] ?>"><?php echo $linha['nome'] ?></option>
<?php
}
?>
?>
</select>
O exemplo acima ele insere o** id** capturado dentro da tabela **Bolsas** na coluna **id_bolsa.**
Abaixo ta o código usado pra listar as Bolsas Cadastradas.
<?php
$select = "SELECT * from bolsas ORDER BY id DESC";
try {
$result = $conexao->prepare($select);
$result->execute();
$contar = $result->rowCount();
if($contar>0) {
while($mostrar = $result->FETCH(PDO::FETCH_OBJ)) {
?>
<?php echo $mostrar->curso;?>
<?php echo $mostrar->categoria;?>
<?php echo $mostrar->id_curso;?>
....
<?php
}
} else {
echo 'Não existem instituições cadastradas!';
}
}catch(PDOException $e) {
echo $e;
}
?>
**Minha dúvida é a seguinte:** Como faço para que ao invés de amostrar o ID do curso, amostrar o Nome do Curso ?
Eu li sobre **INNER JOIN** mas não consegui fazer nada que desse certo ...>
13 horas atrás, jamesbond disse:
Com inner join você vai retornar as bolsas e os cursos correspondente ao ID CURSO.
Por exemplo:
-
Bolsa ID 1 -> Nome: BOLSANATAL - Categoria: 2 - Idcurso: 2
-
CURSO ID 2 -> Nome: PHP - Descricao: Venha programar em PHP
-
CURSO ID 3 -> Nome: C++ - Descricao: ALOCA!
Se você executar:
SELECT
B.categoria as bolsa_categoria,
B.id as bolsa_id,
C.nome as curso_nome,
C.id as curso_id
FROM bolsas B
INNER JOIN cursos C
ON C.id = B.id_curso;
Será retornado:
-
bolsa_id -> 1
-
bolsa_categoria -> 2
-
curso_nome -> PHP
-
curso_id -> 2
Espero que ajude.
Desculpe, ainda não consegui resolver o problema. Como eu disse, sou iniciante ainda!
Vou te listar a tabela Bolsas onde são inseridos as bolsas.
Onde em instituicao são gravados os IDs das instituições cadastradas na tabela instituicoes.
Aqui está o código usado pra listar as bolsas cadastradas
<?php
$select = "SELECT * from bolsas ORDER BY id DESC";
try {
$result = $conexao->prepare($select);
$result->execute();
$contar = $result->rowCount();
if($contar>0) {
while($mostrar = $result->FETCH(PDO::FETCH_OBJ)) {
?>
<div class="col-sm-3">
<img src="../img/<?php echo $mostrar->instituicao;?>" style="max-width: 180px; width: auto; max-height: 115px; height: auto;"><br><br>
<b>Curso: </b> <?php echo $mostrar->curso;?><br>
<b>Modalidade: </b> <?php echo $mostrar->categoria;?><br>
<b>Tipo: </b> <?php echo $mostrar->tipo_curso;?><br>
<b>Cidade: </b><?php echo $mostrar->cidade;?><br>
<b>Plano de Estudos: </b><?php
$max = 120; echo substr_replace($mostrar->plano_estudos, (strlen($mostrar->plano_estudos) > $max ? '...' : ''), $max);?><br>
<b>Percentual: </b><?php echo $mostrar->percentual;?>%<br>
<b>Valor Total: </b>R$ <?php echo $mostrar->valor_total;?><br>
<b>Valor da Bolsa: </b>R$ <?php echo $mostrar->valor_desconto;?><br>
<b>Nº de Parcelas: </b><?php echo $mostrar->numero_parcelas;?><br>
<b>Valor da Matrícula: </b>R$ <?php echo $mostrar->custo_matricula;?><br>
<b>Custo com Material: </b>R$ <?php echo $mostrar->custo_com_material;?><br>
<b>Percentual por Indicação: </b><?php echo $mostrar->percentual_indicacao;?>%<br>
<a href="editar-bolsa.php?id=<?php echo $mostrar->id; ?>">Editar</a>
</div>
<?php
}
} else {
echo 'Não existem instituições cadastradas!';
}
}catch(PDOException $e) {
echo $e;
}
?>
Aí que vem a minha dúvida, como faço pra amostrar o nome da Instituição invés do ID ?
Com inner join você vai retornar as bolsas e os cursos correspondente ao ID CURSO.
Por exemplo:
-
Bolsa ID 1 -> Nome: BOLSANATAL - Categoria: 2 - Idcurso: 2
-
CURSO ID 2 -> Nome: PHP - Descricao: Venha programar em PHP
-
CURSO ID 3 -> Nome: C++ - Descricao: ALOCA!
Se você executar:
SELECT
B.categoria as bolsa_categoria,
B.id as bolsa_id,
C.nome as curso_nome,
C.id as curso_id
FROM bolsas B
INNER JOIN cursos C
-
bolsa_id -> 1
-
bolsa_categoria -> 2
-
curso_nome -> PHP
-
curso_id -> 2
Espero que ajude.