← PHP

[Dúvida] Desenvolvimento de Plataforma parecida a blog

Lida 13776 vezes

Offline

Tekku 
Membro
Mensagens 100 Gostos 3
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Boas, é o seguinte já disse noutros tópicos que estava a desenvolver um projecto  de uma plataforma parecida a um blog com frontend e backend não sei se são estes os nomes xD

A minha dúvida é qual será a melhor forma de estruturar o código ( não sei se a pergunta é clara), até ao momento temos usado PHP, HTML, CSS, Javascript e Oracle...

O HTML usamos em ficheiro .php para fazer a markup do site, e depois temos vários ficheiros com código php, que por exemplo vão buscar um artigo à base de dados, e quando precisamos dessa funcionalidade fazemos um include desse ficheiro ou então por exemplo tenho todo o código HTML copiado em todos os ficheiros e depois mudo apenas a parte que me interessa mudar, mas eu penso que isto não seja muito funcional :x

Alguém pode dar umas dicas do que possa fazer?
Offline

Tekku 
Membro
Mensagens 100 Gostos 3
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Sorry o double post, mas ninguém consegue dar uma mãozinha ou ideia? :x

Cumps

Edit: Até já tentei ver o código source do wordpress para ver como eles trabalham, mas no pouco tempo que tive para analisar o código, achei muito confuso para alguém de fora chegar ali e perceber o código source rapidamente...
Offline

RuiGomes 
Membro
Mensagens 504 Gostos 0
Feedback +4

Troféus totais: 23
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 500 Posts 100 Posts

Sorry o double post, mas ninguém consegue dar uma mãozinha ou ideia? :x

Cumps

Edit: Até já tentei ver o código source do wordpress para ver como eles trabalham, mas no pouco tempo que tive para analisar o código, achei muito confuso para alguém de fora chegar ali e perceber o código source rapidamente...

Não vás pelo Wordpress, é uma plataforma com um grau de complexidade já elevado para perceber assim "a olho".

Há várias maneiras de fazer o que pretendes. Se usares OOP (programação orientada a objectos) e MVC (Model/View/Controller), aconselho-te a dar uma vista de olhos nisto: https://github.com/mjamado/The-500-Blog

É do mjamado do Portugal-A-Programar. Basicamente é um sistema de blog em menos de 500 linhas.

Se preferes algo mais simples, o que eu fazia era ter um ficheiro com as funções básicas (ir buscar um post, inserir um post, etc.) e funções tipo getHeader, getFooter, que apenas fazem include de um ficheiro html, para se precisares de editar o header ou o footer não teres que editar 300 ficheiros.
Offline

Tekku 
Membro
Mensagens 100 Gostos 3
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Boas, RuiGomes

A minha ideia era mais isso que referis-te no final, porque por agora isto será algo simples, e a matéria que demos de php não é muito abrangente :(
Já li o read me do link que deste, para analisar e ver se consigo perceber alguma coisa :)

Eu ainda só não percebi muito bem o funcionamento das funções, como é que se chama as funções quando elas estão num ficheiro php à parte, etc, mas tenho que estudar isso um pouco melhor para ver como poderei implementar isso..
Offline

RuiGomes 
Membro
Mensagens 504 Gostos 0
Feedback +4

Troféus totais: 23
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 500 Posts 100 Posts

Boas, RuiGomes

A minha ideia era mais isso que referis-te no final, porque por agora isto será algo simples, e a matéria que demos de php não é muito abrangente :(
Já li o read me do link que deste, para analisar e ver se consigo perceber alguma coisa :)

Eu ainda só não percebi muito bem o funcionamento das funções, como é que se chama as funções quando elas estão num ficheiro php à parte, etc, mas tenho que estudar isso um pouco melhor para ver como poderei implementar isso..

Se estás a começar então esquece o link.. Só te vais confundir. Claro que se tiveres tempo recomendo vivamente que aprendas OOP e MVC, mas não vale a pena complicar.

Basicamente desde que o ficheiro esteja incluído, podes chamar as funções dele.

Ou seja, imagina estes ficheiros:

index.php
Código: (php) [Seleccione]
<?php
include 'include/functions.php';
getHeader();
?>

include/functions.php
Código: (php) [Seleccione]
<?php
function getHeader() {
include 'header.php';
}
?>

É só adaptar isto às tuas necessidades.
Offline

Tekku 
Membro
Mensagens 100 Gostos 3
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Okay mais uma vez obrigado pela ajuda :)
Hoje vou começar a trabalhar nisto, para ver se anda para a frente :)
Offline

Tekku 
Membro
Mensagens 100 Gostos 3
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Boas, surgiu-me uma pequena dúvida, e não tenho agora possibilidades de testar :x

Se eu fizer include do ficheiro functions.php dentro do <head></head> as funções que estiverem definidas no ficheiro dão para usar ao longo de todo o documento html?
Offline

diogoosorio 
Membro
Mensagens 134 Gostos 1
Feedback +1

Troféus totais: 22
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Tudo o que está entre tags <?php e ?> é avaliado/computado/... pelo servidor antes da resposta ser enviada para o teu browser.

Por outras palavras, se fizeres o include num determinado ponto, a partir desse ponto podes utilizar as funções definidas dentro do ficheiro independentemente da sua localização "geográfica" dentro da estrutura do markup.
Offline

Tekku 
Membro
Mensagens 100 Gostos 3
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Ok obrigado pela ajuda :)

Só mais uma pergunta, eu criei uma função que faz a conexão com a BD, e estava a pensar em logo assim que faço o include do functions.php chamar essa função para usar ao longo do ficheiro, estou a fazer bem?
Offline

diogoosorio 
Membro
Mensagens 134 Gostos 1
Feedback +1

Troféus totais: 22
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Não entendi bem a questão.

Dependendo da forma como estabeleces a ligação à BD, desde que a função que estejas a chamar consiga "ver" o recurso (a ligação à BD), não vais ter problema. Para uma resposta mais específica, tens de ser mais específico na questão (coloca um trecho de código no qual tens a dúvida).

Experimenta o que estás a pensar implementar. Se te deparares com um problema, coloca aqui o código que nós tentamos ajudar.
Offline

Tekku 
Membro
Mensagens 100 Gostos 3
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Ok vou fazer isso, vou avançar mais no código e depois se tiver dúvidas venho cá de novo ^^

Obrigado mais uma vez :)
Offline

Tekku 
Membro
Mensagens 100 Gostos 3
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Ok, parece que não foi preciso andar muito para me surgir uma dúvida xD

Então é o seguinte tenho o seguinte código no ficheiro functions.php:

Código: [Seleccione]
<?php

function bdConnect() {
$username '';
$password '';
$bd '';

$conn oci_connect($username$password$bd);

if (!$conn) {
echo 'Unable to connect: ' var_dump(oci_error());
die ('Error connecting to the database.');
}
}

function 
getHeader() {
include 'header.php';
}

function 
getFooter() {
include 'footer.php';
}

?>

e tenho depois no header.php:

Código: [Seleccione]
<?php

session_start
();

?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" type="text/css" href="css/reset.css">
<link rel="stylesheet" type="text/css" href="css/text.css">
<link rel="stylesheet" type="text/css" href="css/style.css">

<?php
include ('functions.php');
?>


<title></title>
</head>
<body>

<header>

<a href="#"><h1></h1></a>

<nav>

<?php
if ((!isset ($_SESSION["utilizador"])) AND (!isset($_SESSION["senha"]))) {
echo '<a href="index.php">Home</a>';
echo '<a href="index.php">Notícias</a>';
echo '<a href="index.php">Login</a>';
echo '<a href="index.php">Register</a>';
echo '<a href="index.php">About us</a>';
echo '<a href="index.php">Contact us</a>';
}
else {
echo '<a href="index.php">Home</a>';
echo '<a href="index.php">Notícias</a>';
echo '<a href="index.php">Inserir Notícia</a>';
echo '<a href="index.php">Categoria</a>';
echo '<a href="index.php">About us</a>';
echo '<a href="index.php">Contact us</a>';
}
?>


</nav>


</header>

<div class="wrap">

Assim dá este erro:

Código: [Seleccione]
Fatal error: Cannot redeclare bdconnect() (previously declared in C:\oracle\product\10.2.0\db_web\Apache\Apache\htdocs\TPSI6\joaomarques\aulas\Projecto\functions.php:4) in C:\oracle\product\10.2.0\db_web\Apache\Apache\htdocs\TPSI6\joaomarques\aulas\Projecto\functions.php on line 14
Mas se usar no header.php o include do functions.php com include_once funciona, a minha dúvida é o porquê disto, se só faço o include do bdconnect uma única vez? Se usar o _once, posso vir a ter algum tipo de problemas?
Offline

Souza 
Elite
Mensagens 1816 Gostos 1
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Podes fazer fazer include_once() à vontade, é similar ao include(), só que verifica se o mesmo ficheiro já foi chamado ou com funções iguais.

$_SESSION["senha"]
Estás a utilizar a função session_start sem criptografia?
Offline

Tekku 
Membro
Mensagens 100 Gostos 3
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Não faço ideia :x é capaz de estar, isso é código que foi dado pela nossa professora, e a matéria foi dada um pouco ao descarrega, e acabamos por não perceber muito disto, porque ela descarregou a matéria e não explicou, agora é que aos poucos temos andado a pesquisar e aprender por nós mesmos, se não fosse aqui o pessoal do +t e as pesquisas que temos feito, não tínhamos praticamente nada feito :x
Offline

betanalista 
Membro
Mensagens 2564 Gostos 0
Feedback +18

Troféus totais: 26
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

não seria mais fácil primeiro pegares num livro e estudar e depois tentares fazer alguma coisa?