Bobrinha 4 Denunciar post Postado Julho 14, 2014 Ola pessoal estou começando a estudar pdo e logo vem as duvidas, bom vamos la, eu criei um arquivo chamado 3 arquivos como segue abaixo, porem no index.php como eu chamo a funcao criada? é possivel criar uma classe e utilização a função dentro dela? como? conexao.php <?php function conectar(){ try{ $pdo=new PDO("mysql:host=localhost;dbname=bobrinha","root","123"); } catch(PDOException $error){ echo $error->getMessage(); } return $pdo; } ?> funcoes.php <?php function listar(){ if(!empty($_GET["id"])): $id = addslashes(trim($_GET['id'])); $buscar = $pdo->prepare("SELECT * FROM membros WHERE id=:id"); $buscar->bindValue("id","$id",PDO::PARAM_INT); $buscar->execute(); $linha = $buscar->fetchAll(PDO::FETCH_OBJ); foreach($linha as $listar){ echo "email: ".$listar->email.""; echo "nome: ".$listar->nome."<br>"; } endif; } } ?> index.php <?php include_once("conexao.php"); $pdo=conectar(); $sessao = ($_GET["conteudo"]); if($sessao == "membros"){ COMO CHAMO A FUNCAO AQUI PARA EXIBIR ? } else{ echo "Nenhum pagina para exibir"; } ?> Estou perdido ai, agradeço desde de ja qualquer ajuda Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Julho 14, 2014 listar($pdo) De lida sobre Classes e Objetos Compartilhar este post Link para o post Compartilhar em outros sites
jgustavo99 85 Denunciar post Postado Julho 14, 2014 Olá! Para listar a função é simples: <?php require_once("funcoes.php"); // Inclui o arquivo das funções listar(); // Chamo a função listar do arquivo funcoes.php ?> Espero ter Ajudado ;) Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Julho 14, 2014 Amigos não acontece nada de nenhuma das duas formas acima sempre aparece a mensagem de Nada :closedeyes: sem usar pdo é eu sempre chamei a função assim <?php funcaonome(); ?> e funciona certinho mais da forma acima so exibi se os resultados se eu acessar diretamente a pagina funcoes.php nao puxa na index Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Julho 14, 2014 Nessa função você tem uma chave a mais. já corrigiu isso, faz um debug neste script Compartilhar este post Link para o post Compartilhar em outros sites
dochipis 6 Denunciar post Postado Julho 14, 2014 Você pode passar uma função como parâmetro de outra: function conectar() { try{ $pdo=new PDO("mysql:host=localhost;dbname=bobrinha","root","123"); } catch(PDOException $error){ echo $error->getMessage(); } return $pdo; } function listar($conectar) { if( $conectar instanceof PDO) { # seu código aqui... } } listar( conectar() ); Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Julho 14, 2014 Williams Duarte que chave a mais? o script esta funcionando perfeitamente quando acesso funcoes.php direto no navegador dochipis, desculpe mais não entendi sua logica na explicação e me parece não ser o que pretendo, visto que apenas quero chamar a função algo do tipo <?php minhafuncao(); ?> só isso na index.php Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Julho 14, 2014 <?php function listar(){ if(!empty($_GET["id"])): $id = addslashes(trim($_GET['id'])); $buscar = $pdo->prepare("SELECT * FROM membros WHERE id=:id"); $buscar->bindValue("id","$id",PDO::PARAM_INT); $buscar->execute(); $linha = $buscar->fetchAll(PDO::FETCH_OBJ); foreach($linha as $listar){ echo "email: ".$listar->email.""; echo "nome: ".$listar->nome."<br>"; } endif; } } //<-------------------- Essa ?> Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Julho 14, 2014 Williams Duarte essa barra ai foi apenas copiada errada simplesmente isso como disse o script esta funcionando perfeitamente e daria erro se essa barra existisse no script :closedeyes: OBS: ao chamar a função assim na index.php <?php listar(); ? Erro: Fatal error: Call to a member function prepare() on a non-object in Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Julho 15, 2014 Faça um Debugging como eu disse, ou não sabe fazer uma depuração básica em um script? Uma simples função já ta apanhando imagina algo mais avançado. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Julho 15, 2014 <?php listar(); ? Erro: Fatal error: Call to a member function prepare() on a non-object in Vamos lá, sobrou um tempo aqui! Primeiro que você continua chamando a função sem passar o parâmetro de conexão para pdo, veja que postei lá em cima listar($pdo); O que você tinha que fazer era fazer o mesmo na função function listar($pdo){ } :ninja: Vamos corrigir a caca <_< , evite usar $_GET[], $_POST[] ou $_REQUEST[] em funções genéricas, em métodos de classes e até aceitável em alguns casos. Siga a lógica e corrija seu script. function listar($pdo=null, $id=null){ if (isset($id)): $sql = sprintf("prepare(\"SELECT * FROM membros WHERE id = '%d'\")", $id ); echo $pdo . '->'; echo $sql; else : return false; endif; } $_GET['id'] = 1000; $pdo = '$pdo'; $id = addslashes(trim($_GET['id'])); listar($pdo, $id); Estude mais lógica! :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites