Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''POO''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Todas as áreas do Fórum

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento Web
    • Desenvolvimento frontend
    • Javascript
    • PHP
    • Ruby
    • Python
    • Java
    • .NET
    • Docker, Kubernets e outros ambientes
    • Desenvolvimento com Wordpress
    • Desenvolvimento de apps
    • Desenvolvimento ágil
    • Desenvolvimento de Games
    • Banco de Dados
    • Design e UX
    • Algoritmos & Outras Tecnologias
  • Entretenimento e uso pessoal
    • Segurança & Malwares
    • Geral
    • Boteco iMasters

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Encontrado 8 registros

  1. janir.matheus

    Duvida com POO

    Bom dia, Preciso de ajuda ajuda para resolver o problema de SIGSEGV, basicamente tennho um zconection dentro de uma classe e recebo erro quando tento acessá-lo. Segue um trecho da classe: unit unt_classconexao; {$mode objfpc}{$H+} interface uses Classes, SysUtils, ZConnection, ZDataset; type { tConexao } tConexao = class private public vConector : TZConnection; function Listar_Usuarios:TZReadOnlyQuery; procedure Conectar_Banco; end; implementation { tConexao } function tConexao.Listar_Usuarios: TZReadOnlyQuery; var zrquery : TZReadOnlyQuery; begin Conectar_Banco; try zrquery := TZReadOnlyQuery.Create(nil); zrquery.Connection := vConector; zrquery.SQL.Clear; zrquery.SQL.Text := 'SELECT * from tbl_profissionais'; zrquery.Open; Listar_Usuarios := zrquery; finally end; end; procedure tConexao.Conectar_Banco; begin //vConector := TZConnection.Create(nil); vConector.HostName := 'localhost'; vConector.Port := 3306; vConector.Database := 'Caps'; vConector.Protocol := 'mysql-5'; vConector.User := 'root'; vConector.Password := ''; vConector.Connected := true; end; end. Após isso tento fazer uso dessa classe para popular um DBGrid: unit unt_frmprincipal; {$mode objfpc}{$H+} interface uses Classes, SysUtils, DB, Forms, Controls, Graphics, Dialogs, Menus, DBGrids, ZConnection, unt_classconexao; type { Tfrm_principal } Tfrm_principal = class(TForm) DataSource1: TDataSource; DBGrid1: TDBGrid; MainMenu_frmPrincipal: TMainMenu; MenuItem_AplicativoSair: TMenuItem; N1: TMenuItem; MenuItem_AplicativoLogin: TMenuItem; MenuItem_Aplicativo: TMenuItem; procedure MenuItem_AplicativoLoginClick(Sender: TObject); private public vConexao : tConexao; end; var frm_principal: Tfrm_principal; implementation {$R *.lfm} { Tfrm_principal } procedure Tfrm_principal.MenuItem_AplicativoLoginClick(Sender: TObject); begin //vConexao := tConexao.Create; DataSource1.DataSet := vConexao.Listar_Usuarios; end; end. A mensagem de erro que recebo dá a entender que o problema ocorre logo que o zconnection começa a ser configurado, como vocês podem ver pelos trechos comentados eu tentei instanciar o componente também sem sucesso. Não tenho experiencia com POO e tenho certeza que estou cometendo um erro bobo, então peço uma explicação sobre como resolver isso. Agradeço de antemão a quem puder me ajudar. PS. Estou usando o Lazarus.
  2. sergiosfpereira

    Dúvida MVC para fins didáticos [Respondida]

    Boa tarde a todos, Estou estudando MVC e me deparei com a seguinte situação: Tenho uma View que precisa receber dados de dois Models diferentes, então no controller desta View eu tenho a função abaixo: public function teste($id) { $this->view->a = $this->getOneA($id); $this->loadModel('b'); $this->view->b = $this->model->getOneB($id); $this->view->render('app/teste'); } O cenário acima me retorna o esperado, pega os dados de A e de B e os deixa disponiveis para a View. Está correto utilizar esse método ? Se sim, eu deveria carregar o Model "b" no __construct do controller "a" ou diretamente na função do controller "a" como neste exemplo? Se não, qual a melhor maneira de obter dados de diferentes Models? OBS: todos os controllers são filhos do controller principal e todos os models são filhos do model principal. E me perdoem se eu estiver falando bobagem, como disse, estou aprendendo e a finalidade aqui é didatica e agradeço a quem puder contribuir.
  3. Olá, uma dúvida tenho uma classe que faz upload de imagens e cadastra no banco, como eu faço para executar uma outra classe ação função etc somente apos verificar que todo o upload dos arquivos foi realizado com sucesso?
  4. lucascientista

    Pesquisa e paginação com o PHP não funcionam

    Boa noite, galera é o seguinte eu estou montando um script que pesquisa no banco de dados e mostrar os resultados em uma página php, bem aí que está o problema eu pesquisei alguns sistemas de paginação e de pesquisa e acabei montando meu script, no meu script a pesquisa aparece na primeira página mas quando passo para a página adiante não me é mostrado resultado nenhum já verifiquei tudo e não consigo encontrar o erro, será que alguém pode me ajudar? <?php #Incluindo a conexão no banco de dados require_once '../dao/conexao/Conexao.php'; $conexao = Conexao::getInstance(); /***********************************************/ #Aqui começa a parte a paginação e pesquisa /**********************************************/ #Limitando o número máximo de resultados que serão mostrados na tela $maximo = 1; #Armazenando o valor da página atual $pagina = isset($_GET["pagina"])? ($_GET["pagina"]): '1'; #Subtraindo 1, porque os registro começam do zero como em um array $inicio = $pagina - 1; #Multiplicamos a quantidade de registros da pagina pelo valor da pagina atual $inicio = $maximo * $inicio; #Agora chega a parte em que fazemos o SELECT para contar os resultados $sql = "SELECT * FROM centroautomotivo"; $stmt = $conexao->prepare($sql); $stmt->execute(); $contagem = $stmt->fetchAll(PDO::FETCH_ASSOC); $total = 0; if(count($contagem)){ foreach ($contagem as $linhas) { #Armazenando o total de registros da tabela para fazer a paginação $total = count($contagem); } } /******************************************************************* * Aqui vai começar a parte da pesquisa, tornando o script em um só ********************************************************************/ #Recebe o termo da pesquisa se existir $termo = (isset($_GET["termo"])) ? ($_GET["termo"]) : ''; #Executa uma pesquisa com o termo pesquisado como parametro - Este SELECT irá servir também para a paginação if(empty($termo)){ //Nada aqui } else{ $sql = "SELECT * FROM centroautomotivo WHERE nomefantasia LIKE :nomefantasia or email LIKE :email ORDER BY idCentro LIMIT $inicio,$maximo"; $stm = $conexao->prepare($sql); $stm->bindValue(':nomefantasia', '%'.$termo.'%'); $stm->bindValue(':email', '%'.$termo.'%'); $stm->execute(); $autocenters = $stm->fetchAll(PDO::FETCH_ASSOC); } <?php require_once '../includes/header.php'; require_once '../controller/paginacaoPesquisaCentro.php'; ?> <div class="container mb-5"> <h1 class="text text-center">Centros Automotivos</h1> <p class="text text-center">Encontre o centro automotivo que mais se encaixa com você</p> <!--Formulário de pesquisa com paginação--> <form method="GET" action=""> <div class="d-flex flex-column bd-highlight mb-3"> <div class="p-2 bd-highlight"><img src="../img/Logotipo.png" class=" img-fluid rounded mx-auto d-block"></div> <div class="p-2 bd-highlight d-flex justify-content-center" style="margin-top: -10px;"><input type="text" name="termo" class="form-control" style=" width: 60%;" placeholder="Pesquise pelo Centro Automotivo!"/></div> <div class="p-2 bd-highlight d-flex justify-content-center"><button type="submit" class="btn btn-outline-primary"><i class="fas fa-search"></i>&nbsp;Pesquisar</button></div> </div> </form> <!--Fim do formuláio de pesquisa--> <!--Início dos resultados da pesquisa--> <?php if(!empty($autocenters)){?> <?php foreach ($autocenters as $autocenter) { ?> <center> <div class="card mb-3" style="max-width: 540px;"> <div class="row no-gutters"> <div class="col-md-4"> <img src="../controller<?php empty($autocenter["foto"])? 'images/pic.png' : $autocenter["foto"] ?>" class="card-img img-fluid" width="150px" height="150px"> </div> <div class="col-md-8"> <div class="card-body"> <p class="card-text text-justify"><?php $autocenter["nomefantasia"]?></p> <p class="card-text text-justify"><small class="text-muted"><?=$autocenter["email"]?></small></p> </div> </div> </div> </div> </center> <?php }//Fechamento do foreach?> <div id="alignpaginacao"> <?php //determina de quantos em quantos links serão adicionados e removidos $max_links = 6; //dados para os botões $previous = $pagina - 1; $next = $pagina + 1; //usa uma funcção "ceil" para arrendondar o numero pra cima, ex 1,01 será 2 $pgs = ceil($total / $maximo); //se a tabela não for vazia, adiciona os botões if($pgs > 1 ){ echo "<br/>"; //botao anterior if($previous > 0){ echo "<div id='botaoanterior'><a href=".$_SERVER['PHP_SELF']."?termo={$termo}?pagina=$previous><input type='submit' name='bt-enviar' id='bt-enviar' value='Anterior' class='button' /></a></div>"; } else{ echo "<div id='botaoanteriorDis'><a href=".$_SERVER['PHP_SELF']."?pagina=$previous><input type='submit' name='bt-enviar' id='bt-enviar' value='Anterior' class='button' disabled='disabled'/></a></div>"; } echo "<div id='numpaginacao'>"; for($i=$pagina-$max_links; $i <= $pgs-1; $i++) { if ($i <= 0){ //enquanto for negativo, não faz nada }else{ //senão adiciona os links para outra pagina if($i != $pagina){ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a> ..."; }else{ echo "<a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a>"; } } else{ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<span class='current'> ".$i."</span> ..."; }else{ echo "<span class='current'> ".$i."</span>"; } } } } echo "</div>"; //botao proximo if($next <= $pgs){ echo " <div id='botaoprox'><a href=".$_SERVER['PHP_SELF']."?termo={$termo}?pagina=$next><input type='submit' name='bt-enviar' id='bt-enviar' value='Proxima' class='button'/></a></div>"; }else{ echo " <div id='botaoproxDis'><a href=".$_SERVER['PHP_SELF']."?pagina=$next><input type='submit' name='bt-enviar' id='bt-enviar' value='Proxima' class='button' disabled='disabled'/></a></div>"; } } ?> </div> <?php }//Fechamento do if?> <!--Fim dos resultados da pesquisa--> <!--Início da paginação--> <!--Fim da paginação--> </div> <?php require_once '../includes/footer.php'; ?> Bem aí está meu código, fico muito agradecido se puderem me ajudar.
  5. Olá pessoal, estou precisando de um help ! Pois eu tenho uma classe assim: DadosComboClasse.php class DadosComboCidades { private $conecta_banco; public function __construct(){ $this->conecta_banco= new Conexao(); $this->conecta_banco->Conectar(); } public $array = array(); public $imoveis_tipo; public $cidade; public $bairro; public $bairro_id2; public $idcidade; public $negocios; public $qtd; public $bairro_id; public $id_cidade; public $id_tipo; public $id_bairro; public $nome_empresa_2; public $nome_empresa_3; public $nome_empresa_4; public $nome_empresa_5; public $titulo_cadastro; public $creci; public $facebook; public $twitter; public $linha_b; public $sloga; public $site; public $sqlT_1; public $sqlT_2; public $sqlT_3; public $sqlT_4; public $row; public $id='1'; function BuscarCidades(){ $result=$this->conecta_banco->banco; $pega_cidade=new ComboCidades();=> instancio os ids ou arrays quando são requisitados tipo assim : finalidade ID:1 Tipo ID:3,9 (array) $pega_cidade->PegarCidadeId(); $ativo='1'; ARRAYS ABAIXO: $this->id_negocio=$pega_cidade->id_negocio; $this->id_tipo=$this->id_cidade=$pega_cidade->id_tipo; $this->id_cidade=$pega_cidade->id_cidade; Acima eu pego os dados do array vindo da pagina combo_cidades.php if($pega_cidade->id_negocio): $negocio_array = explode(",",$pega_cidade->id_negocio); if($pega_cidade->id_tipo): $tipos_array = explode(",", $pega_cidade->id_tipo); if($pega_cidade->id_cidade): $cidades_array = explode(",", $pega_cidade->id_cidade); foreach($negocio_array as $negocio): foreach($tipos_array as $tipos): foreach($cidades_array as $cidades): $sqlT_1 = $result->prepare("SELECT i.id,t.tipo_nome,c.cidade,b.bairro,i.ativo FROM imoveis i LEFT JOIN imoveis_tipo t ON (t.id = i.id_tipo_imovel) LEFT JOIN cidades c ON (c.id = i.id_cidade)LEFT JOIN bairros b ON (b.id = i.bairro) WHERE i.id_tipo_imovel IN ('".$tipos."') AND i.id_cidade IN ('".$cidades."') AND i.ativo=? ORDER BY i.bairro DESC"); $sqlT_1->bind_param('s',$ativo); $sqlT_1->execute(); $this->sqlT_1=$sqlT_1->get_result(); Acima com get_result eu gero os dados que preciso do array abaixo são outras chamadas do sql que vou implementar na solução acima $sqlT_2=$result->prepare("SELECT id, bairro,ativo FROM bairros WHERE id AND ativo=? ORDER BY bairro"); $sqlT_2->bind_param('s',$ativo); $sqlT_2->execute(); $this->sqlT_2=$sqlT_2->get_result(); "'%".$negocio."%'"; $where = " i.ativo =? "; if( $negocio) { $where .="AND i.id_negocio_tipo LIKE ?"; }if( $tipos ) { $where .=" AND i.id_tipo_imovel IN ('".$tipos."')"; } if( $cidades ) { $where .=" AND i.id_cidade IN ('".$cidades."')"; } if($this->bairro_id2) { $where .=" AND i.bairro IN ('".$this->bairro_id2."')"; } $sqlT_3 = $result->prepare("SELECT i.id,i.ativo,n.tipo,b.bairro,t.tipo_nome,c.cidade,i.id_negocio_tipo, COUNT(b.bairro) AS Qtd FROM imoveis i LEFT JOIN negocio_tipo n ON (n.id= i.id_negocio_tipo) LEFT JOIN imoveis_tipo t ON (t.id = i.id_tipo_imovel) LEFT JOIN cidades c ON (c.id = i.id_cidade) LEFT JOIN bairros b ON (b.id = i.bairro) WHERE ".$where." GROUP BY b.bairro HAVING COUNT( b.bairro) > 0 ORDER BY b.bairro "); //EXECUTA A QUERY $conta=$sqlT_3->num_rows(); $sqlT_3->bind_param('ss',$ativo,$negocio); $sqlT_3->execute(); $this->sqlT_3=$sqlT_3->get_result(); endforeach; endforeach; endforeach; endif; endif; endif; } } Abaixo a classe combocidades.php require_once("tags2.php"); //RECEBE PARÃMETRO class ComboCidades{ private $conecta_banco; public function __construct(){ $this->conecta_banco= new Conexao(); $this->conecta_banco->Conectar(); } public $id_negocio; public $id_tipo; public $busca_cidade; public $id_cidade; public function PegarCidadeId(){ function filter( $str ){ return addslashes( $str ); } function getPost( $key ){ return isset( $_GET[ $key ] ) ? filter( $_GET[ $key ] ) : null; } $this->id_negocio = getPost('id_negocio'); $this->id_tipo = getPost('id_tipo'); $this->id_cidade=getPost('id_cidade'); } } class ExibirBairros extends DadosComboCidades{ public function Mostrar(){ extract( $_GET, EXTR_OVERWRITE); $busca_bairro=new DadosComboCidades(); $busca_bairro->BuscarCidades(); $busca_bairro->id_cidade; if($busca_bairro->id_cidade==0): echo "<div class='atencao'></div><div class='atencao_text'>Selecione uma Cidade para pesquisar por Bairros !</div> "."<br />"; endif; echo "<div class='sel'></div>"."<br />"; /* MONTA CRITERIOS DE BUSCA */ //QUERY echo '<br /><div class="botao-modal"><button type="button" class="botao_marcar" title="Todos" id="todos" onclick="marcardesmarcar();">Selecionar Todos</button> </div>'; Aqui onde chamo os array já convertidos pelo foreach na classe DadosComboCidades.php echo'<br /><br /><div style=" font-weight:bold; margin-left:30px;">'.$busca_bairro->imoveis_tipo.' (s) </div>'; echo'<br /><br /><div style=" font-weight:bold; margin-left:30px;">'.$busca_bairro->cidade.'</div>'; echo'<div class="form_modal"><form name="form1">'.'<br /><br />'; echo '<input type="checkbox" id="c'.$bairro.'" class="marcar" value="'.$bairro_id.'" name="bairro[]"/><label for="c'.$bairro_id.'"><span></span></label> '.$bairro.' - '.$cidade.' ('.$qtd.') <br />'; //FECHA IF (row) //PRINTA O RESULTADO if($bairro_id): echo FALSE; else: echo "<div class='atencao'></div><div class='atencao_text'>Não existem imóveis para essa Busca !</div> "."<br />"; echo'</form></div></b><br />'; endif; } } Abaixo onde istancio e chamo a classe DadosComboCidades $f=new ExibirBairros(); $f->Mostrar(); RESUMINDO: O que acontece é que eu não consigo pegar o array no seu índice, ou seja , por exemplo se o id tipo for ID: 1 rola beleza a busca e a impressão dos dados mas se eu for buscar 2 informações no mesmo id tipo , assim => ID: array(5,9) , na outra página só consigo pegar o último id em vez de buscar 5,9 só busca o 9, por eu estar acessando o array de outra página , e pelo que entendi , acessando o array de outra página ele só percorre o último em vez do índice. Mas se eu jogar todo código dentro da classe ai roda beleza , mas não quero misturar objeto com html (isso é má prática na programação), por isso estou remodelando meu código em POO Se alguém tiver uma solução eu agradeço . :)
  6. fbezerra

    PDO button

    bom dia galera, estou usando Vue js com poo, o problema que estou tendo é que eu não estou conseguindo entender de como passar para o button o id para exclusao, segue abaixo a onde eu parei. index.php <div id="modalMostrar"> <div id="descricoes" class="scroll"> <div class="card" v-for="descricao in descricoes"> <div class="card-header"> <h3 class="card-title">{{descricao.desc_data}}</h3> </div> <div class="card-body"> {{descricao.descricao}} <a class="fa fa-times btn btn-danger right ml3" id="removerRegistro" v-bind:data-codigo="descricao.cli_id"></a> <button class="fa fa-edit btn btn-primary right"></button> </div> </div> </div> </div> script.js //exibir registro------- $(document).on('click', '#abrirModal', function(event){ event.preventDefault(); var id = $(this).attr('data-id')//pegando id window.desc = new Vue({ el: '#descricoes', data: { descricoes: [] } }); $.ajax({ url: 'ajax/clienteDescricao.php?id=' + id, type: 'GET', dataType: 'JSON' }).done((e) => { desc.descricoes = e; }) $('#modalMostrar').iziModal('open'); }); //remover Registro--------------------------------------------- $(document).on('click', '#removerRegistro', function(event){ event.preventDefault(); var id = $(this).data('codigo');//pegando id window.desc = new Vue({ el: '#descricoes', data: { descricoes: [] } }); $.ajax({ url: 'ajax/removerRegistro.php?id=' + id, type: 'GET', dataType: 'JSON' }).done((e) => { desc.descricoes = e; }) }); removerRegistro.php <?php require_once "../database/conexao.php"; if(isset($_GET["id"]) && !empty($_GET["id"])){ $conex = new conexao(); echo json_encode($conex->deleteDesc($_GET["id"])); } conexao.php public function deleteDesc($cli_id){ $sql = $this->conexao->prepare("DELETE FROM descricao WHERE cli_id = :cli_id"); $sql->bindValue(':cli_id', $cli_id); $sql->execute(); } ele não está pegando o id.....
  7. Salve pessoal tudo bem ! Depois de muito tempo venho aqui pedir uma ajuda , bem vamos lá... Eu tenho uma classe POO e nela pego algumas variáveis que vem como array e uso o implode para enviar através do load do javascript. Até aí tranquilo, eu resgato com $_GET usando o explode, e depois uso implode para separar elas novamente. Montei essa rotina toda por se tratar de uma o paginação se reload , bem dinâmica , só que ao passar os parâmetros e as variáveis no bind_param da erro de parâmetros, dizendo que : Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement E entendi que o erro diz que o número de parametros não condiz com o número de variáveis, E AI QUE ENTRA A MINHA DOR DE CABEÇA... Mesmo eu usando implode eu consigo separar as variáveis mas dando um var_dump elas ficam juntas e a execução do prepare lê como uma única variável. Segue o código abaixo: <?php class DadosFiltroBusca { private $conecta_banco; public function __construct(){ $this->conecta_banco= new Conexao(); $this->conecta_banco->Conectar(); } public $ativo; public $negocio ; public $tipo; public $cidade; public $bairro; public $id_negocio; public $id_tipo; public $id_cidade; public $id_bairro; public $foto; public $where; public $sqlT_1; public $sqlT_2; public $total; public $current_page; public $get_total_rows; public $item_per_page; public $total_pages; public $total_records; public $pgst; public $page_number; public $page_position ; public $filtro_dados; public $site; public function BuscarFiltroBusca(){ $result=$this->conecta_banco->banco; $this->item_per_page = 4; if(isset($_POST["page"])){ $this->page_number =(isset($_POST['page'])) ? (int)$_POST['page'] : 1; if(!is_numeric($this->page_number)){die('Página inválida!');} //incase of invalid page number }else{ $this->page_number = 1; //if there's no page number, set it to 1 } $negocio = $_GET['negocio']; $this->id_tipo= explode(",",$_GET['tipo']); $this->id_cidade=explode(",",$_GET['cidade']); $this->id_bairro=explode(",",$_GET['bairro']); $idi=implode('', $this->id_tipo); echo "<br /><br />"; $in=(is_array($this->id_tipo) ? count($this->id_tipo):0); $id_tipo = implode(',', array_fill(0, $in, '?')); echo " :: " . $id_tipo_2 =join('', array_fill(0, 1, $idi)); echo " :: ".$types =str_repeat('s',$in); echo "<br /> VAR:: ".$tipo =str_repeat(''.$id_tipo_2.'',1); var_dump ($tipo ); $idi1='5'; $idi2='11'; foreach ($this->id_cidade as $key=> $id_cidade): foreach ($this->id_bairro as $key=> $id_bairro): $ativo='1'; "%".$negocio."%"; $id_tipo; $id_cidade; $id_bairro; echo "<br /><br />RESULTADO :: ". $t='ss'.$types.'ss',$ativo,$negocio,$tipo ,$id_cidade,$id_bairro."<br /><br />"; $where = " i.ativo =? "; if( $negocio) { $where .="AND i.id_negocio_tipo LIKE ?"; }if( $id_tipo ) { $where .=" AND i.id_tipo_imovel IN ($id_tipo)"; } if( $id_cidade ) { $where .=" AND i.id_cidade=?"; } if($id_bairro) { $where .=" AND i.bairro=?"; } $sqlT_1 =$result->prepare("SELECT i.*, t.tipo_nome, b.bairro, n.tipo, c.cidade FROM imoveis i LEFT JOIN negocio_tipo n ON (n.id = i.id_negocio_tipo) LEFT JOIN imoveis_tipo t ON (t.id = i.id_tipo_imovel) LEFT JOIN cidades c ON (c.id = i.id_cidade) LEFT JOIN bairros b ON (b.id = i.bairro) WHERE ".$where.""); $sqlT_1->bind_param('ss'.$types.'ss',$ativo,$negocio,$tipo ,$id_cidade,$id_bairro); $sqlT_1->execute(); $this->sqlT_1 = $sqlT_1->get_result(); $this->get_total_rows+=$this->sqlT_1->num_rows; if($this->get_total_rows >0 ){ $this->total_pages = ceil($this->get_total_rows / $this->item_per_page); } $this->sqlT_1->num_rows; //break records into pages //get starting position to fetch the records if($this->get_total_rows > 0 ){ $this->page_position = (($this->page_number * $this->item_per_page) -$this->item_per_page); $this->pgst = ceil($this->get_total_rows / $this->item_per_page); } $sqlT_1->close(); endforeach; endforeach; $sqlT_2 =$result->prepare("SELECT i.id, i.valor,i.locacao, i.foto_exibicao,i.latitude,i.longitude, i.quartos, i.garagem,i.mapa, i.codigo, t.tipo_nome, n.tipo AS negocio, c.cidade, c.uf, b.bairro FROM imoveis i LEFT JOIN negocio_tipo n ON (n.id = i.id_negocio_tipo) LEFT JOIN imoveis_tipo t ON (t.id = i.id_tipo_imovel) LEFT JOIN cidades c ON (c.id = i.id_cidade) LEFT JOIN bairros b ON (b.id = i.bairro) WHERE ".$where." ORDER BY i.id DESC LIMIT ?,?"); $sqlT_2->bind_param('sssssss',$ativo,$negocio,$idi,$id_cidade,$id_bairro,$this->page_position,$this->item_per_page); $sqlT_2->execute(); $this->sqlT_2=$sqlT_2->get_result(); } } ?> Vejam no código que existem 2 consultas, um select é para montar a páginação sem reflesh e a outra é para buscar os dados do filtro de busca , e para deixar mais claro, se eu colocar no lugar cláusula IN em vez de IN (?) colocar IN ($variavel ) que já foi separada com o implode ela busca perfeitamente as informações , exemplo abaixo: $where = " i.ativo =? "; if( $negocio) { $where .="AND i.id_negocio_tipo LIKE ?"; }if( $id_tipo ) { $where .=" AND i.id_tipo_imovel IN (?)"; AQUI É AONDE TEM O ARRAY, E AS OUTRAS ESTÃO SEM ARRAYS PARA TESTAR APENAS ESSA VARIÁVEL } if( $id_cidade ) { $where .=" AND i.id_cidade=?"; } if($id_bairro) { $where .=" AND i.bairro=?"; } Acima da aquele erro de; Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement Mas agora logo abaixo vai de boa e forma a paginação e trás os valores: $where = " i.ativo =? "; if( $negocio) { $where .="AND i.id_negocio_tipo LIKE ?"; }if( $id_tipo ) { $where .=" AND i.id_tipo_imovel IN ($id_tipo)"; } if( $id_cidade ) { $where .=" AND i.id_cidade=$id_cidade"; } if($id_bairro) { $where .=" AND i.bairro=$id_bairro"; } E vi que o problema esta aqui abaixo: $sqlT_1->bind_param('ss'.$types.'ss',$ativo,$negocio,AQUI É A VARIÁVEL COM ARRAY -> $tipo ,$id_cidade,$id_bairro); Notem que esta variável dentro dos parâmetros ($types) ela trás o número de parâmetros conforme o critério de busca do filtro de busca, E este parametro como variável eu pego com o str_repeat E se eu montar as variáveis manualmente tipo > $tipo1=15'; e $tipo2='11'; e jogar lá no bind param ela chama de boa tipo assim : $tipo1='15'; $tipo2='11' $sqlT_1->bind_param('ss'.$types.'ss',$ativo,$negocio,$tipo1,$tipo2 ,$id_cidade,$id_bairro); se eu fizer desta forma chama perfeitamente, e vi que o problema é na hora de separar as variáveis do array. Já usei serialize, join, json_decode e nada . Se alguém souber de como contornar agradeço. E desculpe pela imensa explicação , mas é para entederem melhor :) Obrigado !
  8. jardeldint

    Alteração no MAPOs

    Olá pessoal! Acredito que alguns daqui do grupo conhece o sistema de Ordens de Serviço MAPOS, que foi desenvolvido em CodeIgniter. Estou fazendo uma alteração nele, para que quando o usuário for receber uma parte de um pagamento do cliente, o restante apareça no cadastro de cliente. Por exemplo: O Cliente X tinha um débito de R$ 500,00. Más no dia Y ele pagou R$ 100,00, restando então R$ 400,00. No Models do Financeiro, fiz essa alteração abaixo na linha do "function edit": <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Financeiro_model extends CI_Model { function __construct() { parent::__construct(); } function get($table,$fields,$where='',$perpage=0,$start=0,$one=false,$array='array'){ $this->db->select($fields); $this->db->from($table); $this->db->order_by('data_vencimento', 'asc'); $this->db->limit($perpage,$start); if($where){ $this->db->where($where); } $query = $this->db->get(); $result = !$one ? $query->result() : $query->row(); return $result; } function getById($id){ $this->db->where('idClientes',$id); $this->db->limit(1); return $this->db->get('clientes')->row(); } function add($table,$data){ $this->db->insert($table, $data); if ($this->db->affected_rows() == '1') { return TRUE; } return FALSE; } function edit($table,$data,$fieldID,$ID){ $this->db->select('clientes.saldoDevedor, lancamentos.clientes_id, lancamentos.valor, lancamentos.idLancamentos'); $this->db->from('lancamentos,clientes'); $this->db->where($fieldID,$ID); $this->db->update($table, $data); if ($this->db->affected_rows() >= 0) { return TRUE; } return FALSE; } function delete($table,$fieldID,$ID){ $this->db->where($fieldID,$ID); $this->db->delete($table); if ($this->db->affected_rows() == '1') { return TRUE; } return FALSE; } function count($table) { return $this->db->count_all($table); } } E no Views do lançamento criei esse campo, dentro do Modal de Editar Lançamento: <div class="span4" style="margin-left: 0"> <label for="valor-pagar">Valor a Receber/Pagar</label> <input type="text" name="tipoPagar" value="" /> <input type="hidden" id="Pagar" name="idPagar" value="" /> </div> E no Controlers na função Editar, alterei com essas informações: Eu so inseri esses comandos que vocês odem olhar no codigo abaixo: public function editar(){ if(!$this->permission-> checkPermission($this->session->userdata('permissao'),'eLancamento')){ $this->session->set_flashdata('error','Você não tem permissão para editar lançamentos.'); redirect(base_url()); } $this->load->library('form_validation'); $this->data['custom_error'] = ''; $urlAtual = $this->input->post('urlAtual'); $this->form_validation->set_rules('descricao', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('fornecedor', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('valor', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('vencimento', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('pagamento', '', 'trim|xss_clean'); if ($this->form_validation->run() == false) { $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false); } else { $vencimento = $this->input->post('vencimento'); $pagamento = $this->input->post('pagamento'); try { $vencimento = explode('/', $vencimento); $vencimento = $vencimento[2].'-'.$vencimento[1].'-'.$vencimento[0]; $pagamento = explode('/', $pagamento); $pagamento = $pagamento[2].'-'.$pagamento[1].'-'.$pagamento[0]; } catch (Exception $e) { $vencimento = date('Y/m/d'); } $capturaValorTotal = $this->input->post('valor'); $capturaValorPagar = $this->input->post('valor-pagar'); $valorDevido = $capturaValorTotal - $capturaValorPagar; $inserindoBanco = "INSERT INTO `clientes` set `saldoDevedor`='".$valorDevido."'"; $executandoQuery = mysql_query($inserindoBanco); $data = array( 'descricao' => $this->input->post('descricao'), 'valor' => $this->input->post('valor'), 'valor-pagar' => $this->input->post('valor-pagar'), 'data_vencimento' => $vencimento, 'data_pagamento' => $pagamento, 'baixado' => $this->input->post('pago'), 'cliente_fornecedor' => $this->input->post('fornecedor'), 'forma_pgto' => $this->input->post('formaPgto'), 'numCheque' => $this->input->post('numCheque'), 'numCartao' => $this->input->post('numCartao'), 'valCartao' => $this->input->post('valCartao'), 'tipo' => $this->input->post('tipo') ); if ($this->financeiro_model->edit('lancamentos',$data,'idLancamentos',$this->input->post('id')) == TRUE) { $this->session->set_flashdata('success','lançamento editado com sucesso!'); redirect($urlAtual); } else { $this->session->set_flashdata('error','Ocorreu um erro ao tentar editar lançamento!'); redirect($urlAtual); } } $this->session->set_flashdata('error','Ocorreu um erro ao tentar editar lançamento.'); redirect($urlAtual); $data = array( 'descricao' => $this->input->post('descricao'), 'valor' => $this->input->post('valor'), 'data_vencimento' => $this->input->post('vencimento'), 'data_pagamento' => $this->input->post('pagamento'), 'baixado' => $this->input->post('pago'), 'cliente_fornecedor' => set_value('fornecedor'), 'forma_pgto' => $this->input->post('formaPgto'), 'tipo' => $this->input->post('tipo') ); print_r($data); } public function editar(){ if(!$this->permission->checkPermission($this->session->userdata('permissao'),'eLancamento')){ $this->session->set_flashdata('error','Você não tem permissão para editar lançamentos.'); redirect(base_url()); } $this->load->library('form_validation'); $this->data['custom_error'] = ''; $urlAtual = $this->input->post('urlAtual'); $this->form_validation->set_rules('descricao', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('fornecedor', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('valor', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('vencimento', '', 'trim|required|xss_clean'); $this->form_validation->set_rules('pagamento', '', 'trim|xss_clean'); if ($this->form_validation->run() == false) { $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false); } else { $vencimento = $this->input->post('vencimento'); $pagamento = $this->input->post('pagamento'); try { $vencimento = explode('/', $vencimento); $vencimento = $vencimento[2].'-'.$vencimento[1].'-'.$vencimento[0]; $pagamento = explode('/', $pagamento); $pagamento = $pagamento[2].'-'.$pagamento[1].'-'.$pagamento[0]; } catch (Exception $e) { $vencimento = date('Y/m/d'); } $capturaValorTotal = $this->input->post('valor'); $capturaValorPagar = $this->input->post('valor-pagar'); $valorDevido = $capturaValorTotal - $capturaValorPagar; $inserindoBanco = "INSERT INTO `clientes` set `saldoDevedor`='".$valorDevido."'"; $executandoQuery = mysql_query($inserindoBanco); $data = array( 'descricao' => $this->input->post('descricao'), 'valor' => $this->input->post('valor'), 'valor-pagar' => $this->input->post('valor-pagar'), 'data_vencimento' => $vencimento, 'data_pagamento' => $pagamento, 'baixado' => $this->input->post('pago'), 'cliente_fornecedor' => $this->input->post('fornecedor'), 'forma_pgto' => $this->input->post('formaPgto'), 'numCheque' => $this->input->post('numCheque'), 'numCartao' => $this->input->post('numCartao'), 'valCartao' => $this->input->post('valCartao'), 'tipo' => $this->input->post('tipo') ); if ($this->financeiro_model->edit('lancamentos',$data,'idLancamentos',$this->input->post('id')) == TRUE) { $this->session->set_flashdata('success','lançamento editado com sucesso!'); redirect($urlAtual); } else { $this->session->set_flashdata('error','Ocorreu um erro ao tentar editar lançamento!'); redirect($urlAtual); } } $this->session->set_flashdata('error','Ocorreu um erro ao tentar editar lançamento.'); redirect($urlAtual); $data = array( 'descricao' => $this->input->post('descricao'), 'valor' => $this->input->post('valor'), 'data_vencimento' => $this->input->post('vencimento'), 'data_pagamento' => $this->input->post('pagamento'), 'baixado' => $this->input->post('pago'), 'cliente_fornecedor' => set_value('fornecedor'), 'forma_pgto' => $this->input->post('formaPgto'), 'tipo' => $this->input->post('tipo') ); print_r($data); } O que eu não estou entendendo é onde esta ou onde estão os meus erros, pois não grava nada no Banco de Dados, sendo q eu criei na tablea clienes o campo saldoDevedor. E ainda por cima, quando faço o teste, utilizando o debito de cliente já existente, informo o valor que foi pago, e diz que foi alterando com sucesso, más na realidade nada acontece. Fico no aguardo se alguém puder me ajudar!
×

Informação importante

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