1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

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

Discussão em 'Web Development' iniciada por naoliveira, 2 de Junho de 2008. (Respostas: 13; Visualizações: 782)

  1. naoliveira

    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?
     
  2. hostmake

    hostmake Power Member

    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];
    ?>
     
  3. naoliveira

    naoliveira Power Member

    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.


     
  4. hostmake

    hostmake Power Member

    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?
     
  5. naoliveira

    naoliveira Power Member

    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:)
     
  6. hostmake

    hostmake Power Member

    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];
    ?>
     
  7. naoliveira

    naoliveira Power Member

    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.
     
  8. hostmake

    hostmake Power Member

    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:
     
  9. naoliveira

    naoliveira Power Member

    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.
     
  10. anjo2

    anjo2 Power Member

    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?
     
  11. hostmake

    hostmake Power Member

    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.
     
  12. slack_guy

    slack_guy Power Member

    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.
     
  13. hostmake

    hostmake Power Member

    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.
     
  14. naoliveira

    naoliveira Power Member

    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.
     

Partilhar esta Página