Delete only one record in the database [closed]

0

When you run the code below, more than one record is deleted from the database. I can not find the problem.

Exclude Code
exclude_client.php

<?php

require 'repositorio_clientes.php';

$clientes = $repositorio->getListarClientes();

echo"< br>< br>< br>< br>< br>< br>";

while($clienteTemporario = array_shift($clientes)){

if($clienteTemporario->getCodigo() == $_REQUEST['codigo']){

echo '<center>' . "Cliente: " . $clienteTemporario->getNome() . ", cpf: " . $clienteTemporario->getCpf() . $repositorio->excluirClientes($_REQUEST['codigo']) . "excluído com sucesso" . '</center>';

}

}

exit;

?>

Page: repositorio_clientes.php

<? php

require ' conexao.php ';

include 'cliente.php';

interface IRepositorioClientes {

public function cadastrarClientes($cliente);

public function excluirClientes($cliente);

public function atualizarClientes($cliente);

public function buscarCliente($codigo);

public function getListarClientes();

public function getListarClienteDia();

public function getListarClienteAtraso();

}

class RepositorioClientesMySQL implements IRepositorioClientes {

private $conexao;

public function __construct() {

$this->conexao = new Conexao("localhost", "root", "", "biblioteca");

if($this->conexao->conectar() == false) {

echo "Erro" . mysqli_error();

}

}

public function cadastrarClientes($cliente) {

$nome = $cliente->getNome();

$endereco = $cliente->getEndereco();

$cpf = $cliente->getCpf();

$saldo = $cliente->getSaldo();

$situacao = $cliente->getSituacao();

$data= $cliente->getData();

$sql = "INSERT INTO cliente (nome, endereco, cpf, saldo, situacao, data) VALUES 
('$nome', '$endereco', '$cpf', '$saldo', '$situacao', '$data')";

$this->conexao->executarQuery($sql);

}

public function excluirClientes($codigo) {

$sql = "DELETE FROM cliente WHERE codigo = '$codigo'";

$this->conexao->executarQuery($sql);

}

public function atualizarClientes($cliente) {

$nome = $cliente->getNome();

$codigo = $cliente->getCodigo();

$cpf = $cliente->getCpf();

$endereco = $cliente->getEndereco();

$saldo = $cliente->getSaldo();

$situacao = $cliente->getSituacao();

$data = $cliente->getData();

$linha = $this->conexao->obtemPrimeiroRegistroQuery;

$sql = "UPDATE cliente SET nome ='$nome', endereco='$endereco', cpf='$cpf', saldo='$saldo', situacao='$situacao', data='$data' WHERE codigo ='$codigo'";

$this->conexao->executarQuery($sql); 

}

public function buscarCliente($codigo) {

$linha = $this->conexao->obtemPrimeiroRegistroQuery ("SELECT * FROM cliente WHERE codigo='$codigo'");

$cliente = new Cliente(

$linha['nome'],

$linha['codigo'],

$linha['endereco'],

$linha['cpf'],

$linha['saldo'],

$linha['situacao'],

$linha['data']); 

return $cliente; 

}

public function getListarClientes() {

$listagem = $this->conexao->executarQuery("SELECT * FROM cliente");

$arrayClientes = array();

while($linha = mysqli_fetch_array($listagem)){

    $cliente = new Cliente(

    $linha['nome'],

    $linha['codigo'],

    $linha['endereco'],

    $linha['cpf'],

    $linha['saldo'],

    $linha['situacao'],

    $linha['data']);

array_push($arrayClientes, $cliente);

}

return $arrayClientes;
}

public function getListarClienteDia() {

$listagem = $this->conexao->executarQuery("SELECT * FROM cliente WHERE situacao='Em Dia'");

$arrayClientes = array();

while($linha = mysqli_fetch_array($listagem)){

    $cliente = new Cliente(

    $linha['nome'],

    $linha['codigo'],

    $linha['endereco'],

    $linha['cpf'],

    $linha['saldo'],

    $linha['situacao'],

    $linha['data']);

array_push($arrayClientes, $cliente);

}

return $arrayClientes;

}

public function getListarClienteAtraso() {

$listagem = $this->conexao->executarQuery("SELECT * FROM cliente WHERE situacao='Em Atraso'");

$arrayClientes = array();

while($linha = mysqli_fetch_array($listagem)){

    $cliente = new Cliente(

    $linha['nome'],

    $linha['codigo'],

    $linha['endereco'],

    $linha['cpf'],

    $linha['saldo'],

    $linha['situacao'],

    $linha['data']);

array_push($arrayClientes, $cliente);

}

return $arrayClientes;

} 

}

$repositorio = new RepositorioClientesMySQL();

?>
    
asked by anonymous 21.04.2015 / 21:45

1 answer

0

If you just want to delete a client inform the id / code does not need a while to do so. It is not necessary to use php to check which client in the list (array) will be removed, just pass the id to the function to let the bank handle it.

You can simplify:

while($clienteTemporario = array_shift($clientes)){
if($clienteTemporario->getCodigo() == $_REQUEST['codigo']){
   echo '<center>' . "Cliente: " . $clienteTemporario->getNome() . ", cpf: " .
   $clienteTemporario->getCpf() . $repositorio->excluirClientes($_REQUEST['codigo']) . 
   "excluído com sucesso" . '</center>';
}

To:

if ($repositorio->excluirClientes($_REQUEST['codigo'])) {
   echo 'cliente excluido com sucesso';
} else {
   echo 'erro';
}
    
22.04.2015 / 00:03