Jump to content
tekton

Relacionar campo com tabela mysql

Recommended Posts

Preciso fazer um CRUD de teste para tentar uma vaga em uma empresa. Nesse teste, tive que criar os campos Nome, Email, Telefone e Endereço, e deveria ser possível inserir mais de um endereço por nome nesse CRUD. Acho que não da pra simplesmente criar outro campo para inserir outro endereço. Acho que o objetivo do teste é que eu crie relacionamento de tabelas, mas não faço ideia de como começar. Estou fazendo o CRUD com PHP e já tenho tudo pronto, adicionar, editar e excluir. Já está tudo funcionando. Só falta agora essa opção pra poder colocar mais de um endereço por nome. Vou colocar o código da classe e do BD. Se precisarem de mais algum é só avisar. Agradeço de antemão pela ajuda.

 

-- phpMyAdmin SQL Dump
-- version 4.8.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Generation Time: Nov 16, 2019 at 11:19 PM
-- Server version: 5.7.24
-- PHP Version: 7.3.7

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `crudoo`
--

-- --------------------------------------------------------

--
-- Table structure for table `contatos`
--

CREATE TABLE `contatos` (
  `id` int(11) UNSIGNED NOT NULL,
  `nome` varchar(100) DEFAULT NULL,
  `email` varchar(100) NOT NULL DEFAULT '',
  `telefone` varchar(20) NOT NULL,
  `endereco` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `contatos`
--

INSERT INTO `contatos` (`id`, `nome`, `email`, `telefone`, `endereco`) VALUES
(2, 'test2e', 'teste2@teste.com', '316497', 'rua a'),
(4, 'wanderson', 'sonwander@yahoo.com.br', '985930559', 'rua brasil'),
(6, 'andrezinho', 'andre@site.com', '2222222222', 'rua j');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `contatos`
--
ALTER TABLE `contatos`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `contatos`
--
ALTER TABLE `contatos`
  MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
<?php
class Contato {

    private $pdo;

    public function __construct() {
        $this->pdo = new PDO("mysql:dbname=crudoo;host=localhost", "root", "root");
    }

    public function adicionar($email, $nome, $telefone, $endereco) {
        if($this->existeEmail($email) == false) {
            $sql = "INSERT INTO contatos (nome, email, telefone, endereco) VALUES (:nome, :email, :telefone, :endereco)";
            $sql = $this->pdo->prepare($sql);
            $sql->bindValue(':nome', $nome);
            $sql->bindValue(':email', $email);
            $sql->bindValue(':telefone', $telefone);
            $sql->bindValue(':endereco', $endereco);
            $sql->execute();

            return true;
        } else {
            return false;
        }
    }

    public function getInfo($id) {
        $sql = "SELECT * FROM contatos WHERE id = :id";
        $sql = $this->pdo->prepare($sql);
        $sql->bindValue(':id', $id);
        $sql->execute();

        if($sql->rowCount() > 0) {
            return $sql->fetch();
        } else {
            return array();
        }
    }

    public function getAll() {
        $sql = "SELECT * FROM contatos";
        $sql = $this->pdo->query($sql);

        if($sql->rowCount() > 0) {
            return $sql->fetchAll();
        } else {
            return array();
        }
    }

    public function editar($nome, $email, $telefone, $endereco, $id) {
        if($this->existeEmail($email) == false){
            $sql = "UPDATE contatos SET nome = :nome, email = :email, telefone = :telefone, endereco = :endereco WHERE id = :id";
            $sql = $this->pdo->prepare($sql);
            $sql->bindValue(':nome', $nome);
            $sql->bindValue(':email', $email);
            $sql->bindValue(':telefone', $telefone);
            $sql->bindValue(':endereco', $endereco);
            $sql->bindValue(':id', $id);
            $sql->execute();

            return true;

            } else {
                return false;
            }
    }

    public function excluir($id) {
            $sql = "DELETE FROM contatos WHERE id = :id";
            $sql = $this->pdo->prepare($sql);
            $sql->bindValue(':id', $id);
            $sql->execute();
        }

    private function existeEmail($email) {
        $sql = "SELECT * FROM contatos WHERE email = :email";
        $sql = $this->pdo->prepare($sql);
        $sql->bindValue(':email', $email);
        $sql->execute();

        if($sql->rowCount() > 0) {
            return true;
        } else {
            return false;
        }
    }
}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By reis77
      Fala pessoal, estou ultimamente com um probleminha em um projeto no qual estou desenvolvendo e queria contar com o conhecimento de vocês para poder me ajudar.
      Então, eu fiz uma conexão com o banco de dados mysql PDO e quando o projeto inseri conteúdo lá ele aparece com caracteres estranhos no lugar de acentuações.
      Já fiz alguns procedimentos, mas não sei onde estou errando !
       
      A arquitetura do bando de dados.
       
      <?php
      ob_start();
      try {
          $con = new PDO("mysql:dbname=buscador2;host=localhost", "root", "",
           array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
          $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
      }
      catch(PDOExeption $e) {
           echo "Connection failed: " . $e->getMessage();
      }
      ?>
       
       
    • By jonyweb
      Ola desde já comprimento todos..
       
      A minha questão é a seguinte;
       
      Tenho um site em Laravel e o que pretendo é quando um usuário registar-se no Laravel fica-sem registado em outro BancoDados mySQL...
       
      Ps. Para um só login funcionar em 2 bancos dados diferentes no mesmo alojamento....
       
      Agradeço ideia para este meu projeto..
       
      Muito Obrigado a Todos do forum...

    • By rogerblower
      Pessoal tenho a seguinte tabela
      id | id_etapa | id_evento | posicao | nome | pontos
      1  |  1             |        2         |   1           | joao      |  10
      2  |  1             |        2         |   2           | pedro    |  9
      3  |  1             |        2         |   3           | maria    |  8
      4  |  1             |       2          |   4           | jose       |  7
      5  |  2             |      2          |   3           | joao       |  8
      6  |  2             |  2              |   1           | pedro    | 10
      7  |  2             |   2             |  2            | maria    |  9
      8  |  2             |  2              |   4          | jose        |  7
       
      O resultado da consulta pretendido é este
      Pos  |  nome |   pontos
      1      |  pedro   | 19
      2      |   joao   | 18
      3      |  maria  |  17
      4      |  jose  |  14
       
      Com esta consulta não ordenando a coluna posicao como esperado, ela repete a posicao e não faz a soma, ex:
       1     joao     10
       1     pedro     10
      $pontuacaoa = $pdo->prepare("SELECT * FROM contador WHERE id_evento = '$id_evento' GROUP BY nome, posicao ORDER BY pontos DESC posicao ASC"); Com esta outra consulta a soma esta correta o agrupamento nome esta correto, não se repetem, mas a coluna posicao fica fora de ordem;
       
      $pontuacaoa = $pdo->prepare("SELECT * FROM contador WHERE id_evento = '$id_evento' GROUP BY nome ORDER BY pontos DESC posicao ASC"); Não estou conseguindo acertar a consulta, alguém me ajuda?
    • By Mauricio Molina
      Ola, tenho uma tabela onde mostro os dados da pessoa logado por session.
       
      Funciona perfeitamente, agora como faço para filtrar apenas os registros que estiverem cadastrados, os que não tiverem os campos não aparecerem?
       
      O Resultado 2 e Resultado 3, etc só poderá aparecer assim que forem cadastrados pelo adm do sistema.
       
      Segue o código da página:
       
      <?php session_start(); include_once("seguranca.php"); seguranca_adm(); ?> <!doctype html> <html lang="pt-br"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="adminweb/imagens/favicon.ico"> <title>Zona Treinamento | Sistemas Web</title> <!-- Principal CSS do Bootstrap --> <link href="css/bootstrap.min.css" rel="stylesheet"> <!-- Our Custom CSS --> <link rel="stylesheet" href="css/style-sidebar.css"> <!-- Estilos customizados para esse template --> <link href="css/offcanvas.css" rel="stylesheet"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script> <script defer src="https://use.fontawesome.com/releases/v5.0.13/js/solid.js"></script> <script defer src="https://use.fontawesome.com/releases/v5.0.13/js/fontawesome.js"></script> </head> <body> <?php require_once 'menu_sidebar_sup.php'; ?> <div class="container"> <button type="button" class="btn btn-success btn-lg btn-block"><?php echo $_SESSION['usuarioNome']; ?></button> </div> <div class="container theme-showcase" role="main"> <table class="table table-bordered table-hover table-striped table-sm"> <thead class="table-primary"> <tr> <th scope="col">DADOS</th> <th scope="col">RESULTADO 1</th> <th scope="col">RESULTADO 2</th> <th scope="col">RESULTADO 3</th> </tr> </thead> <tbody> <tr> <th scope="row">IDADE</th> <td><?php echo $_SESSION['usuarioIdade']; ?></td> <td><?php echo $_SESSION['usuarioIdade2']; ?></td> <!--aqui seria o espaço para o resultado 2,3,4 etc--> </tr> <tr> <th scope="row">ESCOLA</th> <td><?php echo $_SESSION['usuarioEscola']; ?></td> </tr> <tr> <th scope="row">SÉRIE</th> <td><?php echo $_SESSION['usuarioSerie']; ?></td> </tr> <tr> <th scope="row">PESO</th> <td><?php echo $_SESSION['usuarioPeso']; ?></td> </tr> <tr> <th scope="row">ALTURA</th> <td><?php echo $_SESSION['usuarioAltura']; ?></td> </tr> <tr> <th scope="row">IMC</th> <td><?php echo $_SESSION['usuarioImc']; ?></td> </tr> <tr> <th scope="row">RCQ</th> <td><?php echo $_SESSION['usuarioRcq']; ?></td> </tr> <tr> <th scope="row">FC Máxima</th> <td><?php echo $_SESSION['usuarioFcmaxima']; ?></td> </tr> <tr> <th scope="row">FC Repouso</th> <td><?php echo $_SESSION['usuarioFcrepouso']; ?></td> </tr> <tr> <th scope="row">FC Exercício</th> <td><?php echo $_SESSION['usuarioFcexerc']; ?></td> </tr> <tr> <th scope="row">FC Descanso</th> <td><?php echo $_SESSION['usuarioFcexercdesc']; ?></td> </tr> <tr> <th scope="row">Metragem Quadra</th> <td><?php echo $_SESSION['usuarioMquadra']; ?></td> </tr> <tr> <th scope="row">Teste Cooper</th> <td><?php echo $_SESSION['usuarioCooper']; ?></td> </tr> <tr> <th scope="row">Metros Percorridos</th> <td><?php echo $_SESSION['usuarioMetros_perc']; ?></td> </tr> <tr> <th scope="row">Impulsão Horizontal</th> <td><?php echo $_SESSION['usuarioImphoriz']; ?></td> </tr> <tr> <th scope="row">Impulsão Vertical</th> <td><?php echo $_SESSION['usuarioImpvert']; ?></td> </tr> </tbody> </table> </div> <!-- Inicio fechamento Menu Sidebar--> </div> </div> <!--Fim fechamento Menu Sidebar--> <script>function getElement(el) { return document.getElementById(el); } function validToCalc(fieldWeight, fieldHeight) { return fieldWeight.value && fieldHeight.value; } function calcImc(fieldWeight, fieldHeight) {console.log(fieldWeight, fieldHeight) const parsedWeigth = parseFloat(fieldWeight.replace(',', '.')); const parsedHeight = parseFloat(fieldHeight.replace(',', '.')); const calculatedImc = parsedWeigth/(parsedHeight * parsedHeight);  return Math.round(calculatedImc.toFixed(2)); } function initCalc(fieldWeight, fieldHeight) { const imcResult = calcImc(fieldWeight.value, fieldHeight.value); setImc(imcResult); } function setImc(imcResult) { getElement('imc').value = imcResult; } window.onload = function() { const fieldWeight = getElement('peso'); const fieldHeight = getElement('altura'); fieldWeight.addEventListener('keyup', function() { if(validToCalc(fieldWeight, fieldHeight)) { initCalc(fieldWeight, fieldHeight); } }); fieldHeight.addEventListener('keyup', function(){ if(validToCalc(fieldWeight, fieldHeight)) { initCalc(fieldWeight, fieldHeight); } }); }</script> <!-- Principal JavaScript do Bootstrap ================================================== --> <!-- Foi colocado no final para a página carregar mais rápido --> <!-- Popper.JS --> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script>window.jQuery || document.write('<script src="assets/js/vendor/jquery-slim.min.js"><\/script>')</script> <script src="js/popper.min.js"></script> <script src="js/bootstrap.min.js"></script> <script src="js/holder.min.js"></script> <script src="js/offcanvas.js"></script> <?php require_once '../footer.php'; ?> </body> </html>  
    • By leandrodesouza14
      Tenho uma duvida.
       
      Estou recebendo dados de um formulário HTML através do método POST. Um desses dados provem de um campo Select com diversos Options.
       
      Eu vou inserir os dados recebidos dos diversos imputs em varias tabelas, qual das tabelas vai depender do que o usuário selecionar no Select.
       
      Por exemplo: Se a pessoa selecionar BMW no Select, os dados do restante do formulário devem ser inseridos na tabela BMW. / Se a pessoa selecionar Fiat no Select, os dados do restante do formulário devem ser inseridos na tabela Fiat.
       
      O codigo que desenvolvi ate agora foi esse:
       
      <form action="cadastrodeveiculo.php" method="post" name="cadastroveiculo"> <p> Fabricante: <select name="marca"> <option value="audi" >Audi</option> <option value="bmw">BMW</option> <option value="chevrolet">Chevrolet</option> <option value="citroen">Citroen</option> <option value="fiat">Fiat</option> <option value="ford">Ford</option> <option value="hyundai">Hyundai</option> <option value="honda">Honda</option> <option value="jeep">Jeep</option> <option value="mb">Mercedes-Benz</option> <option value="mitsubishi">Mitsubishi</option> <option value="nissan">Nissan</option> <option value="peugeot">Peugeot</option> <option value="renault">Renault</option> <option value="toyota">Toyota</option> <option value="volkswagen">Volkswagem</option> </select> Modelo: <input type="text" id="modelo" name="modelo" maxlength="50"> Versao: <input type="text" id="versao" name="versao" maxlength="100"> Ano: <input type="text" id="ano" name="ano" maxlength="12"> Link: <input type="text" id="link" name="link" maxlength="300"> </p> <input class="submit" type="submit" name="cadastrar" value="Cadastrar"> </form> O codigo PHP, da pagina cadastroveiculo.php e o seguinte:
       
      <?php $conn = mysqli_connect("localhost", "leandro", "123", "afxveiculos"); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "Connected successfully"; $tabela = $_POST['marca']; $modelo = $_POST['modelo']; $versao = $_POST['versao']; $ano = $_POST['ano']; $link = $_POST['link']; $sql = "INSERT INTO (modelo, versao, ano, link) VALUES ('$modelo', '$versao', '$ano', '$link')"; if (mysqli_query($conn, $sql)) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } mysqli_close($conn); header("location: cadastroesquema.html"); ?> Deixei o Insert Into vazio pois não sei que colocar la.
       
      Obrigado galera!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.