Sobre PHP

Olá Pessoal !
Estou precisando tanto da ajuda de vcs. É que eu estou bem no inicio de PHP, e onde estou cursando, foi pedido para fazer o sistema abaixo , só que eu nao estou consequindo de jeito maneira. Se alquem deste forum poder me ajudar serem muito grato.

Construa uma classe Pessoa no arquivo classePessoa.php que estende a classe Banco (classeBanco.php) com os seguintes atributos:

id (privado)
cpf (público)
nome (público)
email (público)

Implemente os seguintes métodos:

construtor,
getId,
setId

Crie um arquivo chamado index.html que tenha um formulário que envie os dados para o arquivo cadastrarPessoa.php por método POST na seguinte configuração:

Campo para o cpf
Campo para o nome
Campo para o email
Botão de enviar o formulário

No arquivo cadastrarPessoa.php crie um objeto chamado pessoa que instancia a classe Pessoa, passados os dados de formulário como parâmetros para o construtor da classe.
Execute o método salvar, que foi herdado na classe Pessoa pela classe Banco.

Crie uma variável que irá receber o retorno do método listar (herdado da classe Banco) do objeto pessoa e utilize as informações obtidas para montar uma tabela com os dados de todas as pessoas cadastradas (id, cpf, nome e email).

Observação:

  • Não esqueça de criar uma tabela no banco de dados com o id como auto-incremento.
  • Não esqueça de testar os parâmetros passados para o método construtor.
  • A função mysql_fetch_object joga os valores do array no objeto antes de invocar o método construtor.
  • O uso de uma folha de estilos para deixar a interface mais bonita é opcional.

Segue todas as files e seus códigos:

index.html(formulario)

<!DOCTYPE html>
	<html>

		<head>
			<meta charset="UTF-8">
			<title>Formulario</title>
		</head>

		<body>
			<form method='post' action='cadastrarPessoa.php'>
				<label for='cpf'>CPF</label>
				<input type="text" id="cpf" name="cpf">

				<label for="nome">Nome</label>
				<input type="text" id="nome" name="nome">

				<label for="email">Email</label>
				<input type="text" id="email" name="email">

				<!-- Botão de envio do formulario -->
				<input type='submit' balue='cadastrar'>
			</form>
		</body>
	</html>

classePessoa.php

 <?php 
 include('classeBanco.php');

 class Pessoa extends Banco{

 	private $id;
 	public $cpf;
 	public $nome;
 	public $email;

 	function __construct($cpf, $nome, $email) {
 		$this->cpf = $cpf;
 		$this->nome = $nome;
 		$this->email = $email;
 	}

 	public function setId($id) {
 		$this->id = $id;
 	}

 	public function getId() {
 		return $this->id;
 	}

}

cadastrarPessoa.php

<?php
	include('classePessoa.php');

	header('Content-Type: text/html; charset=utf-8');
	// Checar se a algum request com o método post (Envio de formulario)
	if(strtoupper($_SEVER['REQUEST_METHOD']) === 'POST') {
		
		// Variaveis para pegar as entradas do formulario
		$cpf = "";
		$nome = "";
		$email = "";
		// Variavel para caso haja algum erro no envio do formualrio
		$error_message = "";

		// Checar se o envio do input cpf não está vazio
		if(!empty($_POST["cpf"])) {
			// preencher variavel de entrada com envio do input no formulario
			$cpf = $_POST["cpf"];
		} else {
			// Caso input do cpf for enviado vazio
			$error_message = $error_message . "Por favor, insira um cpf <br>";
			// Cancela resto do código
			exit;
		}

		if(!empty($_POST["nome"])) {
			$name = $_POST["nome"];
		} else {
			$error_message = $error_message . "Por favor, insira um nome <br>";
			exit;
		}

		if(!empty($_POST["email"])) {
			$email = $_POST["email"];
		} else {
			$error_message = $error_message . "Por favor, insira um email <br>";
			exit;
		}

		// Se a variavel de mensagem de erro não conter nenhum erro
		// Criar a instancia de Pessoa
		if(empty($error_message)) {
			// Criar a instancia e passar todas as infomações
			$pessoa = new Pessoa($cpf, $nome, $email);
			// Chamada para o método salvar()
			$pessoa->salvar();
			// Chamada para o método listar()
			// Inserindo os resultados em um variavel
			$resutados = $pessoa->listar();
			/* Nesse ponto teremos $resultados como um array associativo
				com informação de todas pessoas do banco de dados, agora é só fazer
				um loop no array, pegar as informações e coloca-las em variaveis e com as
				variaveis criar um tabela em html

				se for necessario checar como as chaves e valores estão organizadas no array
				$resultados é só utlizar o seguinte método: */

				echo '<pre>'
				echo var_dump($resultados);
				// Ignora todos os códigos abaixo
				exit;
			
		}

	}

classeBanco.php

<?php
	
	header('Content-Type: text/html; charset=utf-8');

	$db_username = "Nome de usuario da conexão local";
	$db_password = "Password da conexão local... se existir";
	// Opções de cofificação de charset
	$opçoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');

	try {
		// Criando conexão com o banco através da metodologia PDO
		$db = new PDO("mysql:host=localhost; dbname=NomeDaDataBase; charset=utf8", $db_username, $db_password, $opçoes);
		$db->setAttribute(PDO::ATTR_MODE, PDO::ERRMODE_EXCEPTION);
		
		// Query para criar a table no banco de dados
		$sql = "CREATE TABLE IF NOT EXISTS pessoas(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
			cpf VARCHAR(13) NOT NULL, nome VARCHAR(50) NOT NULL, email VARCHAR(70) NOT NULL)";
		// Executar a query
		$db->exec($sql);
	} catch(PDOException $e) {
		// Caso haja algum erro na conexão
		// Printar mensagem
		echo $e->getMessage();
		exit;
	}

	// Método para slavar informações da pessoa
	function salvar() {
		try {
			// Query para inserir informação da pessoa
			// Não é necessario inserir o id pq ele já será auto_increment na table
			$sql = "INSERT INTO pessoas(cpf, nome, email) 
				    VALUES ('$this->cpf', '$this->nome', '$this->email') ";
			// Executar a query
			$db->exec($sql);
			echo 'Informações inseridas com sucesso';
		} catch(PDOException $e) {
			echo $e->getMessage();
			exit;
		}

	}

	// Método para retornar todas pessoas
	function listar() {
		// Query para selecionar as pessoas no banco de dados
		$sql = "SELECT cpf, nome, email FROM pessoas";
		// Executar a query
		$result = $db->query();
		// Transforma os resultados em um array associativo
		$result->fetchAll(PDO::FETCH_ASSOC);

		// Retornando o array associativo
		return $result;
	}

To tentando testar o código mas to recebendo esse erro de retorno:

Fatal error: Undefined class constant ‘ATTR_MODE’ in C:\xampp\htdocs\MAPA\classeBanco.php on line 13

ALguma luz?

Esse erro conseguir tirar comentando esta linha, mas tem mais erros, agora estou com o de: Fatal error: Call to undefined method Pessoa::salvar() in C:\xampp\htdocs\Facul\CadastrarPessoa.php on line 37

Estranho, aqui se eu comento ja retorna outro erro, não ta achando a classe :

Fatal error: Class ‘Banco’ not found in C:\xampp\htdocs\MAPA\classePessoa.php on line 4

Sendo que dentro dela ta certinho:

include(‘classeBanco.php’);

class Pessoa extends Banco {

È isso mesmo, não tem a classe banco no arquivo classebanco.php tem que incluir.

Tem como voce postar a classe que usou la dentro?

Valeu!

Perdão, um pequeno erro, na classe Pessoa herdamos a classe Banco só que na file classeBanco não exite uma CLASSE kkkkkkkk, é só reescrever a file:

     <?php
        	
       class Banco {

             function __construct() {
                 // Construtor para iniciar a classe
             }

        // Método para slavar informações da pessoa
       public function salvar() {
                        
                 // Faça a conexão com o banco dentro da função salvar
                 $db_username = "Nome de usuario da conexão local";
        	     $db_password = "Password da conexão local... se existir";
        	     // Opções de cofificação de charset
        	     $opçoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');

        	try {
        		// Criando conexão com o banco através da metodologia PDO
        		$db = new PDO("mysql:host=localhost; dbname=NomeDaDataBase; charset=utf8", $db_username, $db_password, $opçoes);
        		$db->setAttribute(PDO::ATTR_MODE, PDO::ERRMODE_EXCEPTION);
        		
        		// Query para criar a table no banco de dados
        		$sql = "CREATE TABLE IF NOT EXISTS pessoas(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
        			cpf VARCHAR(13) NOT NULL, nome VARCHAR(50) NOT NULL, email VARCHAR(70) NOT NULL)";
        		// Executar a query
        		$db->exec($sql);
        	} catch(PDOException $e) {
        		// Caso haja algum erro na conexão
        		// Printar mensagem
        		echo $e->getMessage();
        		exit;
        	}

        		try {
        			// Query para inserir informação da pessoa
        			// Não é necessario inserir o id pq ele já será auto_increment na table
        			$sql = "INSERT INTO pessoas(cpf, nome, email) 
        				    VALUES ('$this->cpf', '$this->nome', '$this->email') ";
        			// Executar a query
        			$db->exec($sql);
        			echo 'Informações inseridas com sucesso';
        		} catch(PDOException $e) {
        			echo $e->getMessage();
        			exit;
        		}

        	}

    	// Método para retornar todas pessoas
    	public function listar() {
    		// Query para selecionar as pessoas no banco de dados
    		$sql = "SELECT cpf, nome, email FROM pessoas";
    		// Executar a query
    		$result = $db->query();
    		// Transforma os resultados em um array associativo
    		$result->fetchAll(PDO::FETCH_ASSOC);

    		// Retornando o array associativo
    		return $result;
    	}

}
1 curtida