Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal , venho montando um site , tenho uma pequena grande dúvida .
Queria saber como seria basicamente para criar um sistema de postagem básico , quero uma página php com dois campos de texto : Titulo e descrição e um botão de Enviar/Visualizar , ao enviar crie uma página separada sem extensão ,como os este site e outros fazem, exemplo :
-
http://www.vivaolinux.com.br/artigo/Sistema-de-noticias-em-PHP
-
http://imasters.com.br/design/o-verdadeiro-design-de-interface-a-favor-do-desenvolvimento-front-end/
Alguém pode me dar uma ideia de como eu faria isso ?
se você for criar poucas paginas você pode pelo php criar uma pasta e criar o post dentro desta pasta(com nome index), assim quando digitasse "www.site.com/nomedopost/" acessaria o arquivo (é uma solução mais simples, porem é um improviso néh). mas se vc quer postar muitas coisas eu não acho indicado e talvez essa sugestão do ricardo venha a ser melhor. Mas tipo, o ideal era que houvesse uma pagina "post" universal que chama o conteudo do post, ao invés de criar uma pagina completa para cada post. (n sei se consegui ser muito claro)
Bom dia,
O que você quer chama-se URL's Amigáveis, veja alguns artigos que podem lhe ajudar:
Esta parte da url já entendi , mas como seria basicamente para automaticamente criar uma página a cada post ?
da uma olhada nesse código, ele abre o arquivo "bloco1.php" e edita o conteudo dele:
<?php
// Abre ou cria o arquivo bloco1.php
// "a" representa que o arquivo é aberto para ser escrito
$fp = fopen("bloco1.php", "a");
// Escreve "exemplo de escrita" no bloco1.php
$escreve = fwrite($fp, "exemplo de escrita");
// Fecha o arquivo
fclose($fp);
?>
esse é o mesmo código para editar um arquivo txt, eu só mudei a extensão.
no lugar de "exempplo escrita", vc deve colocar algo assim:
"começo do código html, tag pra lá, tag pra cá" + "conteúdo do post" + "resto do código html"
*no caso esse código pega um arquivo vazio e transforma na sua pagina.
**um detalhe que ja me deu uma dor de cabeça ao criar um arquivo txt é que talvez vc precise mudar a permissão da pasta onde vc for criar
isso vai funcionar, mas isso de criar uma pagina html completa para cada post eu não acho nada aconselhável é muito melhor criar uma pagina universal e mudar apenas o texto do post, como eu disse antes. se quiser posso te explicar melhor essa opção, não é tão diferente desse esquema que te passei.
bom, provavelmente voce salva as noticias em seu banco, correto?
Agora, como voce está exibindo-as no site?
Vou dar um exemplo cru, para voce estudar e aprimorar, ok?
vivaolinux.com.br/artigo/Sistema-de-noticias-em-PHP
Nesse caso, vamos supor que existe um arquivo chamado artigo.php em sua pasta.
Vamos supor que voce também tenha outro arquivo, com nome artigos.php e nele são exibidos todos artigos salvos no banco, o artigo.php é apenas para mostrar o que foi selecionado em artigos.php.
Agora, na criação deste artigo, que vai fazer o envio para o banco de dados, voce deve tratar o campo de TITULO do seu formulario para salvar no banco de dados como URL, por exemplo:
$titulo = $_POST['titulo'];
$artigo = $_POST['artigo'];
$url = $_POST['titulo'];
$url = strtr($url, "áàãâéêíóôõúüç ÁÀÃÂÉÊÍÓÔÕÚÜÇ", "aaaaeeiooouuc-aaaaeeiooouuc");
$dia = date("d/m/Y");
Claro que é só um exemplo acima, voce conseguirá usar mas é se aprofundar mais ok?
No caso acima, voce pegou o campo TITULO, jogou na variavel URL e fez a substituição das letras acentuadas, maiusculas e espaço por hifen.
Dessa forma, se o titulo for, exemplo: "Notícias Incríveis", a url será "noticias-incriveis".
Essa parte voce vai estar tratando a URL.
Agora depois do conteúdo salvo em seu banco, está na hora de exibir os links dos artigos com um while em artigos.php, mas nao irei explicar isso, é outro assunto, vou apenas mostrar como ficará o link do artigo com a url...
$query = mysql_query("SELECT * FROM artigos ORDER BY id DESC");
while($row = mysql_fetch_array($query)) {
$rowid = $row['id'];
$rowurl = $row['url'];
$rowtitulo = $row['titulo'];
?>
<a href="artigo/<?php echo $rowurl; ?>"> <?php echo $rowtitulo; ?> </a>
<?php
}
Mas para o artigo/$rowurl funcionar, voce deverá primeiro acrescentar uma linha em seu .htaccess:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^artigo/([a-z0-9-]+)/?$ artigo.php?url=$1 [NC,L]
Feito dessa forma, agora o arquivo final, artigo.php:
<?php
$geturl = $_GET['url'];
$query = mysql_query("SELECT * FROM artigos WHERE url = '$geturl'");
$campo = mysql_fetch_array($query);
$titulo = $campo['titutlo'];
$artigo = $campo['artigo'];
$data = $campo['data'];
// se URL não existir, voltar a página.
if (mysql_num_rows($query) < 1) { ?>
<script language="JavaScript"></script>
<?php
mysql_close();
}
?>
Titulo: <?php echo $titulo; ?>
<br><br>
Artigo: <?php echo $artigo; ?>
<br><br>
Data: <?php echo $data; ?>
<br><br>
E é isso... Voce pegará a URL que está no banco, por $_GET.Lembrando que voce deve fazer a conexão com o seu banco de dados nos arquivos, eu nao coloquei por ser apenas uma demonstração.
Até mais, boa sorte.
Tópico quase fechado ,mas para evitar criar outro tópico vou postar aqui mesmo ...
Okay , a criação já entendi mas ainda me resta uma dúvida , terminei de fazer o design , mas como faço para cada página que foi criada usar o design que eu fiz ?
mod_rewrite