8
sales list code I’m having trouble presenting the customer name of each sale and product name of each sale tbm! I don’t know what I’m doing wrong
<?php
include_once("Sessao.php");
include_once("Valida.php");
include_once("Cabecalho.php");
include_once './Classes/Singleton.php';
include_once './Classes/Venda.php';
include_once './Classes/VendaDao.php';
// include_once 'Classes/Cliente.php';
// include_once 'Classes/ClienteDao.php';
// include_once 'Classes/Produto.php';
// include_once 'Classes/ProdutoDao.php';?>
<?php
if($_GET && $_GET["msg"] && $_GET["tpMsg"]){
?>
<div class="alert alert-<?php echo $_GET["tpMsg"] ?>" role="alert">
<strong>Atenção: </strong><?php echo $_GET["msg"]?>
</div>
<?php
}
?>
<div>
<a class="btn btn-success" href="FormVenda.php"> Novo Venda </a>
</div>
<hr>
<div>
<table class="table table-striped table-hover">
<thead>
<tr>
<th> Código </th>
<th> Data </th>
<th> Cliente </th>
<th> Produto </th>
<th> Quantidade </th>
<th> Preço </th>
<th> Total </th>
<th> Ações </th>
</tr>
</thead>
<tbody>
<?php
$vendaDao = new VendaDao();
$lista = $vendaDao->listar();
foreach ($lista as $venda) {
//$urlAlterar = "FormVenda.php?comando=U&codigo={$venda->getCodigo()}";
$urlExcluir = "FormVenda.php?comando=D&codigo={$venda->getCodigo()}";
$urlExcluir = "JavaScript:if(confirm('Deseja realmente excluir o venda?')) { document.location.href='{$urlExcluir}' }";
echo
"<tr>
<td> {$venda->getCodigo()} </td>
<td> {$venda->getData()} </td>
<td> {$venda->getCliente()->getNome()} </td>
<td> {$venda->getProduto()->getNome()} </td>
<td> {$venda->getQuantidade()} </td>
<td>
<a class='btn btn-danger' href=\"{$urlExcluir}\"> Excluir </a>
</td>
</tr>";
}
?>
</tbody>
</table>
</div>
<!-- <td> R$ {$venda->getProduto()->getPreco()} </td>
<td> R$ " . ($venda->getPreco() * $venda->getQuantidade()) . " </td> -->
<?php
class VendaDao {
private $pdo = null;
public function __construct(){
//pegar instancia e atribuir $pdo
$this->pdo = Singleton::getInstance()->getPDO();
}
public function salvar(Venda $venda){
//aqui dentro sempre vira um objeto
if( !$venda->getCodigo() ){
$sql = "INSERT INTO venda(data, quantidade, cliente, produto)
VALUES(:data, :quantidade, :cliente, :produto)";
$resultado = $this->pdo->prepare($sql);
} else {
$sql = "UPDATE venda SET data=:data, quantidade=:quantidade, cliente=:cliente,
produto=:produto WHERE codigo=:codigo";
$resultado = $this->pdo->prepare($sql);
$resultado->bindValue(":codigo",$venda->getCodigo(),PDO::PARAM_INT);
}
$resultado->bindValue(":data",$venda->getData(),PDO::PARAM_STR);
$resultado->bindValue(":quantidade",$venda->getQuantidade(),PDO::PARAM_INT);
$resultado->bindValue(":cliente",$venda->getCliente(),PDO::PARAM_INT);
$resultado->bindValue(":produto",$venda->getProduto(),PDO::PARAM_INT);
$resultado->execute();
}
public function excluir($codigo){
$sql = "DELETE FROM venda WHERE codigo=:codigo";
$resultado = $this->pdo->prepare($sql);
$resultado->bindValue(":codigo",$codigo,PDO::PARAM_INT);
$resultado->execute();
return $resultado->rowCount() ==1;
}
public function listar(){
$vendas = array();
$sql = "SELECT codigo, data, quantidade, cliente, produto, 'c.nome', 'p.nome' FROM venda as v
INNER JOIN cliente c ON 'c.codigoCli' = 'v.cliente'
INNER JOIN produto p ON 'p.codigoPro' = 'v.produto'
ORDER BY data";
$resultado = $this->pdo->prepare($sql);
$resultado->execute();
while( $vendaBD = $resultado->fetch(PDO::FETCH_OBJ) ){
$venda = new Venda();
$venda->setCodigo($vendaBD->codigo);
$venda->setData($vendaBD->data);
$venda->setQuantidade($vendaBD->quantidade);
$c = new Cliente();
$c->setCodigoCli($vendaBD->codigoCli);
$c->setNome($vendaBD->nome);
$venda->setCliente($c);
$p = new Produto();
$p->setCodigoPro($vendaBD->codigoPro);
$p->setNome($vendaBD->nome);
$venda->setProduto($p);
$vendas[] = $venda;
print_r($vendas);
}
return $vendas;
}
}
?>
You can show the source code of
VendaDao()
?– Bruno Wego
Welcome to Stack Overflow Amanda! Prefer to post the code in text, so it’s easier for someone who wants to answer reproduce their problem.
– gmsantos
You can show the class code of your Sale.
– Eduardo Binotto
Instead of the name comes the code?
– rray
yes the client code appears but not the name
– Amanda
When you call
getCliente()
what appears?– rray
when I call getCliente() the client code appears and when I put in front getNome() of the error
– Amanda
Which error appears?
– rray
Fatal error: Call to a Member Function getNome() on a non-object
– Amanda
edited the response code.
– rray
Does your user have a name in the database? Because there is an error, it is because there is no instance of the name.
– Ivan Ferrer
What happens when you make one
var_dump($venda);
within yourforeach()
?– Ivan Ferrer
try something like:
get_class_methods ( $venda );
– Ivan Ferrer