GARANTIR DESCONTO

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

Luiz Camargo

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.

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar