Ir para conteúdo

POWERED BY:

Arquivado

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

manoaj

puxando link direto do db

Recommended Posts

pessoal eu to querendo faser uma coisa e não sei se é possiivel porisso vim aqui tentar tirar essa duvida com vcs é o seguinte to fasendo um sistema no qual a pagina php tem qe puxar um link um caminho que mostre onde esta a pagina desejada

 

como o codigo esta

<?php

//inclui a classe

require_once('functions/class.template.php');

 

//instancia a classe

$tp = new templateParser('themes/padrao/template.html');aqui vcs estão vendo esta linha ela quemostra pro sistema a pasta que tem que ser puxadada

 

//define os parâmetros da classe

$tags = array(

'titulo' => 'Meu template',

'cabecalho' => 'cabecalho.php',

'menu' => 'menu.php',

'coluna1' => 'coluna1.php',

'coluna2' => 'coluna2.php',

'coluna3' => 'coluna3.php',

'rodape' => 'rodape.php'

);

 

//faz a substituição

$tp->parseTemplate($tags);

 

// exibe a page

echo $tp->display();

?>

 

aquela linha que eu comentei no codigo acima é onde eu quero faser o seguinte sistema quero chamar este caminho aqui themes/padrao/template.html de uma tabela no banco de dados assim eu vou poder alteralo sempre que eu quiserpodendo trocar o atalho

o banco de dados que crie foi esse

 

 

CREATE TABLE IF NOT EXISTS `themes` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`indic_theme` text NOT NULL,

`nome` varchar(255) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

 

na tabela acima a coluna que vai conter os link sque eu quero poder mudar e mostrar pro php la em sima e a indic_theme euq ueria poder jogar o atalho themes/padrao/template.html dentro dessa tabela para que o codigo leia e eu possa modificar atravez de um painel :D

caso nao tenhao intendido só falar que explico !

Compartilhar este post


Link para o post
Compartilhar em outros sites

n entendi mto bem. Digamos você tem uma tabela de usuario q tem o codigo do tema, quando o usuario logar ele vai pegar o caminho do tema e aplicar o css personalizado é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

n entendi mto bem. Digamos você tem uma tabela de usuario q tem o codigo do tema, quando o usuario logar ele vai pegar o caminho do tema e aplicar o css personalizado é isso?

é isso vai ter um painel administrativo onde o usuario quando loga vai poder trocar este tema pelo nome ou seja eu queria pode trocar aquele atalho themes/padrao/template.html sempre que eu quisece e acho que a forma de faser isso é mostrando a ele usando o banco de dados né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa criar uma classe

 

q irá fazer isso pra você...

 

templateParser é uma classe de templates

 

agroa você irá criar uma classe q irá utilizar a templateParser

 

require_once('functions/class.template.php');

class View{

   function __construct($theme,$tags){
       $tp = new templateParser($this->getUrl($theme));
       $tp->parseTemplate($tags);
       echo $tp->display();
   }

   private function getUrl($theme){
       $sql = "Select indic_theme from themes WHERE  nome = '$theme' LIMIT 1"; 
       $query = mysql_query($sql);
       $result = mysql_fetch_row($query);

       return $result['indic_theme'];
   }
}

 

require 'View.php';


$tags = array(
'titulo' => 'Meu template',
'cabecalho' => 'cabecalho.php',
'menu' => 'menu.php',
'coluna1' => 'coluna1.php',
'coluna2' => 'coluna2.php',
'coluna3' => 'coluna3.php',
'rodape' => 'rodape.php'
);

new View('class.template.php',$tags);

 

 

creio q seja mais o menos isso q você quer.. bons estudos

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa criar uma classe

 

q irá fazer isso pra você...

 

templateParser é uma classe de templates

 

agroa você irá criar uma classe q irá utilizar a templateParser

 

require_once('functions/class.template.php');

class View{

   function __construct($theme,$tags){
       $tp = new templateParser($this->getUrl($theme));
       $tp->parseTemplate($tags);
       echo $tp->display();
   }

   private function getUrl($theme){
       $sql = "Select indic_theme from themes WHERE  nome = '$theme' LIMIT 1"; 
       $query = mysql_query($sql);
       $result = mysql_fetch_row($query);

       return $result['indic_theme'];
   }
}

 

require 'View.php';


$tags = array(
'titulo' => 'Meu template',
'cabecalho' => 'cabecalho.php',
'menu' => 'menu.php',
'coluna1' => 'coluna1.php',
'coluna2' => 'coluna2.php',
'coluna3' => 'coluna3.php',
'rodape' => 'rodape.php'
);

new View('class.template.php',$tags);

 

 

creio q seja mais o menos isso q você quer.. bons estudos

 

dexo ver se entendi

no caso você tirou o require_once('functions/class.template.php'); que estava no codigo e subistituiu pela pagina view.php que é a classe que vai faser a seleção no banco de dados e vai mostrar qual é o atalho a ser usado o link é isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

então a probabilidade de erro no meu script é grande. tem q implementar

 

se você fosse criar um adm pra pessoa selecionar o template cara cada existe a necessidade de você criar outra tabela contendo user_theme e na página q chama a view você precisa realizar uma consulta para obter o nome/id do template q irá ser utilizado

Compartilhar este post


Link para o post
Compartilhar em outros sites

kkkkkkkkkkkkkkk sim deu erro

 

Notice: Undefined variable: tp in C:\wamp\www\index.php on line 20

 

Fatal error: Call to a member function parseTemplate() on a non-object in C:\wamp\www\index.php on line 20

 

no banco de dados na tabela indic_theme eu coloquei o atalho que tava sendo usado antes so para testar themes/padrao/template.html

 

e na pagina index php que ta puxando a view eu coloquei a coneção com banco de dados

 

Não existe uma forma mais simples de informar o atalho que ta na tabela indic_theme ao $tp = new templateParser('atalho aqui'); sem usar outra função ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é mais fácil fazer uma simples consulta no banco e por o resultado ali?

kkk isso que eu queria saber mas tipo como eu iria por o resultado da consulta la dando um simples echo? tipo tentei dessa forma mas nao obtive muito sucesso

 

 

a e orbigado por atender meu pedido fico muito grato @Gabriel Jacinto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu não entendi muito bem, vou dar minha opinião.

Se cada usuário, em sua tabela, tem um campo com o indic_theme, não daria certo fazer um SELECT com um WHERE pro ID do usuário logado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu não entendi muito bem, vou dar minha opinião.

Se cada usuário, em sua tabela, tem um campo com o indic_theme, não daria certo fazer um SELECT com um WHERE pro ID do usuário logado?

dexa eu tentar explicar melhor

 

 

eu tenho o index.php

 

<?php include('connections/conexao.php'); ?>
<?php
//inclui a classe
require_once('functions/class.template.php');

//instancia a classe
$tp = new templateParser('themes/padrao/template.html');

//define os parâmetros da classe
$tags = array(
		'titulo' => 'Meu template',
		'cabecalho' => 'cabecalho.php',
		'menu' => 'menu.php',
		'coluna1' => 'coluna1.php',
		'coluna2' => 'coluna2.php',
		'coluna3' => 'coluna3.php',
		'rodape' => 'rodape.php'
	);

//faz a substituição
$tp->parseTemplate($tags);

// exibe a page
echo $tp->display();
?>

 

e tenho o class.template.php

<?php
class templateParser
{
private $output;

//construtor faz a carga do template
function templateParser( $templateFile='../themes/padrao/template.html' ){
	(file_exists($templateFile)) ? $this->output=file_get_contents($templateFile) : die('Erro: Arquivo '.$templateFile.' não encontrado');
}

//faz a substituição
function parseTemplate($tags=array()){
	if(count($tags)>0){
		foreach($tags as $tag=>$data){
			$data = (file_exists($data)) ? $this->parseFile($data) : $data;
			$this->output = str_replace('{'.$tag.'}',$data, $this->output);
		}
	}
	else {
		die('Erro: não encontramos o arquivo ou texto');
	}
}

//Enquanto o buffer de saída estiver ativo, não é enviada a saída do script
function parseFile($file){
	//Ativar o buffer de saída.
	ob_start();
	include($file);
	//O conteúdo deste buffer interno é copiado na variável $content
	$content=ob_get_contents();
	//descartar o conteúdo do buffer.
	ob_end_clean();
	return $content;
}

//Exibe o tempalte
function display(){
	return $this->output;
}
}

 

 

ta o que eu quero com esses codigos e criar um sistema de template onde eu possa mudar o template por um painel administrativo, e como essas trocas ocorrem: elas occorrem quando aquele caminho é mudado //instancia a classe

$tp = new templateParser('themes/padrao/template.html'); <- esse ai , como as templates para serem mudadas eu tenho que mudar esse caminho ai informando a nova template eu queria uma forma de editar este caminho atravez de um painel ou sej apara isso eu teria que usar o banco de dados , e no meu banco de dados tem uma tabela chamada themes e uma coluna chamada indic_theme essa coluna fica o atalho dos temas que devem ser informados ao codigo php e uma coluna nome que seria o nome do tema. bom acho que agora d apra entender :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai você gostaria de editar o tema através do BD? Mudando pelo nome que tem lá?

sim mas se tiver outro jeito de faser esse sistema com um painel de administração mas acho que a melhor forma é esta né

 

tipo se eu tiver o atalho cadastrado no banco de dados

 

themes/padrao/template.html

e eu quiser mudar esta template para outra seria so cadastrar ou editar esse codigo ai

 

themes/novotemplate/template.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Editar, porque se você cadastrar, terá dois registros no BD.

OBS.: Você quer editar os dados do BD, né?!

sim mas o que vai ser feito com db depois é o problema menor o negocio e saber como eu vo faser aquele codigo funcionar puxando o caminhos das pastas do db como te expliquei!

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim mas o que vai ser feito com db depois é o problema menor o negocio e saber como eu vo faser aquele codigo funcionar puxando o caminhos das pastas do db como te expliquei!

Passei anoite procurando e só achei artigos explicando como criar ate esta parte da exibição de templates agora como administra usando um anco de dados ou faser o que eu quero nada ta complicado :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos supor você tem um banco q contém usuario (user) e template (theme)

 

então você deve criar uma tabela para relacionar esse template com esse usuario

 

você pode add um campo theme ao usuario ou criar essa tabela de ligação

 

user_theme

 

a user_theme só irá conter o id do usuario e o id do theme

 

você faz uma busca nessa tabela buscando a url do tema escolhido pelo usuario

 

fara da mesma maneira se colocar um campo na tabela user q só irá receber o id do thema escolhido por ele.

 

 

agora voltando a class View

 

require_once('functions/class.template.php');

class View{

   function __construct($theme,$tags){
       $tp = new templateParser($this->getUrl($theme));
       $tp->parseTemplate($tags);
       echo $tp->display();
   }

   private function getUrl($theme){

       //aqui voce vai fazer a busca do tema e retornará a url q será usada na classe templateParser
       // é aqui também q voce vai procurar seu usuario 
       $sql = "Select indic_theme from themes WHERE  nome = '$theme' LIMIT 1"; 
       $query = mysql_query($sql);
       $result = mysql_fetch_row($query);


       //aqui você retorna somente o indice contendo a url do respectivo tema
       return $result['indic_theme'];
   }
}

 

 

voce pode criar mais um metodo para buscar o usuario e seu respectivo tema

 

na realidade você pode fazer isso q você quer de diversas formas.

 

te passei 2 agora resta correr atrás

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.