Ir para conteúdo

POWERED BY:

Arquivado

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

mcd more core

[Resolvido] Function PHP integrado ao JavaScript Dinâmico [ conf

Recommended Posts

Galera, eu gostaria de saber se teria uma forma de 'implantar' vamos se dizer assim, uma comando ou variavel PHP dentro de um código JS que esta vindo pelo comando (SRC), ou se existe uma forma de de pegar as informações PHP e por meio de JavaScript ou jQuery ou AJAX , pegar essa variavel PHP e transforma-la em uma variavel JavaScript, vejam o exemplo abaixo.

 

 

## Código PHP ##


// consulta no BD e retorna esses valores abaixo

$ano="2011";
$mes="09";
$dia="24";
$hora="23";
$minuto="10";
$segundo="00";

// quero pegar essas variaveis e implantar dentro de um JS, jQuery, AJAX, vindo por (SRC) de forma dinâmica, vejam abaixo....

 

 

## JavaScript vindo por SRC ##

 


<script type="text/javascript" src="scripts/contador.js"></script>

// pegar tudo do php acima, e incluir dentro desse dos dados que estão dentro desse arquivo (contador.js) por meio de jquery, ajax ou qualquer forma que me possibilite fazer isso.

 

## Dados dentro do código JS contador.js ##

 


// Como vocês podem ver, abaixo é onde eu quero pegar as funções PHP porém não exibindo esse código todo na página e sim sendo buscado 
dentro do SRC, exibindo assim as variaveis dentro desse código que será trazido pelo SRC do JS como mostrei acima.



/* aqui onde quero exibir e pegar as variaveis php e exibir */

var YY = 2011;  
var MM = 09;
var DD = 24;
var HH = 23;
var MI = 10;
var SS = 00;
/* aqui onde quero exibir e pegar as variaveis php e exibir */


 function atualizaContador() {
 var hoje = new Date();
 var futuro = new Date(YY,MM-1,DD,HH,MI,SS); 

var ss = parseInt((futuro - hoje) / 1000);
var mm = parseInt(ss / 60);
var hh = parseInt(mm / 60);
var dd = parseInt(hh / 960); 

 ss = ss - (mm * 60);
 mm = mm - (hh * 60);
 hh = hh - (dd * 24); 

 var restam = '';
 restam += (toString(hh).length) ? hh+'' : '';
 restam += (toString(mm).length) ? mm+'' : '';
 restam += ss+''; 

 if (dd+hh+mm+ss > 0) {
   document.getElementById('contador').innerHTML = restam;
   setTimeout(atualizaContador,0);
 } else {
   document.getElementById('contador').innerHTML = 'ACABOU O TEMPO';
}
}


 

Como a função " JS vindo do SRC ", eu considero como um "INCLUDE" tipo o PHP, sera que teria como pegar os códigos PHP lá encima ( ano, mes, dia, etc ) e colocar para reconhecer dentro desse "SRC" do JS???

 

Essa é minha dúvida, gostaria muito de saber se isso é possível, ou até mesmo se tem uma forma para se fazer isso.

 

// Mótivo por uma solução como essa, é que eu não quero que fique sendo exibido esse código direto no 'CÓDIGO FONTE' da página, porque como terá mais 10 'SRC' desses, então prefiro deixa menos poluído a página e também por uma questão de segurança.

 

Por favor se alguém ai puder mesmo me ajudar nessa força eu fico muito grato galera.

 

Aguardo uma força ai :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não dá pra fazer dessa maneira que você quer pois o PHP é server-side, enquanto o Javascript é client-side, com isso, o PHP é executado no servidor antes do JS na máquina cliente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça tudo em uma pagina so

var YY = <?php echo $ano;?>;  
var MM = <?php echo $mes;?>;
var DD = <?php echo $dia;?>;
var HH = <?php echo $hora;?>;
var MI = <?php echo $minuto;?>;
var SS = <?php echo $segundo;?>;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não dá pra fazer dessa maneira que você quer pois o PHP é server-side, enquanto o Javascript é client-side, com isso, o PHP é executado no servidor antes do JS na máquina cliente...

 

Henrique, eu entendi brother, mas será que não existe uma forma de se colocar no JS que esta dentro do (SRC) tipo um ID ou alguma viariavel no comando mesmo de JS, que pudesse pegar o resultado do PHP.

 

Algo como...

# Só um exemplo, não sei se existe isso.

<?php
$hora="2011";
?>
//
dentro do JS

var YY = 'hora';

 

e ele conseguisse pegar esse

'hora'

do JS e conciliar de que é o

$hora

do php

 

ou qual forma seria interesse de fazer isso sem que fosse exibido a parte final e principal desse código que é a função de ( TEMPO ACABOU ) pois ali irei colocar um LINK onde ele levará o ID do produto e ao terminar ele vai alterar o status par a( ENCERRADO ).

 

Valeu, aguardo.

 

faça tudo em uma pagina so

var YY = <?php echo $ano;?>;  
var MM = <?php echo $mes;?>;
var DD = <?php echo $dia;?>;
var HH = <?php echo $hora;?>;
var MI = <?php echo $minuto;?>;
var SS = <?php echo $segundo;?>;

 

# Cara, ainda não é isso, a questão é que eu não quero exibir TODA essa linha de código direto no código FONTE, e sim pegar essa linha completa por um

<script type="text/javascript" src="scripts/contador.js"></script>

de forma dinâmica que o PHP seja incluso nele, ou por meio de alguma comando JS, Jquery ou AJAX.

 

Mas valeu pela força ai.

Se tiver alguma ideia de como posso fazer isso, posta ai, vai ser de grade ajuda. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Endendi.acho que sei como fazer isso, é uma gambiarra, porem da certo

 

1º tu vai ter que fazer o servidor procurar e executar tags php em arquivos .js

Como ? no seu arquivo httpd.conf adicione essa linha

 AddType application/x-httpd-php .js

 

depois disso tudo fica mais simples,agora é so fazer os 'echos' nas vas com sessions

ex.:

 

arquivo teste.php

<?php 

$str = 'gambiarra';
session_start();
$_SESSION['gam'] = $str;
session_commit();

?>

<script src="test.js"></script>

 

arquivo test.js

<?php 
session_start();
?>


var g = '<?php echo $_SESSION['gam']; ?>';
document.write(g);

 

Repare que é o javascript que imprime gambiarra na tela

o unico problema é que se for edita-lo com qualquer editor de texto as variasveis php estarão la

 

outra solução melhor seria o php editar o arquivo que tu quer, adicionando apenas os valores nas vars...tipo xml entende ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cristiano, o não é gambiarra não, as vezes utilizo essa diretriz no .htaccess para aceitar PHP em formatos HTML .. não fica legal, mas é uma solução mais clara, espero o resultado, pois nunca fiz com JS, valeu !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, então galera, Henrique me tira uma dúvida...

 

# Como eu não estou puxando essas infor por meio de (SESSION) eu poderei usar function php para tratar esses códigos dentro de um JS?

 

EXEMPLO...

 

# Código PHP com Function #

 

arquivo -> teste.php


// consulta PHP aqui 

function Ano(){
return $ano="2011";
}

<script src="teste.js"></script>

 

 

# Código JS #

 

arquivo-> teste.js


var YY = <?php echo Ano;?>;  

 

 

Teria como funcionar assim?

 

** Porque veja bem...

 

Eu quero pegar variaveis

( $ano, $mes, $dia, $hora, $minuto, $segundo )

do BD e retornar dentro desses itens que estaram dentro do JS, realmente preciso PRINTAR essas variaveis ai, como você postou uma opção com (SESSION) e eu não estou usando, então queria saber se daria certo com

(function Ano)

como informei acima.

 

var YY = 2011;  
var MM = 09;
var DD = 24;
var HH = 23;
var MI = 10;
var SS = 00;

 

 

 

# uma dúvida simples...

 

Eu posso colocar então no .htaccess como o Andrey falou essa linha de código que ela terá a mesma função ?

 

 AddType application/x-httpd-php .js

 

??

Aguardo galera. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu poderei usar function php para tratar esses códigos dentro de um JS?

 

pode, é como se foce o arquivo .php

 

 

AddType application/x-httpd-php .js --> essa linha é um comando httpd.conf, para que o apache procure e leia tags php dentro de arquivos javascript

 

não precisa de session não, voce pode ate buscar esses dados no proprio arquivo .js

<?php 

mysql_connect('localhost','root','');
mysql_selec_db('p_files');

$sql = mysql_query("SELECT * FROM tabela ");
$c = mysql_fetch_array($sql);
$data = $c['coluna'];
?>

var g = '<?php echo $data; ?>';
document.write(g);



 

i isso não daria certo ---> var YY = <?php echo Ano;?>, pois a função ano é contrutora da lingugem,o certo seria var YY = <?php echo Ano();?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

#####################################################################################################################

 

## Fiz um teste com seu código, quando clico no ARQUIVO.JS para ver o conteúdo dentro ele BAIXA o arquivo.js, e quando abro o arquivo TUDO esta nele, até mesmo PHP mostrando de onde vem os resultados, mas de qualquer forma ele esta FORÇANDO o DOWNLOAD.

 

Eu coloquei dentro do .htaccess

AddType application/x-httpd-php .js

 

* Como não consigo visualizar, então não sei se esta dando certo.

 

Alguma ideia ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eu coloquei dentro do .htaccess

AddType application/x-httpd-php .js

 

como disse, isso é no httpd.conf, e não no htaccess

 

quando abro o arquivo TUDO esta nele, até mesmo PHP mostrando de onde vem os resultados

evidentemente, o servidor não o leu, é a mesma coisa de voce abrir qualquer arquivo .php, as funções, os ifs, tudo vai ta la

 

FORÇANDO o DOWNLOAD.

 

estranho, aki ta funcionando tudo

Compartilhar este post


Link para o post
Compartilhar em outros sites

##

 

Depois que respondi, que vi que o Henrique e Andrey haviam respondido, uma dúvida...

 

* Onde fica a httpd.conf dentro do cPanel ou após acessar o FTP?, [ estou aqui procurando em varias pastas e nada ]

 

Aguardo

 

Eu coloquei dentro do .htaccess

AddType application/x-httpd-php .js

 

como disse, isso é no httpd.conf, e não no htaccess

 

quando abro o arquivo TUDO esta nele, até mesmo PHP mostrando de onde vem os resultados

evidentemente, o servidor não o leu, é a mesma coisa de voce abrir qualquer arquivo .php, as funções, os ifs, tudo vai ta la

 

FORÇANDO o DOWNLOAD.

 

estranho, aki ta funcionando tudo

 

 

Henrique, eu só não sei onde fica o arquivo ( APACHE ) do cPanel ou ao acessar o FTP, e essa linha

AddType application/x-httpd-php .js

em qualquer lugar do .https.conf né ?

 

# Onde eu acho a pasta ( apache ) dentro do cPanel ou ao acessar o FTP ? ( estou aqui procurando e nada )...

 

aguardo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionar funciona, mas .. acusa um erro no console.

333ad6d0b04e48448e05cea.png

 

header('Content-type: text/javascript');

 

 

e essa linha

AddType application/x-httpd-php .js

em qualquer lugar do .https.conf né ?

 

no arquivo provavelmente vai ter

AddType application/x-httpd-php .php

AddType application/x-httpd-php .php3

coloque perto para ficar organizado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionar funciona, mas .. acusa um erro no console.

333ad6d0b04e48448e05cea.png

 

header('Content-type: text/javascript');

 

 

e essa linha

AddType application/x-httpd-php .js

em qualquer lugar do .https.conf né ?

 

no arquivo provavelmente vai ter

AddType application/x-httpd-php .php

AddType application/x-httpd-php .php3

coloque perto para ficar organizado.

 

 

# E onde eu acho no cPanel ou ao acessar o FTP a pasta ( APACHE ) ?

 

// Ahh, e esse

header('Content-type: text/javascript');

eu colo dentro do arquivo JS??

 

ficando assim...

 

<?php header('Content-type: text/javascript'); ?>

??

Compartilhar este post


Link para o post
Compartilhar em outros sites

/ Ahh, e esse
header('Content-type: text/javascript');
eu colo dentro do arquivo JS??

exatamente, ele serve pra tirar esse erro que andrey postou

 

quanto o arquivo httpd.conf, entre em contato com a administração do seu servidor, para encontrar a resposta

Compartilhar este post


Link para o post
Compartilhar em outros sites

/ Ahh, e esse
header('Content-type: text/javascript');
eu colo dentro do arquivo JS??

exatamente, ele serve pra tirar esse erro que andrey postou

 

quanto o arquivo httpd.conf, entre em contato com a administração do seu servidor, para encontrar a resposta

 

# Sim, testei 'LOCALHOST' achei o APACHE coloquei a linha de código certo abaixo do .php que tem e não rodou.

Compartilhar este post


Link para o post
Compartilhar em outros sites
coloquei a linha de código certo abaixo do .php que tem e não rodou.

 

o que aconteceu ?

 

Pow, nada aconteceu, veja como esta todos os meus códigos...

 

# arquivo.php #

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<?php 
function MinU(){
return $min="50";
}

?>
<script type="text/javascript" src="teste.js"></script>
</head>

<body onLoad="atualizaContador()">
TEMPO <span id="contador"></span>
</body>
</html>

 

# arquivo.js #

<?php header('Content-type: text/javascript'); ?>

var YY = 2011;  
var MM = 09;
var DD = 24;
var HH = 21;
var MI = <?php echo MinU();?>;
var SS = 00;



 function atualizaContador() {
 var hoje = new Date();
 var futuro = new Date(YY,MM-1,DD,HH,MI,SS); 

var ss = parseInt((futuro - hoje) / 1000);
var mm = parseInt(ss / 60);
var hh = parseInt(mm / 60);
var dd = parseInt(hh / 960); 

 ss = ss - (mm * 60);
 mm = mm - (hh * 60);
 hh = hh - (dd * 24); 

 var restam = '';
 restam += (toString(hh).length) ? hh+'' : '';
 restam += (toString(mm).length) ? mm+'' : '';
 restam += ss+''; 

 if (dd+hh+mm+ss > 0) {
   document.getElementById('contador').innerHTML = restam;
   setTimeout(atualizaContador,0);
 } else {
   document.getElementById('contador').innerHTML = 'ACABOU';
}
}

 

 

# httpd.conf #

AddType application/x-tar .tgz
   AddType application/x-httpd-php .php
AddType application/x-httpd-php .js

 

( ele não exibiu )

 

# Alguma solução ?, o que pode ter acontecido ??

 

Aguardo brow B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

tu não passo a função MinU para o arquivo.js, compreendestes ?

 

voce pode passar tudo para o arquivo.js

<?php header('Content-type: text/javascript');

function MinU(){
return $min="50";
}



?>

var YY = 2011;  
var MM = 09;
var DD = 24;
var HH = 21;
var MI = <?php echo MinU();?>;
var SS = 00;



 function atualizaContador() {
 var hoje = new Date();
 var futuro = new Date(YY,MM-1,DD,HH,MI,SS); 

var ss = parseInt((futuro - hoje) / 1000);
var mm = parseInt(ss / 60);
var hh = parseInt(mm / 60);
var dd = parseInt(hh / 960); 

 ss = ss - (mm * 60);
 mm = mm - (hh * 60);
 hh = hh - (dd * 24); 

 var restam = '';
 restam += (toString(hh).length) ? hh+'' : '';
 restam += (toString(mm).length) ? mm+'' : '';
 restam += ss+''; 

 if (dd+hh+mm+ss > 0) {
   document.getElementById('contador').innerHTML = restam;
   setTimeout(atualizaContador,0);
 } else {
   document.getElementById('contador').innerHTML = 'ACABOU';
}
}

 

 

ou usar session

 

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<?php 
function MinU(){
return $min="50";
}

$_SESSION['min'] = MinU();

?>
<script type="text/javascript" src="teste.js"></script>
</head>

<body onLoad="atualizaContador()">
TEMPO <span id="contador"></span>
</body>
</html>

 

<?php
session_start();
header('Content-type: text/javascript'); ?>

var YY = 2011;  
var MM = 09;
var DD = 24;
var HH = 21;
var MI = <?php echo $_SESSION['min'];?>;
var SS = 00;



 function atualizaContador() {
 var hoje = new Date();
 var futuro = new Date(YY,MM-1,DD,HH,MI,SS); 

var ss = parseInt((futuro - hoje) / 1000);
var mm = parseInt(ss / 60);
var hh = parseInt(mm / 60);
var dd = parseInt(hh / 960); 

 ss = ss - (mm * 60);
 mm = mm - (hh * 60);
 hh = hh - (dd * 24); 

 var restam = '';
 restam += (toString(hh).length) ? hh+'' : '';
 restam += (toString(mm).length) ? mm+'' : '';
 restam += ss+''; 

 if (dd+hh+mm+ss > 0) {
   document.getElementById('contador').innerHTML = restam;
   setTimeout(atualizaContador,0);
 } else {
   document.getElementById('contador').innerHTML = 'ACABOU';
}
}

 

quanto ao httpd.conf online

 

O arquivo httpd.conf é o arquivo principal de configuração do Apache, se encontra dentro do diretório Conf, no diretório de instalação do Apache.Para ter acesso a isso, tu tem que entrar em contato com a administração para obter tais informações

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.