Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alex Lupóz

fopen de acordo com nome que está no campo da tabela

Recommended Posts

Pessoal, tudo bem? Espero que sim!

Bem, gostaria de pedir uma ajudinha novamente ai, pois eu gostaria de abrir um arquivo ".txt" de acordo com o autor.

Minha página "autor.php" (que recebe a id em query string da página anterior) está assim:

include ("../painel/postagens/includes/conexao.php"); 
require ("../painel/postagens/includes/limpa.php"); 
   
$pegaid = (int) $_GET['id'];
$id = "$pegaid"; 
     
    if($id == $pegaid){ 
         
    $sql = "SELECT * FROM $tabela WHERE id='$id'"; 
    $query = mysqli_query($GLOBALS["___mysqli_ston"], $sql); 
    while($sql = mysqli_fetch_array($query)){ 
    $id = $sql["id"]; 
$autor = $sql["autor"];
     
    } 
} 

?>

No caso, eu gostaria de que acordo com a id do autor, um arquivo específico fosse aberto.

Por exemplo:

Na minha tabela, eu tenho o campo "autor". Se o id (autor.php?id=)recebido da página anterior tivesse no campo "autor" o nome "Pedro", a variável chamaria o arquivo "pedro.txt"

<?php echo $bio ?>

Onde a variável "$bio", seria o meu "fopen" de acordo com o autor.

No aguardo de quem puder me ajudar :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, no caso você irá receber um ID via GET no seu PHP e irá fazer uma query no banco de dados, e com o resultado dessa query você irá fazer um fopen em um arquivo txt, certo? se eu entendi basicamente você precisa fazer isso aqui:

 

 // Primeira de tudo vamos criar uma conexão PDO com o banco de dados $host = // seu host, geralmente localhost$database = // nome do seu banco de dados$user = // usuario do seu banco de dados$password = // senha do usuario$dsn = sprintf('mysql:host=%s;dbname=%s', $host, $database);$pdo = new PDO($dsn, $user, $password); // Aqui fazemos a query$stm = $pdo->prepare('SELECT * FROM autores WHERE id = :id');$stm->bindValue(':id', $_GET['id'], PDO::PARAM_INT);$stm->execute();$dados = $stm->fetch();$stm->closeCursor(); $file = fopen($dados['nomeDoAutor'].'.txt', 'r'); while(!feof($file)):   echo fgets($file); endwhile;  fclose($file);
 

 

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algumas dicas:

 

1. Não precisa disto:

 

$pegaid = (int) $_GET['id'];
$id = "$pegaid";

 

Basta isto:

 

$id = (int) $_GET['id'];

 

e nem faz sentido comparar $id com $pegaid. Basta verificar se $id é maior que 0.

 

 

2. Se quer apenas o campo "autor", não há por que fazer um "SELECT *". Selecione apenas o campo "autor". Isso poupa bastante CPU e memória em tabelas grandes.

 

 

3. Se o nome do arquivo será o nome do autor sempre em letras minúsculas, use strtolower

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Olá, amigo. Agradeço a ajuda, mas estou trabalhando com MySQLi, e sou iniciante, ainda não sei muito sobre o tal, então ainda não parti pro PDO, e também, o sistema já está todo feito, mas sua resposta me clareou as ideias, e consegui fazer com que funciona-se de alguma maneira, a não ser por um erro: Ao invés de aparecer o conteúdo do arquivo .txt, aparece "resource id#6".

 

Consegui resolver colocando o "file_get_contents" ao invés do "fopen".

 

Obrigado pelas respostas!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim o file_get_contents também é uma alternativa, também prefiro trabalhar com essa função, mas há casos especificos em que existe a necessidade do fopen, que bom que ajudou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim o file_get_contents também é uma alternativa, também prefiro trabalhar com essa função, mas há casos especificos em que existe a necessidade do fopen, que bom que ajudou.

Obrigado, irmão. Problema mais que resolvido.

 

Agradeço as dicas do Beraldo também.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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