Ir para conteúdo

POWERED BY:

Arquivado

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

Danilo CS

Pegar automaticamente ID do link no select do sql

Recommended Posts

Olá!

Devido a correria do dia-a-dia eu não vou poder tentar fazer isso por meio de erros e acertos porque isso leva muito tempo, então eu queria uma dica.

Eu fiz um sisteminha bem simples de notícias. O sistema começa aqui:

http://www.superdanilof1page.com.br/noticias/formula-1-noticias.php

Embora o link de cada notícia eu tenha feito no banco de dados, a página que recebe o link eu fiz manualmente e não por BD. Mas algumas informações da página, como títulos, link de fotos e essas coisas eu fiz no banco de dados.

Exemplo: http://www.superdanilof1page.com.br/noticias/f1-noticias-felipe-massa-o-carro-e-meu.php

Esta é uma página independente, porém, o titulo, fotos, palavras-chave, etc, é baseada no banco de dados. Para que isso ocorra eu chamo a tabela dessa forma:

$qr = mysql_query("SELECT * FROM noticias WHERE id_noticias='12'");

Até aí blz. Mas para que cada página funcione corretamente, cada vez que eu faço uma nova notícia eu tenho que manualmente alterar a "id_noticias".

Eu queria saber se, mesmo usando esse sistema misto, se é possível ao clicar no link (nos moldes que fiz) e automaticamente entrar na id correspondente à notícia, sabe?

Será que assim funcionaria?

session_start();
$qr = mysql_query("SELECT * FROM noticias WHERE id_noticias='{$_GET['id_noticias']}' ");

É que faz muito tempo que eu não mexo com isso, então não sei se daria e nem como fazer para ele reconhecer direitinho a ID correspondente.

Tem outro jeito de fazer, mas por hora eu não quero. De criar uma página única para receber todas as notícias e colocar a id no link. É que ai tem que mexer naqueles negócio de url_amigavel e num sei o que. Daí eu acho que vou perder muito tempo...

Se for possível isso tudo bem, senão eu vou me virando do jeito que está...

Muito obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi você toda vez que adiciona uma noticia, precisa criar uma pagina php dentro na pasta /noticias

com a query informando o ID da noticia que acabastes de criar?

o bom seria usar url amigável, e ter somente 1 arquivo para gerenciar isto.

agora uma solução simples que resolveria seu problema, é gerar essa pagina PHP quando criar a noticias.

faz um script que grave este page php na pasta /noticia com o respectivo ID na query!

Compartilhar este post


Link para o post
Compartilhar em outros sites

È isso mesmo...

Então se for para assim somente com 1 arquivo, ai tem que fazer URL amigável e mais um monte de coisas. Se até ai eu levei 2 dias inteiros para montar, imagina se fosse para criar URL amigável. Eu aprendi a mexer com PHP recentemente, mas logo depois não usei mais, daí já viu né?

Eu não entendi bem isso:

faz um script que grave este page php na pasta /noticia com o respectivo ID na query!

Como assim?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte,

O código que você usa pra adicionar a noticia, você aproveita retorna o ID do insert e grava o arquivo na pasta.

usando a função de arquivo do PHP fopen etc....

entendeu? ao inves de você criar este arquivo manualmente, o script que adiciona as noticias grave pra você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que assim funcionaria?

session_start();

$qr = mysql_query("SELECT * FROM noticias WHERE id_noticias='{$_GET['id_noticias']}' ");

Bom vamos por partes.

A parte de URL amigável é totalmente dispensável, é apenas um 'PLUS', realmente exige conhecimento de apache e domínio de expressão regular (ou deveria hehe)

Desde os primórdios da Internet qnd era tudo Mato, AOL, e-mail do bol e ICQ só existia requisições HTTP sem frescura sem piedade. (ou sem url amigável hehe)

Um exemplo de requisição http com método GET:

http://www.superdanilof1page.com.br/noticias/noticias.php?id_noticias=1
...
Assim na sua 'pagina' noticias.php você sempre vai receber um parametro via GET.

echo $_GET['id_noticias']; // Vai exibir 1 (correspondente a esse trecho ?id_noticias=1)


A brincadeira é que você pode passar vários parâmetros na URL usando um simples & (e comercial)

Exemplo:

http://www.superdanilof1page.com.br/noticias/noticias.php?id_noticias=1&usuario_logado=0

Enfim... acho q deu pra pegar.

Recomendo a leitura:

http://php.net/manual/pt_BR/reserved.variables.get.php

Agora eu que fiquei com duvidas a respeito disso:

Eu queria saber se, mesmo usando esse sistema misto, se é possível ao clicar no link (nos moldes que fiz) e automaticamente entrar na id correspondente à notícia, sabe?

Sobre o receber o parâmetro dinamicamente usando a ideia acima é possível.

Porem eu não entendi a sua estrutura mista.

Até aí blz. Mas para que cada página funcione corretamente, cada vez que eu faço uma nova notícia eu tenho que manualmente alterar a "id_noticias".

Como você adiciona uma noticia nova?

Sobe uma pagina literalmente .php pelo FTP?

Caso sim por que a necessidade de usar um sistema de id para noticia?

Da um exemplo ai pra gente hehe.

Ps: Reparei que tu tem um

session_start();

Ai no seu código, se usa uma variavel $_SESSION em algum momento?!

Caso não retira isso ai que só vai te confudir.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dica 1:

Recomendo evitar o uso de mysql_* pois está descontinuado.


Use mysqli_* ou PDO.

Segue tutorial do Beraldo:




Dica 2:

Sei que é apenas um exemplo, porem veja a parte de seguraça, seu script esta com vunerabilidade a SQL Injection

Leia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você adiciona uma noticia nova?

Sobe uma pagina literalmente .php pelo FTP?

Caso sim por que a necessidade de usar um sistema de id para noticia?

Da um exemplo ai pra gente hehe.

A página painel é essa aqui http://superdanilof1page.com.br/painel/noticias.php Eu ainda não coloquei a senha.

Eu crio a página manualmente e subo em ftp. Eu "Salvo Como" a notícia anterior para pegar a estrutura e faço a notícia nova por cima. Eu fiz meio BD e meio "FTP" porque quando eu fazia tudo manualmente, eu perdia muito tempo para criar links, fazer o resumo da notícia para colocar na pagina e no meta-tag description, colocar data, link das imagens, palavra-chave, titulo. E ainda eu me enrrolava e acaba esquecendo ou escrevia errado alguma coisa. Daí perdia mó tempão.

Por exemplo o título, eu tinha que digitar, depois copiar para a tag title e depois copiar para a página de lista de notícias. entende? Com o BD, eu só preciso escrever uma vez e já aparece em todos os lugares. Exemplo:

O nome da minha notícia vai ser "Massa F1". Então eu teria que copiar em:

<title>Massa F1</title> na página da notícia;
<h1>Massa F1</h1> na página da notícia;

<h2>Massa F1</h2>na página da lista das notícias;

Ao inves desse trabalhão com o BD eu fiz uma simples variavel:

$titulo = $qr_l['titulo'] // Com isso aparece o título aonde eu quiser que apareça em qualquer página que eu chamar o sql
<h1><?php echo $titulo?>/// E chamava assim dentro do HTML

Um exemplo na prática: Tema da notícia:

Felipe Massa: “O carro é meu”

Exatamente esse título vai aparecer em http://www.superdanilof1page.com.br/noticias/f1-noticias-felipe-massa-o-carro-e-meu.php

http://www.superdanilof1page.com.br/noticias/formula-1-noticias.php

e

http://www.superdanilof1page.com.br/index.php

Se não fosse o BD eu teria que copiar 3x manualmente esse título, assim como todo o resto. Esse sisteminha "misto" facilitou muito na hora de publicar a matéria. Entendeu mais ou menos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, porem ainda acho que vale a pena deixar tudo 100% pelo DB, evitando o uso de FTP.

Se liga um exemplo toscão como ficaria a HOME:

<?php

//Exemplo da HOME listando as ultimas 3 noticias:

$noticias =  mysql_fetch_array('SELECT * FROM noticia order by id_noticia desc LIMIT 3');
//Execute bla bla bla
 
foreach($noticias as $noticia){
	echo $noticia['titulo'];
	echo $noticia['conteudo']; //Campo TEXT
	echo $noticia['autor']; //Campo TEXT
	echo $noticia['data_criacao']; //Campo DATETIME
}

E agora uma pagina dinâmica 'noticia.php':

<?php

//Exemplo de uma pagina de noticia:
$id = $_GET['id'];

//
$noticia = mysql_fetch_row('SELECT * FROM noticia where id_noticia = $id');
//Execute bla bla bla


?>

<meta name="description" content="" <?php echo $noticia['meta_description']; ?>/>
		
		


<h1><?php echo $noticia['titulo']; ?></h1>
<?php echo $noticia['conteudo']; ?>
<hr />
<?php echo $noticia['autor'];?> <br />
Criado em:
<?php echo $noticia['data_criacao']; ?>

<hr />
Posts Relacionados:
<?php
$noticias_relacionadas =  mysql_fetch_array("SELECT * FROM noticia order by id_noticia where categoria = 'F1'");

/*
ou Melhor ainda... esse F1 poderia ser dinamico saca?

$noticias_relacionadas =  mysql_fetch_array("SELECT * FROM noticia order by id_noticia where categoria = '". $noticia['categoria_id'] . '");
*/

foreach($noticias_relacionadas as $noticia_row){	
	echo $noticia_row['titulo'];
	echo '<br />';
	echo $noticia_row['conteudo']; //Campo TEXT
	echo '<br />';
	echo $noticia_row['autor']; //Campo TEXT
	echo '<br />';
	echo $noticia_row['data_criacao']; //Campo DATETIME
	echo '<hr />';
}



Compartilhar este post


Link para o post
Compartilhar em outros sites

Se tu tem todos os campos certinho no DB, acho q vale a pena estudar a possibilidade.

Ps: url amigável no seu contexto é perfumaria.

Arruma a 'casa' depois se pensa nisso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ow Gabriel obrigado pela dica! Eu vou considerar essa possibilidade. Quer dizer eu já estava pensando nisso, vou pensar um pouco mais...

Agora me explica essa história (já que você tocou no assunto hehe): Está sendo descontinuado o Mysql? Porque?

Agora que estou aprendendo a usar, estão parando?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leia:
http://rberaldo.com.br/mysql-obsoleto-php/

Pouca coisa é alterada.

Leia o passo a passo do Beraldo que passei no #7, explica legal.

(Porem eu particularmente acho o PDO bem mais legal hehe)

Agora que estou aprendendo a usar, estão parando?!

Uma das coisas ruins de você utilizar uma biblioteca que não tem suporte a futuras versões, é que amanha ou depois você migra para um servidor php 7+ (que tem uma performance bem superior).

Acaba ficando refém do próprio código hehe.

Porem nada impede de você continuar a usar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso sua duvida tenha sido sanada.

Favor encerrar o tópico (de preferencia com a relação do titulo do post) para facilitar o SEO ou mecanismo de busca do fórum :D

Abs

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.