Jump to content
marsolim

chamar função com mysqli select em outra página

Recommended Posts

galera procurei muito na net e no forum mas não encontrei nada que me ajude. tô tentando automatizar uns códigos aqui e minha ideia é usar functions na página de conexão pra quando tiver que mudar alguma coisa - exemplo quando mudou de mysql pra mysqli - eu mexer só nessa página, então queria botar meus select, insert, update nessa página e só chamar elas passando parametro. um exemplo

 

página conect.php

    function cons($cons){
        $con = mysqli_connect("server", "user", "senha", "banco") or die("Erro: " . mysqli_error($con));
        mysqli_set_charset($con,"utf8");
        $cns = $cons;
        $res = $con->query($cns);
        $qtd_user = mysqli_num_rows($res); // LINHA 15
    }

na index.php

    include_once("../conect.php");
    cons("SELECT * FROM tbl_user WHERE id_user='$id_user' ORDER BY data_cadastro DESC, hora_cadastro DESC" or die("Erro na consulta: " . mysqli_error($cns)));
    if($qtd_user > 0){
        $corpo = "<table><tr><th class='th_title' colspan=8>LISTA DE ATIVIDADES</th></tr><tr><th>id</th><th>Data</th><th>Hora</th><th>Cidade</th><th>Estado</th><th>País</th></tr>";
            while($linha = $res -> fetch_array()){
                $corpo .= "<tr><td>" . $linha["id_visitante"] . "</td><td>" . date_format(date_create($linha["data_cadastro"]), "d/m/Y") . "</td><td>" . date_format(date_create($linha["hora_cadastro"]), "H:i:s") . "</td><td>" . $linha["cidade"] . "</td><td>" . $linha["estado"] . "</td><td>" . $linha["pais"] . "</td></tr>";
            }
        $corpo .= "<tr><th class='th_title' colspan=8>Quantidade de atividades: " . $qtd_user . "</th></tr></table>";
    }else{
        $corpo = "<div class='sem_dado'>SEM DADOS</div>";
    }
    mysqli_free_result($res); // LINHA 229
    mysqli_close($con); // LINHA 231

os erros que aparece

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /path/conect.php on line 15
Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, null given in /path/adm/index.php on line 229
Warning: mysqli_close() expects parameter 1 to be mysqli, null given in /path/adm/index.php on line 231

já tentei colocando a conexão fora da função e chamando um global $con dentro dela mas não funcionou. também tentei return $cns mas nada.

alguma ideia ou algum link que me possa ajudar nisso? agradeço

 

EDIÇÃO 1

bem não consegui ainda fazer isso então dividi em duas paginas uma com a conexão e a outra com as chamadas tipo

 

pagina conect

    $con = mysqli_connect("server", "user", "senha", "banco") or die("Erro: " . mysqli_error($con));
    mysqli_set_charset($con,"utf8");

 

pagina conect_prepara

    $res = $con->query($cns);
    $tipo_cns = strtolower(substr($cns, 0, 6));
    $num_user = (($tipo_cns == "select") ? mysqli_num_rows($res) : 0);
    $num_user = (($tipo_cns == "insert") ? $mysqli->insert_id : $num_user);

 

pagina index

    include_once("../conect.php");
    $cns = "SELECT * FROM tbl_user WHERE id_user='$id_user' ORDER BY data_cadastro DESC, hora_cadastro DESC" or die("Erro na consulta: " . mysqli_error($cns));
    include_once("../conect_prepara.php");

    if($num_user > 0){
        $corpo = "<table><tr><th class='th_title' colspan=8>LISTA DE ATIVIDADES</th></tr><tr><th>id</th><th>Data</th><th>Hora</th><th>Cidade</th><th>Estado</th><th>País</th></tr>";
            while($linha = $res -> fetch_array()){
                $corpo .= "<tr><td>" . $linha["id_visitante"] . "</td><td>" . date_format(date_create($linha["data_cadastro"]), "d/m/Y") . "</td><td>" . date_format(date_create($linha["hora_cadastro"]), "H:i:s") . "</td><td>" . $linha["cidade"] . "</td><td>" . $linha["estado"] . "</td><td>" . $linha["pais"] . "</td></tr>";
            }
        $corpo .= "<tr><th class='th_title' colspan=8>Quantidade de atividades: " . $num_user . "</th></tr></table>";
    }else{
        $corpo = "<div class='no-work'>Não há dados para serem exibidos no momento - " . $id_user . ".</div>";
    }

acho que por hora isso funciona apesar do que acho que pode dar problema se eu precisar fazer um select dentro dum while de outro select aí no caso vou ter que achar um jeito tipo fazer o primeiro select e jogar os dados num array pra depois fazer outro e usar o array no lugar do primeiro select ou aninhar as consultas de algum jeito mas acho que por hora ta bom mas ainda to tentando achar um jeito de fazer numa function num arquivo so de conexão. ja fiz progresso pois agora a função ja conecta no banco e não dá mensagem de erro mas ainda não consegui retornar os dados da conexão pra pagina index pra prosseguir. se alguem tiver uma luz eu agradeço muito. minhas tentativa ta assim

 

pagina de conexão

    function cons($cons){
        $con = mysqli_connect("server", "user", "senha", "banco");
        mysqli_set_charset($con,"utf8");
        $cns = $cons;
        $res = $con->query($cns);
        $tipo_cns = strtolower(substr($cns, 0, 6));
        $num_user = (($tipo_cns == "select") ? mysqli_num_rows($res) : 0);
        $num_user = (($tipo_cns == "insert") ? $mysqli->insert_id : $num_user);
        return $con;
    }

 

pagina index

    include_once("../conecta.php");
    $cns = cons("SELECT * FROM tbl_user WHERE id_user='$id_user' ORDER BY data_cadastro DESC, hora_cadastro DESC" or die("Erro na consulta: " . mysqli_error($cns)));
    // aqui deveria fazer o while pra trazer os dados mas não tá retornando nada. não dá erro como antes mais também não retorna nada. já tentei mudar o return pra $cns, $res, já tentei usar global nas variaveis mas não deu ainda.

ideias são bem vindas hehehe

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By asacap1000
      Salve galera, preciso de uma ajuda aqui....eu preciso trazer algumas fotos de usuarios que estão gravados em outro servidor e mostrar em uma página.
       
      O que estou usando inicialmente apenas para carregar as fotos e depois vou personalizar com outras funções. Mas o basico é esse:
       
      <? $diretorio = "//SRVCAMARAFRIA/Sistema de Acesso/AcessoNet/fotos/"; // esta linha não precisas é só um exemplo do conteudo que a variável vai ter // selecionar só .jpg $imagens = glob($diretorio."*.jpg"); // fazer echo de cada imagem foreach($imagens as $imagem){ echo '<a href="'.$imagem.'"><img src="'.$imagem.'" /></a>'; } ?> Ele busca as imagens mas não as mostra segue print do resultado:
       

       
      Se eu posicionar o cursor em cima de uma delas ela aparece no rodapé o caminho e o nome da foto
       

       
       
      O link para abrir ela eu nem preciso apenas para mostrar na tela, poderiam me ajudar?
       
      Desde já Agradeço.
    • By Rui PG
      Boa tarde, Pessoal"
       
      Sou iniciante em SQL, em uma tabela do nosso BD tempos um campo que possui o registro com as informações do paciente concatenado com uma serie de valores que não precisamos.
      Como eu faço, para montar uma select para extrair desse registro apenas o que está entre aspas?
       
      O meu registro está assim:
      a:28:{i:18;s:13:"Sérgio silva";i:19;s:11:"1199900001";i:20;s:0:"n/i";i:21;s:0:"n/i";i:23;s:15:"Amil One Health";i:24;s:0:"n/i";i:27;s:0:"n/i";i:31;s:1:"2";i:32;s:0:"n/i";i:33;s:1:"2";i:34;s:0:;}
       
      Eu preciso dele assim:
      "Sérgio silva";"1199900001";"n/i";"n/i";"Amil One Health";"n/i";"n/i";"2";"n/i";"2";
       
      Observação, esses monte de valores a:28: ...etc... eles mudam, não são valores fixos, se fossem até usaria o replace, mas são vários valores.
       
      Depois que eu chegar nessa mineração: "Sérgio silva";"1199900001";"n/i";"n/i";"Amil One Health";"n/i";"n/i";"2";"n/i";"2";
      Como eu faço para alocar cada valor em campo campo qualquer, pode ser uma tabela temporária, tipo assim:
       
      |nome           |campo 1        |Campo 2 |Campo 3 |Campo 4               |Campo  5 | .....
      |Sérgio silva|1199900001|n/i              |n/i              |Amil One Health|n/i               |n/i|2|n/i|2| .....
       
      Muito obrigado amigos
       
       
       
       
       
       
    • By Israel Lira
      Caros, não estou sabendo implementar duas consultas quando o usuário clicar no (button). É uma proposta de apresentar a folha, mostrar os funcionários pelo SELECT .  Atualmente, consigo fazer com que ele veja se existe a referencia e se não existir apresenta um span de não encontrado. Preciso que faça de imediato uma sub-consulta trazendo os dados do select abaixo e se possivel implementar um exemplo calculando por exemplo um desconto de inss, por exemplo.: Salário: 1200,00  * 8% = 96,00.    
       
      consultaBanco("SELECT funcionario.nome, funcionario.cargo, cargo.salario, folhamesano.mesano FROM funcionario, cargo, folhamesano WHERE funcionario.cargo = cargo.descricao AND folhamesano.mesano='{$codigoMes}'");
       
      Segue primeiro o consulta folha:
       
       <!DOCTYPE html>
      <html>
      <head>
          <title>Consultar Folha</title>
          <link rel="stylesheet" type="text/css" href="style.css" >
          <!-- 
              Por comodidade, eu estou usando jquery direto do site deles, isso é mto comum e recomendado inclusive.
          -->
          <script src="https://code.jquery.com/jquery-3.4.0.min.js" type="text/javascript"></script>
          <script src="js/jquery.mask.min.js" type="text/javascript"></script>
          <script type="text/javascript">
              $(document).ready(function(){
                  $("#cpf").mask("000.000.000-00");
                  $("#rg").mask("0.000.000");
                  $("#horario").mask("00:00");
                  $("#Mesano").mask("00/0000");
              });
              /**
               * Este aqui é o nosso método Javascript que irá fazer a requisição assincrona
               */
              function pesquisarMesano(codigoMes) {
                  document.getElementById('mensagem_erro').innerText = '';
                  /** Teste*/
                  document.getElementById('mensagem_folha').innerText = '';
                  /** Teste*/
                  
                  $.get(
                      '/FOLHADEPAGAMENTO/RECIBOFOLHA/obtemFolhaPorCodigo.php',
                      { codigoMes: codigoMes },
                      
                      function (response) {
                          
                          if (response.erro === 404) {
                              /**
                               * Eu nao estou usando o Jquery para obter os elementos, isso pq na versao do Javascript dos navegadores modernos, nao é mais necessario o jquery para isso
                               */
                              document.getElementById('formFolhamesano').reset();
                              document.getElementById('mensagem_erro').innerText = 'Folhamesano #'+codigoMes+' não encontrado!';
                              
                              return;
                          }
                          document.getElementById('mensagem_folha').innerText = 'Folhamesano #'+codigoMes+' teste!';
                          document.getElementById('mesano').value = response.mesano;
                          document.getElementById('nome').value = response.nome;
                          document.getElementById('cargo').value = response.cargo;
                          document.getElementById('salario').value = response.salario;
                          document.getElementById('descricao').value = response.descricao;
                          document.getElementById('horario').value = response.horario;
                      },
                      'json'
                  );
              }
          </script>
          
          <style type="text/css">
        
              #corposistema{
                  width: 1200px auto;
                  height: 500px auto;      
              }
              #corpocadastro{
                  border: solid gray 5px;
                  width: 300px;
                  height: 210px;
                  border-radius: 5px;
                  margin: 120px auto;
                  background: white;
                  padding: 50px;
              }
              #botao{
                  color: #fff;
                  margin-left: 370px;
                  margin-top: -170px;
                  background: #337ab7;
                  border-radius: 85%;
                  background: #337ab7;
                  text-align: center;
                  padding-top: 0 auto;
              }
              #botaocancelar{
                  height: 70%;
                  color: #fff;
                  margin-left: 370px;
                  margin-top: -5px;
                  padding-top: 0 auto;
                  background: #337ab7;
                  text-align: center;
                  border-radius: 85%;
              }
          </style>
      </head>
      <?php
      include "banco_de_dados.php";

      if(!empty($_GET['codigoMes'])){
          $codigoMes = (int) $_GET['codigoMes'];
          
          $row = consultaBanco("SELECT funcionario.nome, funcionario.cargo, cargo.salario, folhamesano.mesano from funcionario, cargo, folhamesano WHERE funcionario.cargo = cargo.descricao AND folhamesano.mesano='{$codigoMes}'");
          $codigoMes = $row['codigoMes'];
          $nome = $row['nome'];
          $rg = $row['rg'];
          $cpf = $row['cpf'];
          $descricao = $row['descricao'];
          $horario = $row['horario'];
          
      } else $codigoMes = $nome = $rg = $cpf = $descricao = $horario = null;
          
      ?>
      <body>
          <div id="corposistema">
              <div id="corpocadastro">
                  <form id="formFolhamesano" action="/FOLHADEPAGAMENTO/RECIBOFOLHA/CADASTROFOLHA.php" method="POST">
                          <p>
                                  <label>Competência </label>
                                  <input name="codigoMes" id="Mesano" type="text" style="width: 20%" value="<?=$codigoMes?>" required/>
                                  <button type="button" onclick="pesquisarMesano(this.form.elements['codigoMes'].value)">Pesquisar</button>
                                  <span style="color: red" id="mensagem_erro"></span><br/>
                                  <span style="color: red" id="mensagem_folha"></span><br/>
                          </p>
                          
                  </form>
                  <form action="/FOLHADEPAGAMENTO/RECIBOFOLHA/FOLHACADASTRADOS.php" method="POST">
                      <div id="botaocancelar"> 
                          <p>
                             <input type="submit" id="btn" value=" Cancelar  " />
                          </p>
                      </div>    
                  </form>
              </div>    
          </div>
      </body>
      </html>
       
      ___________________________________________________
       
      <?php
      require "banco_de_dados.php";
      function obtemfolhamesanoPorId($codigoMes) {
          return consultaBanco("SELECT funcionario.nome, funcionario.cargo, cargo.salario, folhamesano.mesano FROM funcionario, cargo, folhamesano WHERE funcionario.cargo = cargo.descricao AND folhamesano.mesano='{$codigoMes}'");
      }
      /** 
       * Esse é o script que irá responder a requisição assincrona que criamos no Javascript
       *
       * Aqui eu espero que a query string codigoFuncionario esteja definida (Pode estar vazia, mas precisa estar definida, por exemplo, codigoCargo= ) por isso usei isset
       *
       *
       */
      if (isset($_GET['codigoMes'])) {
          $codigoMes = $_GET['codigoMes'];
          $nome = $_GET['nome'];
          /** Novamente encapsulando em métodos para adicionar contexto ao código */
          $folhamesano = obtemfolhamesanoPorId($codigoMes);
          if (empty($folhamesano)) {
              /** Como este é um código bem simples, usei o die para escrever o valor de saida
               * isso pq eu quero neste caso o texto seja escrito e a aplicação pare aqui
               * Eu poderia user um echo seguido de um return, mas para adicionar contexto
               * eu usei um método que deixe claro a intenção. Morre aqui e escreve o que eu estou pedindo.
               */
              die(json_encode([
                  'erro' => 404,
              ]));
          
          $tabela = '<table border="1" border: solid gray 5px;>';//abre table
                                                $tabela .='<thead>';//abre cabeçalho
                                                $tabela .= '<tr>';//abre uma linha
                                                $tabela .= '<th width="410px">Nome</th>';
                                                $tabela .= '<th width="300px">cargo</th>';
                                                $tabela .= '<th width="140px">salario</th>';
                                                $tabela .= '</tr>';//fecha linha
                                                $tabela .='</thead>'; //fecha cabeçalho
                                                $tabela .='<tbody>';//abre corpo da tabela
                                              $db = pg_connect("port=55432 dbname=folha user=fortesrh password=1234");
                                              
                                              $consulta=pg_query($db,"SELECT funcionario.nome, funcionario.cargo, cargo.salario from funcionario INNER JOIN cargo ON funcionario.cargo = cargo.descricao ORDER BY funcionario.nome"); 
                                              
                                              while ($linha = pg_fetch_array($consulta)) {//declaração da variável linha trazendo o resultado da query
                                                $tabela .= '<tr>'; // abre uma linha
                                                $tabela .= '<td>'.$linha['nome'].'</td>'; // coluna nome do funcionario
                                                $tabela .= '<td align="center">'.$linha['cargo'].'</td>'; // coluna cargo
                                                $tabela .= '<td align="center">'.$linha['salario'].'</td>'; // coluna salario
                                                $tabela .= '</tr>'; // fecha linha
                                                
                                              }
                                               $tabela .='</tbody>'; //fecha corpo
                                               $tabela .= '</table>';//fecha tabela
                                              echo $tabela; // imprime

          }
          /** Neste caso eu quero escrever e sair (Se nada acontecer depois, ele irá sair sozinho), poderia usar o die, sim. Mas nao é um ponto onde precisa morrer, apenas sair um texto */
          echo json_encode($folhamesano);
      } else {
          die(json_encode([
              'erro' => 404,
          ]));
                                                
      }
       
    • By manoaj
      Boa tarde pessoal!
      Tenho As seguintes tabelas no meu banco:
       
      Tabela->clientes(Essa tabela guarda os clientes)
      Tabela-> Produtos (Essa tabela guarda os  produtos)
      Tabela -> Tamanhos (Essa tabela guarda os tamanhos e os preços)
      Tabela->Relação de tamanho (Essa tabela guarda a relação dos tamanhos que cada produto pode ter)
      Tabela-> Pedidos (Essa tabela guarda o pedido do cliente com tamanho e quantidade)
       
      E o problema e o seguinte: Como q eu faço uma seleção nessas tabelas para saber o valor total do pedido do meu cliente com base no tamanho e quantidade escolhida?
    • By camisbales
      Olá,
      preciso resolver o seguinte exercício:
      Uma professora de programação, cansada de que os estudantes cheguem tarde, decidiu que vai cancelar a aula se há poucos presentes.
      Ela representa a entrada dos estudantes como um array de tempos de chegada tarde, em minutos. Por exemplo, se um estudante chegou 10 minutos atrasado, outro 5 minutos antes da hora, outro com 3 minutos de atraso, e outro pontual, poderá representar assim:
      var alunosDaSegunda = [10, -5, 3, 0];
      Com essa informação e a quantidade mínima de estudantes para que suceda o curso, a professora quer saber se a aula acontecerá. Por exemplo, supondo que a quantidade mínima de estudantes para que a aula aconteça é de 2 alunos, então o curso da segunda-feira se realizará, porque houve um estudante que foi pontual e um estudante que chegou cedo.
       acontece(alunosDaSegunda, 2)
      true
      Mas se a quantidade mínima fosse 3, a aula não aconteceria:
       acontece(alunosDaSegunda, 3)
      false
      Escreva as seguintes funções: 1. acontece, que diz se a aula sucederá de acordo com o array dos estudantes que entraram. 2. aberturas, que utiliza um array com os arrays dos estudantes que entraram nos outros dias, e a quantidade mínima de estudantes, e diga quais os dias em que as aulas aconteceram e quais não. Por exemplo:
      aberturas([alunosDaSegunda, alunosDaTerça, alunosDaQuarta], 2)
      [true, false, false]
      A seguir o código que eu escrevi e os erros apresentados:
      function acontece (alunosDia, quorum){
          let resultado = [];
          for (let i = 0; i < alunosDia.length; i++){
          if (alunosDia <= 0){
          resultado.push (alunosDia);}
          if (resultado.length >= quorum) {
          return true;}
          }
      }
          
      function aberturas (alunosDia, quorum){
          let resultadoArray = [];
          for (let i = 0; i < alunosDia.length; i++){
          resultadoArray.push(acontece(alunosDia, quorum));
          }
      }
      ERROS
      acontece([10, -5, 3, 0], 4) - deveria retornar false;
       acontece([10, -5, 3, 0], 3 - deveria retornar false;
       aberturas([[0, 0, 3, 0], [1, 2, 4, 5], [0, 0, -1]], 3) - undefined deepEqual [ true, false, true ];
       aberturas([[0, 0, -3, 0], [1, 2, 4, 5], [0, 0, -1]], 4) - undefined deepEqual [ true, false, false ].
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.