Fórum Combobox no PHP com banco de dados #570299
02/11/2016
0
Boa Noite,
Como eu posso fazer um form de consulta de cursos, em que na primeira combobox eu tenha as áreas e no segundo os cursos, como posso desenvolver isto em PHP
Por exemplo:
1a. Combo = Engenharia
2a. Combo = Engenharia Civil / Engenharia Elétrica / Engenharia da Computação
Não sei se tem a condição de fazer estas combos sem banco de dados, o que vocês acham?
Como posso desenvolver algo deste nível, por favor me ajudem.
Agradeço o contato,
Luiz
Como eu posso fazer um form de consulta de cursos, em que na primeira combobox eu tenha as áreas e no segundo os cursos, como posso desenvolver isto em PHP
Por exemplo:
1a. Combo = Engenharia
2a. Combo = Engenharia Civil / Engenharia Elétrica / Engenharia da Computação
Não sei se tem a condição de fazer estas combos sem banco de dados, o que vocês acham?
Como posso desenvolver algo deste nível, por favor me ajudem.
Agradeço o contato,
Luiz
Luiz Camargo
Curtir tópico
+ 0
Responder
Posts
03/11/2016
Andre Alves
Olá, Luiz!
Você pode fazer isso usando o banco de dados, PHP e JQuery.
Vou exemplificar primeiro criando um banco de dados com as respectivas tabelas e seus relacionamentos. Serão duas tabelas:
1. area (area_id, area_nome)
2. curso (curso_id, curso_nome, curso_area)
Você pode usar o script abaixo para criar o banco de teste com as tabelas e seus registros.
Crie um arquivo para poder se conectar ao banco de dados. Nesse exemplo, vou chamá-lo de conexao.php
- conexao.php
Bem, agora, você vai criar a página que contém o formulário que possui as informações de área e curso. Nesse exemplo, eu chamei de index.php
- index.php
Agora, você vai criar uma página que faz a consulta aos cursos de acordo com a área. Nesse exemplo, eu chamei de cursos.php
- cursos.php
Prontinho!
Agora, cada vez que seu usuário selecionar um curso, será retornado os cursos referentes à área de selecionada. E, com as restrições de integridade referencial implementadas na criação do banco de dados, caso uma área seja deletada do banco, os cursos correlacionados serão automaticamente excluídos, mantendo assim a consistência das informações.
Você pode fazer isso usando o banco de dados, PHP e JQuery.
Vou exemplificar primeiro criando um banco de dados com as respectivas tabelas e seus relacionamentos. Serão duas tabelas:
1. area (area_id, area_nome)
2. curso (curso_id, curso_nome, curso_area)
Você pode usar o script abaixo para criar o banco de teste com as tabelas e seus registros.
CREATE DATABASE IF NOT EXISTS seu_banco; USE seu_banco; DROP TABLE IF EXISTS `area`; CREATE TABLE `area` ( `area_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `area_nome` varchar(45) NOT NULL, PRIMARY KEY (`area_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; INSERT INTO `area` (`area_id`,`area_nome`) VALUES (1,'Engenharia'); DROP TABLE IF EXISTS `curso`; CREATE TABLE `curso` ( `curso_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `curso_nome` varchar(45) NOT NULL, `curso_area` int(10) unsigned NOT NULL, PRIMARY KEY (`curso_id`), KEY `FK_curso_1` (`curso_area`), CONSTRAINT `FK_curso_1` FOREIGN KEY (`curso_area`) REFERENCES `area` (`area_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; INSERT INTO `curso` (`curso_id`,`curso_nome`,`curso_area`) VALUES (1,'Engenharia Civil',1), (2,'Engenharia Elétrica',1), (3,'Engenharia da Computação',1);
Crie um arquivo para poder se conectar ao banco de dados. Nesse exemplo, vou chamá-lo de conexao.php
- conexao.php
<?php
$servername = "localhost";
$username = "root";
$password = "sua_senha"; //deixe em branco caso não tenha
$database = "seu_banco";
// Cria uma conexão
$conn = mysqli_connect($servername, $username, $password, $database);
//Altera o padrão de caracteres
mysqli_set_charset($conn, "utf8");
// Verifica o status da conexão
if (!$conn) {
die("A conexão com o banco de dados falhou: " . mysqli_connect_error());
}
?>Bem, agora, você vai criar a página que contém o formulário que possui as informações de área e curso. Nesse exemplo, eu chamei de index.php
- index.php
<?php
require_once('conexao.php');
$sql = "SELECT * FROM area";
$dados = mysqli_query($conn,$sql) or die(mysql_error());
$linha = mysqli_fetch_assoc($dados);
$total = mysqli_num_rows($dados);
// Verifica se a conexão não funcionou...
if (!$conn) {
die("A conexão com o banco de dados falhou: " . mysqli_connect_error());
}
else {
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script><!-- Via MaxCDN -->
</head>
<body>
<form action="" method="get">
<select name="area" id="area">
<option value="" selected = selected>Selecione uma área</option>
<?php
if($total > 0) {
do {
echo "<option value='".$linha['area_id']."'>".$linha['area_nome']."</option>";
}while($linha = mysqli_fetch_assoc($dados));
}
?>
</select>
<select name="curso" id="curso">
<option value="" selected = selected>Selecione um curso</option>
</select>
</form>
<script type="text/javascript">
$(document).ready(function(){
$('#area').change(function(){
$('#curso').load('cursos.php?area='+$('#area').val() );
});
});
</script>
</body>
</html>
<?php
mysqli_close($conn);
}
?> Agora, você vai criar uma página que faz a consulta aos cursos de acordo com a área. Nesse exemplo, eu chamei de cursos.php
- cursos.php
<?php
require_once('conexao.php');
$area_id = $_GET['area'];
$sql = "SELECT * FROM curso WHERE curso_area = $area_id";
$dados = mysqli_query($conn,$sql) or die(mysqli_error());
$linha = mysqli_fetch_assoc($dados);
$total = mysqli_num_rows($dados);
if($total > 0) {
do {
echo "<option value='".$linha['curso_id']."'>".$linha['curso_nome']."</option>";
}while($linha = mysqli_fetch_assoc($dados));
}
?>Prontinho!
Agora, cada vez que seu usuário selecionar um curso, será retornado os cursos referentes à área de selecionada. E, com as restrições de integridade referencial implementadas na criação do banco de dados, caso uma área seja deletada do banco, os cursos correlacionados serão automaticamente excluídos, mantendo assim a consistência das informações.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)