PHP - Exercício do Facebook: Sistema de Cadastro e Consulta de Imóveis
Sempre crie uma frase de segurança única para jogos, airdrops e outras origens desconhecidas, em vez de usar sua carteira principal.
Link do exercício:
@CanalQb no Facebook - Exercício Cadastro Imóveis
Cadastro e Consulta de Imóveis
Se você precisa de uma solução prática para cadastrar e consultar imóveis, confira abaixo três scripts PHP separados, que facilitam a implementação de um sistema básico: um script para a página inicial, outro para a conexão e configuração do banco de dados, e um terceiro para a lógica de cadastro.
Script para a página inicial (index.php):
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cadastro/Consulta de Imóveis</title>
</head>
<body>
<h1>Cadastro/Consulta de Imóveis</h1>
<form action="cadastrar_imovel.php" method="post">
<!-- Campos do formulário para cadastrar imóveis -->
<label for="tipo_negociacao">Tipo de Negociação:</label>
<input type="text" id="tipo_negociacao" name="tipo_negociacao" required><br>
<label for="status">Status:</label>
<input type="text" id="status" name="status" required><br>
<label for="endereco">Endereço:</label>
<input type="text" id="endereco" name="endereco" required><br>
<label for="tipo_imovel">Tipo do Imóvel:</label>
<input type="text" id="tipo_imovel" name="tipo_imovel" required><br>
<label for="caracteristicas">Características:</label>
<textarea id="caracteristicas" name="caracteristicas" rows="4" required></textarea><br>
<label for="preco">Preço:</label>
<input type="number" step="0.01" id="preco" name="preco" required><br>
<label for="condicoes">Condições:</label>
<textarea id="condicoes" name="condicoes" rows="3"></textarea><br>
<label for="observacoes">Observações:</label>
<textarea id="observacoes" name="observacoes" rows="3"></textarea><br>
<button type="submit" name="submit">Cadastrar Imóvel</button>
</form>
</body>
</html>
Script para conexão ao banco de dados (bd.php):
<?php
// Configurações para conexão com o banco de dados MySQL usando PDO
$servername = "localhost";
$username = "seu_usuario";
$password = "sua_senha";
$dbname = "nome_do_banco";
try {
// Estabelece a conexão com o banco de dados
$conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password);
// Configura o PDO para lançar exceções em caso de erro
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Cria a tabela 'imoveis' se não existir
$query = "CREATE TABLE IF NOT EXISTS imoveis (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
tipo_negociacao VARCHAR(20) NOT NULL,
status VARCHAR(20) NOT NULL,
endereco VARCHAR(200) NOT NULL,
tipo_imovel VARCHAR(20) NOT NULL,
caracteristicas TEXT NOT NULL,
preco FLOAT(11,2) NOT NULL,
condicoes TEXT,
observacoes TEXT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
$conn->exec($query);
} catch(PDOException $e) {
echo "Erro na conexão com o banco de dados: " . $e->getMessage();
exit();
}
?>
Script para lógica de cadastro (cadastrar_imovel.php):
<?php
include_once "bd.php"; // Inclui arquivo com a conexão ao banco
if(isset($_POST['submit'])) {
// Recebe dados do formulário, com validação mínima
$tipo_negociacao = filter_input(INPUT_POST, 'tipo_negociacao', FILTER_SANITIZE_STRING);
$status = filter_input(INPUT_POST, 'status', FILTER_SANITIZE_STRING);
$endereco = filter_input(INPUT_POST, 'endereco', FILTER_SANITIZE_STRING);
$tipo_imovel = filter_input(INPUT_POST, 'tipo_imovel', FILTER_SANITIZE_STRING);
$caracteristicas = filter_input(INPUT_POST, 'caracteristicas', FILTER_SANITIZE_STRING);
$preco = filter_input(INPUT_POST, 'preco', FILTER_VALIDATE_FLOAT);
$condicoes = filter_input(INPUT_POST, 'condicoes', FILTER_SANITIZE_STRING);
$observacoes = filter_input(INPUT_POST, 'observacoes', FILTER_SANITIZE_STRING);
if ($tipo_negociacao && $status && $endereco && $tipo_imovel && $caracteristicas && $preco !== false) {
// Prepara e executa a inserção no banco usando prepared statements para segurança
$stmt = $conn->prepare("INSERT INTO imoveis (tipo_negociacao, status, endereco, tipo_imovel, caracteristicas, preco, condicoes, observacoes) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$result = $stmt->execute([$tipo_negociacao, $status, $endereco, $tipo_imovel, $caracteristicas, $preco, $condicoes, $observacoes]);
if ($result) {
echo "<p>Imóvel cadastrado com sucesso!</p>";
} else {
echo "<p>Erro ao cadastrar imóvel.</p>";
}
} else {
echo "<p>Por favor, preencha todos os campos obrigatórios corretamente.</p>";
}
}
?>
Este conjunto de scripts forma uma base para um sistema simples de cadastro e consulta de imóveis usando PHP e MySQL. Você pode expandir adicionando páginas para consulta e edição, além de implementar validações mais completas e segurança, como proteção contra CSRF e autenticação de usuários.
Para aprender mais sobre PHP e desenvolvimento web, consulte a documentação oficial do PHP: https://www.php.net/manual/pt_BR/.

Comentários
Comente só assim vamos crescer juntos!