Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TIGlobal

Inserir, Alterar e Deletar usando OO

Recommended Posts

Olá pessoal,

 

Estou começando a estudar OO em PHP e me surgiu uma dúvida, fiz um formulário em html para enviar dados de um time, e criei uma classe com métodos para inserir, alterar e remover:

 

Times.php

 

<?php 
 # ============ Classe Times ============ 
 
 class Times{ 

    private $id;
    private $estado;
    private $time;
    private $pontos;
    
    public function setId($id){ 
       $this -> id = $id;
    }

    public function setEstado($estado){ 
       $this -> estado = $estado;
    }

    public function setTime($time){ 
       $this -> time = $time;
    }

    public function setPontos($pontos){ 
       $this -> pontos = $pontos;
    }

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

    public function getEstado(){ 
       return $this -> estado;
    }

    public function getTime(){ 
       return $this -> time;
    }

    public function getPontos(){ 
       return $this -> pontos;
    }

    public function getJogos(){ 
       return $this -> jogos;
    }

    
	public function save(){
		if ($this->getId() == 0){
			$this->insert();
		} else {
			$this->update();
		}
	}

	public function get($id){ 
		$sql = 'SELECT * FROM times WHERE id = "'.$id.'"' ;
		$query = mysql_query($sql);
		$result = mysql_fetch_assoc($query);
		$result = $this->getFromResult();
		return $result;
	}


	public function delete(){
		$sql ='DELETE FROM times WHERE id = \''.$this->getId().'\' '; 
		$result = mysql_query($sql);
		$this->setId(0);
	}


	private function getFromResult($result) {
        $this->setId($result['id']);
        $this->setEstado($result['estado']);
        $this->setTime($result['time']);
        $this->setPontos($result['pontos']);
        $this->setJogos($result['jogos']);
        
	}


	private function update(){
        $sql = 'UPDATE times SET 
        id = \''.$this->getId().'\', 
        estado = \''.$this->getEstado().'\', 
        time = \''.$this->getTime().'\', 
        pontos = \''.$this->getPontos().'\', 
        jogos = \''.$this->getJogos().'\', 
        WHERE id = \''.$this->getId().'\'';
		mysql_query($sql) or die (mysql_error());
	}


	private function insert(){
      $sql = 'INSERT INTO times (estado, time, pontos, jogos, vitorias, empates, derrotas, golspro, golscontra, saldogols) VALUES (\''.$this->getEstado().'\', \''.$this->getTime().'\', \''.$this->getPontos().'\', \''.$this->getJogos().'\', \''.$this->getVitorias().'\', \''.$this->getEmpates().'\', \''.$this->getDerrotas().'\', \''.$this->getGolspro().'\')';
		mysql_query($sql) or die (mysql_error());
		$this->setId(mysql_insert_id()); 
	}
} // fim da class

 ?>

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

include 'Times.php';//dando include do arquivo da class

$time = new Times();//criando um novo objeto
$time->setId( $_POST['id'] );
$time->setEstado( $_POST['estado'] );
//... ai continua setando os atributos do objeto

$time->save();//insere|atualiza
acima é o arquivo de action do formulário.

lembre-se de fazer a conexão com o banco de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa sua classe esta insegura contra ataques de SQL Injection

 

e procure seguir os padroes de desenvolvimento, é uma boa pratica nao misturar nomes ingles e portugues

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabyo, vou revisar a classe, obrigado.

 

 

William, era isso mesmo, só estou com dúvida na hora de editar as equipe, estou usando a ID dos mesmos.

 

<?php
include "conexao.php";
	$Id	= $_REQUEST['Id'];
	$result = $db->query("select * from times where id = ".$Id);
	$db->li	= $db->fetch($result)

?>
</head>
<body>
<h1> </h1>
<form name="form1" method="post" action="actions/Times.php">
  <p>   </p>
  <p>Equipe
    <input type="text" name="time"  value="<?php echo $db->li['time'] ?>" id="time">
  </p>
  <p>Estado
    <input type="text" name="estado" id="estado">
  </p>
  <p>Pontos
    <input type="text" name="pontos" id="pontos">
  </p>

Fica uma página em branco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

uê ?

 

usa a tua classe..

$time = new Times();
$time->get( $_GET['Id'] );
e ai:
<input type="text" name="time"  value="<?php echo $time->getTime(); ?>" id="time" />

a idéia é mais ou menos essa, dá uma olhada para arrumar os possíveis erros, pois não testei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

include "conexao.php";

$Id = $_REQUEST['Id'];

$result = $db->query("select * from times where id = ".$Id);

$db->li = $db->fetch($result)

 

?>

</head>

<body>

<h1> </h1>

<form name="form1" method="post" action="actions/Times.php">

<p> </p>

<p>Equipe

<input type="text" name="time" value="<?php echo $db->li['time'] ?>" id="time">

</p>

<p>Estado

<input type="text" name="estado" id="estado">

</p>

<p>Pontos

<input type="text" name="pontos" id="pontos">

</p>

 

 

Você esta direcionando o action diretamente para sua classe. No meu ver, você deve criar um script como o Willian descreveu para a inserção, e neste script você inclui sua classe e trata as inserções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.