Ir para conteúdo

Arquivado

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

CbayV

mysql para json para js

Recommended Posts

Boas,

 

Tendo em conta que sou novo no forum vou fazer uma breve apresentação. Sou programador freelancer e trabalho há alguns anos essencialmente com CSS, PHP e HTML.

 

E é por essa razão que estou com alguns problemas com o presente projecto. Neste trabalho tenho que seleccionar dados da bd para um ficheiro json e utiliza-los em funções presentes num ficheiro javascript. Devido aos meus limitados conhecimentos em javascript tenho andado à procura de soluções mas infelizmente está complicado. Vou colocar aqui a descrição do que preciso para o caso de alguém conseguir ajudar.

 

--

 

1 - Neste momento é chamado para uma função (iniciar_tons) que está no ficheiro personalizador.js os dados de um ficheiro já existente chamado dados.json
--------------
var cur_tons = dados['name'].tons;
alert (Tons= " + cur_tons);
--------------
Desta forma tudo corre bem, os dados aparecem na caixa de alerta e a função apresenta os dados que estão no dados.json. Mas este é um ficheiro que já está no servidor e é editado à mão.
2 - O objectivo é que os dados a entrar na função (iniciar_tons) que está no ficheiro personalizador.js venham da base de dados
Após alguma pesquisa fiz o seguinte código dentro de um php chamado "selecciona_bd" que está na mesma pasta que o dados.json. O que este código faz é criar uma saida json, que terá o mesmo efeito que um ficheiro json (pelo menos é o que eu acho).
------------
include"config.php";

$var = array();
 $sql = "SELECT * FROM tabela_tons";
$result = mysqli_query($con, $sql);


while($obj = mysqli_fetch_object($result)) {
$var[] = $obj;
}
$json_result = json_encode($var);
-----------
A rotina vai buscar todos os dados da tabela. Fazendo um echo são todos apresentados na tela. O que me leva a pensar que até aqui está tudo ok.
3 - Agora onde encalhei e não consigo resolver:
Como é que eu passo os dados que recolhi da base de dados para a variavel json "cur_tons" que será utilizada na função iniciar_tons do ficheiro personalizador.js. Ou seja, como é que eu faço a substituição desta linha no ficheiro js ( var cur_tons = dados['name'].tons; )?
------------
Penso que seja algo deste tipo:
var cur_colors = JSON.parse(json_result);
No entanto não consigo que nada seja apresentado, nem no alert, nem na função.
Se alguém puder ajudar agradeço.
Cumps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que só faltou vc utilizar ajax para pegar os dados.

 

Vc vai enviar uma requisição para o script php, e então no retorno terá os dados para manipular.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela resposta William Bruno.

 

Entretanto já consegui resolver. Era mesmo isso, faltava utilizar ajax.

 

Agora surgiu um novo problema, que vou tentar explicar.

 

Tenho a função que recebe como Json os dados de um php. Os dados chegam como quero à função e consigo multiplicar as div's de acordo com o numero de registos que vem da bd, sendo que cada div mostra o conteúdo do campo "nome" que vem da bd.

O problema está que depois ao clicar numa das divs devo apresentar o conteúdo do campo "codigo" noutra div. Mas não consigo que o valor da variavel var_codigo fique disponível no botão. Suponho que isto seja uma coisa básica mas não estou a conseguir descobrir como se faz.

 

Deixo aqui o codigo. Se alguem puder ajudar agradeço.

 

 

 

 

 

function inicializa_dados(){

$('.content1, .content2').append('<div class="personaliza"></div>');

$.ajax ({ 

url: "personaliza/json/selecciona_db.php", //php onde faço a query de selecção;

context: document.body,
async: false,
success: function(data){
var dados_correntes = JSON.parse(data);

for (var i = 0; i < dados_correntes.length; i++) {

var var_codigo = dados_correntes[i].codigo;
var var_nome = dados_correntes[i].nome;

$('.personaliza').append('<div></div>');
$('.personaliza div:ultima').append('<span id="sp1">'+var_nome+'</span>');

};
   }
});


$('.area1 .personaliza > div').on('click', function(){


alert(var_nome);
//Como é que consigo trazer para aqui o valor da variavel var_nome referente à div que foi clicada?
//Esse valor será depois exibido noutra div, acção que consigo fazer, o problema é mesmo trazer para aqui o valor da variavel.

}); 
}
Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso aqui:

$('.personaliza div:ultima')
está errado, ne?!

 

no caso o teu click tb é insuficiente, pq como vc criou o elemento dinamicamente, vc precisa utilizar delegate para atrelar o evento.

 

E ai pegaria com:

console.log( $(this).text() );

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.