[PHP] Como interligar 2 listas (s/ usar BD)?

naoliveira

Power Member
Boas ppl,

Tenho 2 listas, uma com os nomes das páginas do site e outra com os nomes das css que o site usa, ex:

PHP:
$paginasSite = array ("inicio", "quem somos", "contactos", "etc");

$paginasCSS  = array ("estilos", "outroEstilo", "maisOutroEstilo", "estiloVerde", "estiloAzul");
agora quando carrego uma página quero que consoante a página assim me carregue as CSS dessa página, quero também ter a opção de mudar as CSS, por ex: uma css para um layout azul outra para verde, etc.

Não quero usar a BD para guardar as CSS que correspondem a cada página (para treinar o uso de acesso aos ficheiros), as minhas dúvidas são:
- qual a melhor opção para fazer a correspondência?
- qual a melhor maneira de guardar essas alterações em ficheiros?
 
config.inc.php

PHP:
<?php
$paginas_css = array ("pagina" => "css_style", "pagina2" => "css_style2");
?>

index.php

PHP:
<?php
require_once 'config.inc.php';
....style=$paginas_css[$nome_da_pagina];
?>
 
hostmake,

obrigado pela resposta, mas expliquei-me mal, essa parte eu sei fazer, o meu objectivo é ter, por ex 3 CSS, uma geral (que formata a posição dos elementos) as outras 2 são uma para layout vermelho e outra para layout verde, e dar a possibilidade de escolha ao utilizador de escolher qual a cor que quer o layout, ou seja esta linha

PHP:
 <?php 
$paginas_css = array ("pagina" => "css_style", "pagina2" => "css_style2"); 
?>
tem de ser dinâmica, pois se o user quiser pode ter várias CSS para a mesma página

<?php
$paginas_css
= array ("pagina" => "css_style, css_verde", "pagina2" => "css_style2, css_vermelho");
?>

isto é alterado dinâmicamente, é esta parte de alterar ficheiros que ainda não domino. Se alguém tiver umas dicas serão bem-vindas.


 
continuo sem perceber muito bem.. deve ser de mim :S

mas o código que te mostrei, continua igual a meu ver, em vez de ter:

"pagina" => "css"

tens

"pagina" => "css, css2, css3"

e depois no cabecalho, fazes um foreach do array e um explode aos css's, e por cada que explode que tu tenhas, adicionas uma linha para adicionar esse ficheiro css.

não é isso?
 
Ok mas eu quero a possibilidade de alterar

"pagina" => "css, css2, css3"

para isto

"pagina" => "css, css4, css5"

ou seja o utilizador escolheu outras CSS para ter outro layout, mas se por exemplo o ficheiro config.php tiver várias linhas

PHP:
  <?php 

$var = "XPTO";

$paginas_css = array ("pagina" => "css_style", "pagina2" => "css_style2"); 

 $outra_var = "outro XPTO";
?>
como é que eu mantenho a estrutura do ficheiro alterando, neste exemplo, só a que diz respeito às CSS.

A minha dúvida está em como manipular ficheiros, alterar uma linha dentro de um ficheiro sem mexer nas outras. Espero agora ter sido mais claro:)
 
Muito mais claro, nesse caso deixa de ser prático utilizar um ficheiro para fazer isso.

Questão:

Tu não tens base de dados, portanto como é que isso muda, a ideia é sempre que um user abre a página poder mudar, e depois quando abrir de novo, ter que mudar outra vez se quiser? Ou tas a pensar criar um array no ficheiro, para cada user que visite, mesmo sem base dados? É que isso não é boa politica de certeza.

Portanto presumo que o uso de sessões não seja incomodo.

Em vez de guardares em ficheiros, guardas num array de sessão.


Presumo que saibas trabalhar com sessões?

PHP:
index.php

<?php
session_start();

if (!isset($_SESSION['paginas']))
       $_SESSION['paginas'] = Array();

$_SESSION['paginas'][$pagina] = "css, css2, css3";

?>

Sempre que quiseres mudar qualquer coisa noutra pagina

mudar_estilo.php

<?php
session_start();
$_SESSION['paginas'][$pagina] = "bla bla bla";
?>

e para acederes

visualizar.php

<?php
session_start();
echo $_SESSION['paginas'][$pagina];
?>
 
Sei trabalhar com sessões, mas aqui o objectivo era fazer com ficheiros para aprender a manipular os ficheiros em php. Isto é para incorporar na parte de administração onde para se mudar a CSS estou a pensar usar esta técnica, pois para um caso tão simples não faz sentido usar bd.
 
Pah, fazer por ficheiros neste caso não é a melhor opção, não me parece um bom sistema de teste ( a meu ver, porque já estou a ver regex, e if's, e explodes, e etc..) melhor as tantas é fazeres um editor de texto do ficheiro .php todo, onde vais guardar os arrays, e depois editas como se estivesses a editar o ficheiro no notepad, mas na textarea estás a ver? mas isso para um user normal (se for o caso, se tiveres um administrador "normal") que não perceba php, não sabe muito bem o que está a editar... também não é boa politica.

Se quiseres fazer por texto, diverte-te :lol:
 
Eu estava a pensar que dava algo do género ler linha a linha e depois para gravar, gravava só aquela linha. Quando tiver um tempinho vou ver como funciona o php com manipulação de ficheiros. De qq maneira tks pelas ajudas.
 
ainda não percebi bem o que queres mas:
PHP:
$styles = array("pagina1" => array("css_style1", "css_style2"), "pagina2" => array("css_style2", "css_style3"))

Para ires buscar um style,
PHP:
echo $styles['pagina1'][0];
Era algo disto?
 
Não, eu também pensava que era isso quando lhe dei o código, mas ele sabe fazer isso, o que ele quer é ter um ficheiro com os arrays criados, e conseguir editar os ficheiros e ir ler o conteúdos dos array's, eu digo que não vale o esforço.

naoliveira, eu não disse que não dava, só disse que era ilógico e trabalhoso.
 
é esta parte de alterar ficheiros que ainda não domino
(...)
Sei trabalhar com sessões, mas aqui o objectivo era fazer com ficheiros para aprender a manipular os ficheiros em php.
Quando trabalhas com sessões estás a trabalhar com ficheiros (ou com a BD, ou apenas com a RAM). Por default estás a trabalhar com ficheiros e, sem te aperceberes, estás a criar, abrir, ler, modificar e eliminar ficheiros, com formatos 'especiais' e sem teres a 'chatice' de lidar directamente com ficheiros.
O que pretendes, como referiu o hostmake, é mais eficiente se fizeres com sessões.
 
Tipo, porque é que não lêem para trás?

Esse código já foi posto aqui por 2 pessoas, ler, ler, depois do 1º post de preferência.

Ele agora só quer saber, como ler um ficheiro php(como se fosse texto) e conseguir controlar o valor dos arrays através de funções para ficheiros.
 
Tenho quase a certezaque existe uma maneira mais directa de manipular os ficheiros, como já disse, quando tiver um tempinho vou ver isso. Por exemplo no Joomla, existe um ficheiro configuration.php com variáveis que se podem mudar a qualquer momento na adminstração, é uma coisa desse género que eu quero.
 
Back
Topo