Ir para conteúdo
xRafaah

Incluir campo para inserir no banco de dados

Recommended Posts

Boa tarde,

Estou fazendo algumas adaptações em um código que já está rodando normalmente. O que eu quero fazer é o seguinte:

Eu já tenho o formulário com os inputs e ele já ta cadastrando os dados normalmente, porém eu adicionei o input "vencimento" do tipo data no meu formulário. Agora, eu não estou conseguindo incluir ele na parte do PHP para de fato ele cadastrar no mysql o valor desse input.

 

Segue o código php:

<?php
require_once dirname(__FILE__).'/../consultas/sqlDocumento.php';
ob_start();
$operacao=new documento();
if(isset($_REQUEST['fltr'])){
	$filtroPesquisa=$_REQUEST['fltr'];
}
if(isset($_SESSION['idUsuario'])){
	$idUsuario=$_SESSION['idUsuario'];
}
if(isset($_SESSION['idPerfil'])){
$idPerfilUsuario=$_SESSION['idPerfil'];	
}
if(isset($_REQUEST['acao'])){
	$acao=$_REQUEST['acao'];
}
if(isset($_GET['acao'])){
	$acao=$_GET['acao'];
}
if(isset($_REQUEST['codigo'])){
		$idDocumento=$_REQUEST['codigo'];
 		$dataArquivo=$_REQUEST['data'];
 		$nomeArquivo=$_REQUEST['nome'];
}
if($acao=="listarDocumento"){ /* Páginação de resultado*/
	if(isset($filtroPesquisa)){
$_SESSION['limiteDePaginas']=ceil ($operacao->contarRegistrosPaginacaoResultado($acao,$_SESSION['idUsuario'],$_SESSION['idPerfil'],$filtroPesquisa)/$operacao->resultadosPorPagina);
}
}
if(isset($_REQUEST['pg'])){
	$paginaAtual= $_REQUEST['pg'];
}
if(isset($_SESSION['limiteDePaginas']) and isset($paginaAtual)){
if($paginaAtual > $_SESSION['limiteDePaginas']){ /*Evita que a variável receba um valor diferente da quantidade real de páginas :) */
 		$paginaAtual=1;
   		$_REQUEST['pg']=1;
}// fim do if paginaAtual	
}
if(isset($_REQUEST['pg'])){
	$paginaAtual= $_REQUEST['pg'];
}
if(isset($_REQUEST['pg'])){
	$numeroPagina=$_REQUEST['pg'];
}
if($acao=="cadastrarDocumento"){
	$operacao->contaRegistrosTipoDoc();
	$operacao->contaRegistrosNivelAcesso();
	$operacao->listarTipoDocumento();
	$operacao->listarNivelAcesso();
	require('formCadastraDocumento.php');
}//fim do if 

if($acao=="gravarDocumento"){
	$operacao->gravarDocumento();
}
if($acao=="listarDocumento"){
	if(!isset($numeroPagina))
	      $numeroPagina=0;
	if($numeroPagina <= 0){
	 	$paginaAtual=1;
		$_REQUEST['pg']=1;
	  }else{
		  $paginaAtual=$numeroPagina;
}
/* determina o limite de registros que será utilizado na consulta*/
$proximaPagina = ($paginaAtual * $operacao->resultadosPorPagina) - $operacao->resultadosPorPagina;
	$operacao->listarDocumento($idUsuario,$idPerfilUsuario,$proximaPagina,$operacao->resultadosPorPagina);  	
	require('formListaDocumento.php');
}

if($acao=="excluirDocumento"){
	$operacao->excluirDocumento($idDocumento,$dataArquivo,$nomeArquivo,$idUsuario,$idPerfilUsuario);  	
}

if($acao=="pesquisarDocumento"){
  if(!isset($numeroPagina))
	      $numeroPagina=0;
	if($numeroPagina <= 0){
	 	$paginaAtual=1;
		$_REQUEST['pg']=1;
	  }else{
		  $paginaAtual=$numeroPagina;
	   }
$proximaPagina = ($paginaAtual * $operacao->resultadosPorPagina) - $operacao->resultadosPorPagina;
$operacao->pesquisarDocumento($idUsuario,$filtroPesquisa,$_SESSION['idPerfil'],$proximaPagina,$operacao->resultadosPorPagina);
require('formListaDocumento.php');
}
ob_end_flush();
?>

 

 

Se alguém tiver como dar uma força, eu agradeço muuito! =))

 

Abraço.

Sem Título-1.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá legal, mas posta ("usando o botão SPOILER e CODE do editor aqui do fórum") o arquivo que faz insert no banco de dados.

E também informe como está o atributo name do input no formulário.

Se o form for validado por ajax tem que mostrar a função que faz isso.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Taí Osmar

O input ta com name "vencimento" e id "vencimento"

 

<?php
ob_start();
session_start();
require_once dirname(__FILE__).'/../util/conecta.php';
require_once dirname(__FILE__).'/../util/config.php';//arquivo de configuração da tradução
require_once  dirname(__FILE__).'/../util/i18n.php';  //Funções para o gettext
	class documento{
		
	  var 	$resultado;
	  var   $registros;
	  var   $qtdRegistrosTipoDoc;
	  var   $qtdRegistrosNivelAcesso;
	  var   $resultadoNivelAcesso;
	  var   $dataAtual;
	  var   $resultadosPorPagina;
	   
function __construct(){ 
		   
		   $this->conecta=new conexao();
		   $this->resultadosPorPagina=6;//Quantidade de registros por página
}	
		
function listarTipoDocumento(){
			$sql="Select * from tipo_doc";
			$this->resultado=$this->conecta->banco->Execute($sql);
		     			
}// fim do function listarTipoDocumento.
		
function listarNivelAcesso(){
			
			$sql="Select * from nivel_acesso";
			$this->resultadoNivelAcesso=$this->conecta->banco->Execute($sql);
		}//fim do function listarNivelAcesso
		
function listarDocumento($idUsuario,$idPerfilUsuario,$proximaPagina,$resultadosPorPagina){
		  $sql="";
		 if($idPerfilUsuario==1){
				$sql="Select * from documento as d,tipo_doc as tp where d.id_tipo=tp.id_tipo ORDER by id_doc DESC LIMIT $proximaPagina, $resultadosPorPagina"; 
			}else{
				$sql="Select * from documento as d,tipo_doc as tp
			     	  where (id_usuario=".$idUsuario." or id_nivel=1) and (d.id_tipo=tp.id_tipo) ORDER by id_doc DESC LIMIT $proximaPagina, $resultadosPorPagina";
				}
			$this->resultado=$this->conecta->banco->Execute($sql);
		}//fim do function listarDocumento
		
function pesquisarDocumento($idUsuario,$descricaoDocumento,$idPerfilUsuario,$proximaPagina,$resultadosPorPagina){
$sql="";
if($idPerfilUsuario==1){//Se for administrador
	   	$sql="Select * from documento as d,tipo_doc as tp where (nome like '%".$descricaoDocumento."%' 
		or id_doc like '%".$descricaoDocumento."%' or autor like '%".$descricaoDocumento."%' 
		or extensao like '%".$descricaoDocumento."%' or data like '%".$descricaoDocumento."%' 
		or apelido like '%".$descricaoDocumento."%' or tp.descricao like '%".$descricaoDocumento."%') and (d.id_tipo=tp.id_tipo) 
		ORDER by id_doc DESC LIMIT $proximaPagina, $resultadosPorPagina";
	}
	else{
		$sql="Select * from documento as d,tipo_doc as tp  
		where (id_usuario=".$idUsuario." or id_nivel=1) and (nome like '%".$descricaoDocumento."%' 
		or id_doc like '%".$descricaoDocumento."%' or autor like '%".$descricaoDocumento."%' 
		or extensao like '%".$descricaoDocumento."%' or data like '%".$descricaoDocumento."%' 
		or apelido like '%".$descricaoDocumento."%' or tp.descricao like '%".$descricaoDocumento."%') and (d.id_tipo=tp.id_tipo) 
		ORDER by id_doc DESC LIMIT $proximaPagina, $resultadosPorPagina";
	}

		$this->resultado=$this->conecta->banco->Execute($sql);
		if($this->registros=$this->resultado->RecordCount()==0){
			geraAlertaInformacao(getTranslateMsg("<h3>"."No record has been located!")."<h3>","error","center","listarDocumento");
			}//fim do if

}//fim do function pesquisarDocumento
		
function excluirDocumento($idDocumento,$dataArquivo,$nomeArquivo,$idUsuario,$idPerfilUsuario){
		  $sql="delete from documento 
		  where id_doc=".$idDocumento."";
		  $dataAtual= date('d-m-Y');
		  if($this->verificaAutorDocumento($idDocumento,$idUsuario) or $idPerfilUsuario==1){//só permite que o autor e o administrador possam excluir um documento
		  		  
		  	 if((unlink(dirname(__FILE__)."/../arquivos/".$dataArquivo."/".$nomeArquivo))){ //tenta remover o arquivo dentro do direórtio
					if($this->resultado=$this->conecta->banco->Execute($sql)){
							geraAlertaInformacao("<h3>".getTranslateMsg("The document has been successfully deleted!")."<h3>","success","center","listarDocumento");
							$this->RegistrarAcao($_SESSION['idUsuario'],$nomeArquivo,$dataAtual,'current_time',getTranslateMsg("Deleted Document"));//log da operação
					 }else {
					      geraAlertaInformacao("<h3>".getTranslateMsg("Failed to delete document!").   "<h3>","success","center","listarDocumento");
					    }//fim do if sql
				
			}else{
					geraAlertaInformacao("<h3>".getTranslateMsg("Unable to remove file!")."<h3>","error","center","listarDocumento");

		  	  }//fim do if que apaga o arquivo
		} else {
             geraNotificacao("<h3>".getTranslateMsg("Failed to delete the document. The document does not belong to the logged-in user!")."</h3>","error","div#areaNotificacao");
		} //fim do if ehAutorDocumento
	}//fim do function excluirDocumento
	
function selecionarDocumento($idDocumento){
		 $sql="Select * from documento
		       where id_doc=".$idDocumento."";
		 }
                              
function gravarDocumento(){
		   
		   $dataAtual= date('d-m-Y');/*Y-m-d*/
		   $arquivosPermitidos=array("pdf","PDF","odt","ODT","jpg","JPG","png","PNG","jpeg","JPEG","ods","ODS","odp","ODP");
		   $nomeArquivoCompleto=$_FILES['arquivoDescricao']['name'];
		   $extensao=pathinfo($nomeArquivoCompleto, PATHINFO_EXTENSION); //pega a extensao do arquivo
		   $nomeArquivo=pathinfo($nomeArquivoCompleto,PATHINFO_FILENAME); //pega o nome do arquivo
		   if(in_array($extensao,$arquivosPermitidos)){ //verifica se o arquivo tem a extensao permitida
				   if(!is_dir(dirname(__FILE__)."/../arquivos/".$dataAtual)){ //Verifica se existe um diretório com a data atual dentro de arquivos
				        mkdir(dirname(__FILE__)."/../arquivos/".$dataAtual); // cria o diretório  no formato ano-mes-dia dentro de arquivos
			   		}//fim do if que veirifica se o diretório existe
			 
		  	 //Verifica se o arquivo já existe
		   	if(is_file(dirname(__FILE__)."/../arquivos/".$dataAtual."/".$nomeArquivoCompleto)){

			geraNotificacao("<h2>".getTranslateMsg("A file with this name already exists on the server.")."<h2>","error","div#areaNotificacao");   
			   } else {
			   				/*tenta mover o arquivo para o servidor*/
			   	if(move_uploaded_file($_FILES['arquivoDescricao']['tmp_name'],dirname(__FILE__)."/../arquivos/".$dataAtual."/".$nomeArquivoCompleto)){ 


							$sql="insert into documento (id_nivel,id_usuario,id_tipo,extensao,data,autor,nome,apelido,vencimento) 
				  			     values (".$_REQUEST['cbxNivelAcesso'].",'".$_SESSION['idUsuario']."',".$_REQUEST['cbxTipoDocumento'].",'".$extensao."','".$dataAtual."','".$_SESSION['loginUsuario']."','$nomeArquivo','".$_REQUEST['txtNomeDocumento']."')";
									
				if($this->resultado=$this->conecta->banco->Execute($sql)){
				  	
				  geraPedidoContinuarCadastro("<h3>".getTranslateMsg("The document was saved successfully. Do you want to continue registering?")."<h3>","success","center","cadastrarDocumento","listarDocumento",getTranslateMsg("Yes"),getTranslateMsg("No"));

						$this->RegistrarAcao($_SESSION['idUsuario'],$nomeArquivoCompleto,$dataAtual,'current_time',"Gravou Documento");//log da operação
								}else{
								geraPedidoContinuarCadastro("<h2>".getTranslateMsg("Failed to save document.")."<h2><BR>".getTranslateMsg("Do you want to try again?"),"error","center","cadastrarDocumento","listarDocumento",
									getTranslateMsg("Yes"),getTranslateMsg("No"));
							 		} //fim do if executa SQL
					  	}else{	
					  	 	 geraNotificacao("<h2>".getTranslateMsg("Failed to upload file!")."<h2>","error","div#areaNotificacao");
					  	 	  }//fim do if move_uoload
			   }//fim do if que verifica se o arquivo existe
		}else {geraNotificacao("<h2>".getTranslateMsg("File type not allowed!")."<h2>","error","div#areaNotificacao");}// fim do if in_array
}//fim do function gravarDocumento
	 
function verificaAutorDocumento($idDocumento,$idUsuario){
		 
		 $sql="select * from documento 
		        where id_doc=".$idDocumento." and id_usuario=".$idUsuario."";
		 $this->resultado=$this->conecta->banco->Execute($sql);
		 $this->registros=$this->resultado->FetchNextObject();
		 
		 if($this->registros=$this->resultado->RecordCount()!=0)
		   		return true;
		   else 
		   		return false;
}    

function contarRegistrosPaginacaoResultado($acao,$idUsuario,$idPerfilUsuario,$filtroPesquisa){
	$sql="";
	$sqlFiltrado="";
if($idPerfilUsuario==1){
	  $sql="select *  from documento";
	  $sqlFiltrado="Select * from documento where nome like '%".$filtroPesquisa."%' 
		or id_doc like '%".$filtroPesquisa."%' or autor like '%".$filtroPesquisa."%' 
		or extensao like '%".$filtroPesquisa."%' or data like '%".$filtroPesquisa."%'
		or apelido like '%".$filtroPesquisa."%'";
	}
	else{
		$sql="Select * from documento where (id_usuario=".$idUsuario." or id_nivel=1)";
		$sqlFiltrado="Select * from documento where (id_usuario=".$idUsuario." or id_nivel=1) and nome like '%".$filtroPesquisa."%' 
		or id_doc like '%".$filtroPesquisa."%' or autor like '%".$filtroPesquisa."%' 
		or extensao like '%".$filtroPesquisa."%' or data like '%".$filtroPesquisa."%' 
		or apelido like '%".$filtroPesquisa."%'";
		
	}
	if($acao=="listarDocumento"){
			$this->resultado=$this->conecta->banco->Execute($sql);
	 	 }
			else{
    	       $this->resultado=$this->conecta->banco->Execute($sqlFiltrado);
	        }
		 $this->registros=$this->resultado->FetchNextObject();
         return $this->qtdRegistrosTipoDoc=$this->resultado->RecordCount();
		   
}//fim do function contarRegistrosPaginacaoResultado


function contaRegistros(){
	$sql="select *  from documento";
	$this->resultado=$this->conecta->banco->Execute($sql);
	$this->registros=$this->resultado->FetchNextObject();
    return $this->qtdRegistrosTipoDoc=$this->resultado->RecordCount();
	
}

function contaRegistrosTipoDoc(){
 $sql="select *  from tipo_doc";
 $this->resultado=$this->conecta->banco->Execute($sql);
 $this->registros=$this->resultado->FetchNextObject();
 return $this->qtdRegistrosTipoDoc=$this->resultado->RecordCount();	
	
	
}
	   
function contaRegistrosNivelAcesso(){
		  
		 $sql="select *  from nivel_acesso";
		 $this->resultado=$this->conecta->banco->Execute($sql);
		 $this->registros=$this->resultado->FetchNextObject();
         return $this->qtdRegistrosNivelAcesso=$this->resultado->RecordCount();
		   
}
	   
function RegistrarAcao($idUsuario,$nomeDocumento,$data,$hora,$acao){
			$sql="insert into log_acesso_documento(id_usuario,nome_documento,data,hora,operacao)
		      values('".$idUsuario."','$nomeDocumento','$data',$hora,'".$acao."')";
			$this->resultado=$this->conecta->banco->Execute($sql);
		     			
}// fim do function registrar acao sobre o documento
	
}
ob_end_flush();
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Jefferson andre
      Ola, estou criando um contador de acessos diario mas nao funciona, a tabela tem o campo data no formato date e o campo contador int(10)
       
      A ideia eh verificar a data e se nao existir incluir na tabela, se existir adicionar ao contador
       
      Parece que o erro esta no formato da data, nem manualmente consigo incluir na tabela via localhost ou na hospedagem da google
       
      Agradeço qualquer ajuda
       
      <?php // fazendo uma conexão com o banco de dados include("conexao.php"); // grava a data atual em uma variavel date_default_timezone_set('America/Sao_Paulo'); $date = date('d-m-Y'); //$sql = "SELECT codigo FROM contador"; $resultado = $arquivo->query("SELECT data,contador FROM contador_diario WHERE data = '$date'"); if (mysqli_num_rows($resultado)== true){ // registro ja existe } else { // resultado nao encontrado entao inserir $sql = "INSERT INTO contador_diario ('data', 'contador') VALUES ('$date', '1')"; if ($arquivo->query($sql) == TRUE) { echo "Data cadastrada com sucesso"; } else { echo "Erro: " . $sql . "<br>" . $arquivo->error; } } // refaz a pesquisa para registrar o contador $resultado = $arquivo->query("SELECT data,contador FROM contador_diario WHERE data = '$date'"); // igualar a array a uma variavel $linha=mysqli_fetch_array($resultado); $cod_2 = $linha["contador"]+1; // lista a variavel //echo "<font face='Arial'><span class='style14'>$cod_2</span></font>"; $sql = "UPDATE contador_diario SET contador=$cod_2"; if ($arquivo->query($sql) === TRUE) { // echo "Alteração efetuada com sucesso"; } else { // echo "Erro alterando o contador de visitas diario" . mysqli_error($arquivo); } // fecha a conexao mysqli_close($arquivo); ?>  
    • Por gersonab
      Tenho este sql que funciona normal:
      <?php $idtor = (int)$_GET['id_tor']; $dia = $_GET['dia']; $sql3 = "SELECT * FROM cantos INNER JOIN campeonato ON id_camp = id_campeonato INNER JOIN torneio ON id_tor = id_torneio WHERE data = :dia AND id_torneio = :idtor ORDER BY cantosfim DESC, pontos DESC, cantos DESC"; $stmt = $pdo->prepare($sql3); $stmt->bindParam(':idtor', $idtor); $stmt->bindParam(':dia', $dia); $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { ?> porém este outro não retorna nada, nem erro...
      <?php $idtor = (int)$_GET['id_tor']; $consul = "SELECT id_cantos, id_torneio, id_campeonato, SUM(cantosfim) AS cantfin, SUM(pontos) AS pontfin FROM cantos INNER JOIN campeonato ON id_camp = id_campeonato INNER JOIN torneio ON id_tor = id_torneio WHERE id_tor = :idtor ORDER BY pontfin DESC, cantfin DESC"; $stmt = $pdo->prepare($consul); $stmt->bindValue(':idtor', $idtor); $stmt->execute(); while ($lin = $stmt->fetch(PDO::FETCH_ASSOC)) { ?> não consigo encontrar o erro.
    • Por Alex Dias
      <?php //CONECTA COM O BANCO DE DADOS require_once("adm/conecta.php"); //SQL $sql = "SELECT DISTINCT tb_comentarios.ID_COMENTARIOS, tb_comentarios.DATA_COMENTARIOS, tb_comentarios.NOME_COMENTARIOS, tb_comentarios.COMENTARIOS, tb_respostas.ID_RESPOSTAS, tb_respostas.DATA_RESPOSTAS, tb_respostas.NOME_RESPOSTAS, tb_respostas.RESPOSTAS FROM tb_comentarios, tb_respostas WHERE tb_comentarios.ID_COMENTARIOS = tb_respostas.ID_COMENTARIOS ORDER BY DATA_COMENTARIOS DESC"; $resultado = mysql_query($sql) or die ("Não foi possível realizar a consulta ao banco de dados"); // CHAMA OS DADOS DA TABELA while ($linha=mysql_fetch_array($resultado)) { $id_comentarios = $linha["ID_COMENTARIOS"]; $data_comentarios = $linha["DATA_COMENTARIOS"]; $nome_comentarios = $linha["NOME_COMENTARIOS"]; $email_comentarios = $linha["EMAIL_COMENTARIOS"]; $comentarios = $linha["COMENTARIOS"]; $status = $linha["STATUS"]; $id_artigo = $linha["ID_ARTIGO"]; $id_respostas = $linha["ID_RESPOSTAS"]; $data_respostas = $linha["DATA_RESPOSTAS"]; $nome_respostas = $linha["NOME_RESPOSTAS"]; $email_respostas = $linha["EMAIL_RESPOSTAS"]; $respostas = $linha["RESPOSTAS"]; $status = $linha["STATUS"]; $id_artigo = $linha["ID_ARTIGO"]; $id_comentarios = $linha["ID_COMENTARIOS"]; $data_portugues1= implode("/", array_reverse(explode("-", "$data_comentarios"))); $data_portugues2= implode("/", array_reverse(explode("-", "$data_respostas"))); echo" <table width='1200' align='center' border='0' cellspacing='0' cellpadding='0'> <tr> <td width='100' valign='top'><img src='images/usuario.jpg'></td> <td width='900' valign='top'><p align='left'><font size='3'><strong>$nome_comentarios</strong> dia $data_portugues1</font></p><br><p align='justify'><font size='3'>$comentarios</font><p></td> <td width='200' align='center' valign='middle'><a href='#'><img src='images/responder.jpg' bordeer='0'></a></td> </tr> </table> "; echo"<br><br> <table width='1200' align='center' border='0' cellspacing='0' cellpadding='0'> <tr> <td width='100' valign='top'>&nbsp;</td> <td width='100' valign='top'><img src='images/usuario2.jpg'></td> <td width='800' valign='top'><p align='left'><font size='3'><strong>$nome_respostas</strong> dia $data_portugues2</font></p><br><p align='justify'><font size='3'>$respostas</font><p></td> <td width='200' align='center' valign='middle'><a href='#'><img src='images/responder.jpg' bordeer='0'></a></td> </tr> </table> <br><br><br><br>"; }//FECHA FOR ?> Boa tarde amigos, estou batendo cabeça aqui com meu Blog, meu Blog tem duas tabelas MySQL uma chamada tb_comentarios para armazenasr os comentários dos artigos postados, a outra tabela é chamada de tb_respostas para armazenar as respostas desses comentários dos usuários. Está tudo ok imprimindo os comentários e respostas na tela bem legal, o único problema é que os comentários estão duplicando, as respostas estão ok, mas os comentários estão duplicando.
       
      O Correto seria o comentário ficar lá e as respostas todas em baixo desse comentário, a questão é que cada resposta dada acaba repetido o comentário, então fica sempre o comentário e a resposta um abaixo do outro, e se tiver três respostas desse comentário, a dupla comentário x resposta se repete por três vezes sendo que o ideal seria só um comentário e as três respostas em baixo, e não consigo determinar que o comentário não se repita, ja usei DISTINCT mas não resolve.

      Segue abaixo o código e anexo o PRINT da tela para vocês entenderem o que tá acontecendo.


       

    • Por clickanapolis
      Bom dia pessoal, preciso criar uma query onde eu vou pegar a lista de fornecedores e contas a pagar mais ou menos assim:
       
      select * from clientes a, cp b where a.id_cliente = b.id_cliente o problema é que o cliente quer que order by seja por quem ele mais deve para o que menos deve.
       
      O problema que temos 5 status de pagamento no contas a pagar.
       
      E o meu sum deve fazer a soma para ordenação apenas em 3, como eu faria para minha query ordenar fazendo a soma nos status 1, 2 e 3?
    • Por stewartcintra@
      Tenho um sistema de contas em php mysql, preciso exibir todas as contas do mes agrupadas por categoria e o campo valorR$ para saber o total em reais de cada categoria.
      Não estou conseguindo, como posso fazer isso?
×

Informação importante

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