Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Caros amigos, boa noite !
Sou iniciante na linguagem PHP e estou com o seguinte problema :
estou aprendendo sobre camadas mvc no php e tenho um arquivo somente com as funções e ações
Neste arquivo tenho uma função com o seguinte código :
$sql = "select * from categoria where descricao like '%".$filtrar_por."%' order by ".$ordenacao;
$this->resultado = $this->con->banco->Execute($sql);
$count = mysql_query($sql);
$total = mysql_num_rows($count);
Se eu der um echo $total nessa página ele lista corretamente o número de registros listados no filtro
Minha dúvida é : como posso chamar o valor dessa variável "$total" numa outra página do site
Já tentei os seguintes comandos :
<?php echo $_REQUEST['total'] ?>
e
<?php echo $_GET['total'] ?>
mas retorna o seguinte erro :
Notice: Undefined index: total in C:\xampp\htdocs\aulaetec\admin\categoria_lista.php on line 18
Alguém sabe poderia me dar uma auxílio ??
Grato
Cari Diogo, bom dia !
Bem , estou fazendo na mão mesmo sem framework.
Estou apenas "tentando" utilizar esse conceito no desenvolvimento de um "CRUD" para cadastrar a categoria dos produtos , qeu funciona da seguinte forma :
O Index verifica qual tipo de cadastro (categoria, produto) , faz a conexão c/ banco, chama o arquivo de ação para esse tipo de cadastro, verifica a ação para esse tipo de cadastro e chama a função. (index.php).
Um arquivo controla a ação requisitada pelo usuário (categoria_acao.php).
Outro arquivo controla as funções que esta ação vai gerar (categoria_manut.php).
E outros dois arquivos executam o crud propriamente dito : lista, cadastra, exclui, edita (categoria_lista.php e categoria_form.php).
A dúvida em questão ocorre na hora da listagem .
Segue o código da função que "lista" as categorias, contidas no arquivo categoria_manut.php :
<?php
class categoria_manut
{
var $resultado;
var $registros;
function categoria_lista()
{
$ordenacao = (isset($_REQUEST['ordem']) ? $_REQUEST['ordem'] : null);
if ($ordenacao == '')
$ordenacao = "descricao";
$filtro = (isset($_REQUEST['tf_pesquisa']) ? $_REQUEST['tf_pesquisa'] : null);
if ($filtro == '')
$filtrar_por = '';
else
$filtrar_por = $filtro;
$sql = "select * from categoria where descricao like '%".$filtrar_por."%' order by ".$ordenacao;
$this->resultado = $this->con->banco->Execute($sql);
$count = mysql_query($sql);
$total = mysql_num_rows($count);
echo "TOTAL DE REGISTROS PESQUISADOS : $total";
}
Está tudo funcionando como deveria, porém minha dúvida é como chamar esta última variável $total la no arquivo categoria_lista.php em qualquer lugar que seja. Dando um "echo" no arquivo categoria_manut.php, assim como fiz acima ele mostra esse resultado no topo do meu arquivo "categoria_lista.php" quando requisitado e eu gostaria de jogar num o valor num local próprio abaixo da listagem .
Gostaria de obter o comando que fizesse isso, pois como mencionei, sou novato na linguagem php. Estou programando nessa linguagem a apenas duas semanas.
Grato
Pessoal , só para dar uma clareada :
O arquivo index.php é o que recebe toda ação e chama o arquivo de categoria_acao :
<?php
require('conecta.php');
$tabela = isset($_REQUEST['tabela']);
$acao = isset($_REQUEST['acao']);
//echo "tabela = ".$tabela." ação = ".$acao;
if ($tabela == "catagoria")
require ('categoria_acao.php');
else
require ('admin.php');
?>
--------------------------------------------------------------------------------------------------------------
O arquivo categoria_acao é o que verifica qual a ação , faz a chamada das funções no arquivo categoria_manut :
<?php
require ('categoria_manut.php');
$oqfazer = new categoria_manut();
$acao = $_REQUEST['acao'];
if ($acao == 'listar')
{
//$filtro = (isset($_REQUEST['tf_pesquisa']) ? $_REQUEST['tf_pesquisa'] : null);
//echo "filtro = $filtro";
$oqfazer->categoria_lista();
require ('categoria_lista.php');
}
if ($acao == 'excluir')
{
$oqfazer->categoria_exclui();
$oqfazer->categoria_lista();
require ('categoria_lista.php');
}
if ($acao == 'incluir')
{
require ('categoria_form.php');
}
if ($acao == 'gravar_incluir')
{
$oqfazer->gravar_incluir();
$oqfazer->categoria_lista();
require ('categoria_lista.php');
}
if ($acao == 'gravar_alterar')
{
$oqfazer->gravar_alterar();
$oqfazer->categoria_lista();
require ('categoria_lista.php');
}
if ($acao == 'alterar')
{
$oqfazer->alterar();
require ('categoria_form.php');
}
?>
--------------------------------------------------------------------------------------------------------------
O arquivo categoria_manut que as funções :
<?php
class categoria_manut
{
var $resultado;
var $registros;
function categoria_manut()
{
$this->con = new conexao();
}
function categoria_lista()
{
$ordenacao = (isset($_REQUEST['ordem']) ? $_REQUEST['ordem'] : null);
if ($ordenacao == '')
$ordenacao = "descricao";
$filtro = (isset($_REQUEST['tf_pesquisa']) ? $_REQUEST['tf_pesquisa'] : null);
if ($filtro == '')
$filtrar_por = '';
else
$filtrar_por = $filtro;
$sql = "select * from categoria where descricao like '%".$filtrar_por."%' order by ".$ordenacao;
$this->resultado = $this->con->banco->Execute($sql);
$count = mysql_query($sql);
$total = mysql_num_rows($count);
echo "TOTAL DE REGISTROS PESQUISADOS : $total";
}
function categoria_exclui()
{
$sql = "delete from categoria where codigo = ".$_REQUEST['codigo'];
$this->resultado = $this->con->banco->Execute($sql);
}
function gravar_incluir()
{
$sql = "insert into categoria (descricao) values ('".$_REQUEST['tf_categoria_descr']."')";
$this->resultado = $this->con->banco->Execute($sql);
}
function gravar_alterar()
{
$sql = "update categoria set descricao = '".$_REQUEST['tf_categoria_descr']."' where CODIGO = ".$_REQUEST['codigo'];
$this->resultado = $this->con->banco->Execute($sql);
}
function alterar()
{
$sql = "select * from categoria where codigo = ".$_REQUEST['codigo'];
$this->resultado = $this->con->banco->Execute($sql);
$this->registros = $this->resultado->FetchNextObj();
}
}
?>
--------------------------------------------------------------------------------------------------------------
O arquivo categoria_lista é o que exibe o código onde eu gostaria de chamar a variável $total declarada no final do arquivo categoria_manut.
Para listar as categorias utilizo o seguinte código :
<?php
while($oqfazer->registros = $oqfazer->resultado->FetchNextObj())
{
?>
<tr>
<td><div align="center"><?php echo $oqfazer->registros->codigo;?></div></td>
<td><div align="left"> <?php echo $oqfazer->registros->descricao;?></div>
<div align="center"></div></td>
<td width="82"><div align="center"><a href="index.php?tabela=categoria&acao=alterar&codigo=<?php echo $oqfazer->registros->codigo;?>">ALTERAR</a></div></td>
<td width="77"><div align="center"><a href="index.php?tabela=categoria&acao=excluir&codigo=<?php echo $oqfazer->registros->codigo;?>">EXCLUIR</a></div></td>
</tr>
<?php
}
?>
--------------------------------------------------------------------------------------------------------------
Como sou iniciante, segui um passo a passo e deu tudo certo mas ainda não consegui chamar a variável $total em algum lugar específico do arquivo categoria_lista, após efetuar uma busca no banco. Como podem ver, no final da function categoria_lista() (arquivo categoria_manut), dou um comando :
"echo "TOTAL DE REGISTROS PESQUISADOS : $total"; que funciona corretamente, porém, como dito anteriormente, ele aparece no todo do categoria_lista quando efetuo uma busca, mas eu queria chamar a variável num local especifico , abaixo da listagem.
Será que ficou mais claro ?
Alguém poderia me ajudar ?
Muito obrigado
Olá pessoal , bom dia !
Depois de várias tentativas consegui resolver o problema :
No arquivo "categoria_manut", no final da "function categoria_lista()", coloquei o comando :
$this->tot = $total;
Como a variável $oqfazer instancia a function categoria_lista() no arquivo "categoria_acao.php" ,
no arquivo "categoria_lista" que é onde eu desejo chamar o valor da var $total apenas inseri o comando :
<?php
echo $oqfazer->tot;
?>
Realmente trabalhar em camadas dá muito trabalho mas vale à pena tentar para conhecer.
Obrigado
Olá,
A primeira questão é, você está aplicando MVC na mão, ou utilizando algum framework ?
Você tem a sua Model já criada ?
Seguindo a arquitetura MVC, este arquivo que você postou o código seria um Controller. Sendo assim, ele precisa de um Model para trabalhar em cima dos dados. Acredito que você pode criar uma propriedade(atributo) na sua Model, e apenas preenchê-la com o dado de acordo com o Controller.
Quanto ao erro de index, ocorre porque você está chamando uma índice da super global $_REQUEST e $_POST, que não existe. Para que este índice exista, você deve passá-lo via REQUEST($_GET e $_POST).
Abraço.