Ir para conteúdo

POWERED BY:

Arquivado

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

vasconcelloslf

[Resolvido] JSON + PHP + MYSQL

Recommended Posts

Olá e boa tarde para todos !

Bom galera, tenho em mãos a seguinte situação: O servidor (usando php) vai no banco de dados (mysql), e faz uma consulta que retorna várias linhas. Eu depois, no "horsemode," crio um JSON e dou um echo nele, para depois a pagina recuperar esse JSON via ajax.

 

O problema é: Nao gosto de programar no "horsemode", abomino na verdade, e como estou migrando agora para php/js, gostaria de saber qual seria o modo mais otimizado de fazer o que eu tenho feito, porque o codigo que eu fiz parece um espageti.

 

Funciona, essa era a ideia inicial, mas agora eu gostaria que o pessoal mais experiente me dissesse se é dessa forma mesmo que deve ser feito ou se tem algum modo mais otimizado (que consuma menos processamento) de gerar esse JSON.

 

OBS: Quero gerar o JSON dinâmico mesmo dentro da pagina, sem ter que criar um arquivo JSON separado.

 

Aqui vai o que eu fiz:

 

//...

$json = '{ "messenger": [';

$i = 0;

while($row_msg = mysqli_fetch_assoc($result))
{
 $i++;

 $json .= '{ "id":' . ' ' . '"' . $row_msg['id'] . '"' . ', ';
 $json .= '"to":' . ' ' . '"' . $row_msg['to'] . '"' . ', ';
 $json .= '"from":' . ' ' . '"' . $row_msg['from'] . '"' . ', ';
 $json .= '"message":' . ' ' . '"' . $row_msg['message'] . '"' . ', ';
 $json .= '"date":' . ' ' . '"' . $row_msg['date'] . '"' . ', ';
 $json .= '"time":' . ' ' . '"' . $row_msg['time'] . '"' . ', ';
 $json .= '"show":' . ' ' . '"' . $row_msg['show'] . '"' . ', ';
 $json .= '"x":' . ' ' . '"' . $x . '"' . ', ';
 $json .= '"removed":' . ' ' . '"' . $row_msg['removed'] . '"';

 if($num_rows != $i) { $json .= '},'; }
 else { $json .= '}'; }
}

$json .= ']}';

echo $json;

 

Tentei, sem sucesso, criar primeiro uma array em php e depois usar a funcao json_encode(array), o json gerado nunca fica igual ao que eu fiz no "horsemode", que é essa concatenção horrorosa de string. Alguem pode me ajudar de alguma maneira ? Nao quero nada pronto, uma luz já basta !

 

OBS: Se alguem quiser usar esse codigo em algum lugar, sem problemas.

 

Abraços !

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mais correto para gerar o JSON seria usando a função json_encode mesmo em vez de concatenar strings como você fez. Até porque usando a função o conteúdo já fica devidamente formatado para esta linguagem.

 

Mostre como você tentou fazer e qual foi a saída obtida e diga como deveria ser a saída.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa foi a minha tentativa usando array de php:

 

// ...
$i = 0;
$lastx = array('messenger' => array());

while($row_msg = mysqli_fetch_assoc($result1))
{
 $lastx['messenger'][$i] = $row_msg['id'];
 $lastx['messenger'][$i] = $row_msg['to'];
 $lastx['messenger'][$i] = $row_msg['from'];
 $lastx['messenger'][$i] = $row_msg['message'];
 $lastx['messenger'][$i] = $row_msg['date'];
 $lastx['messenger'][$i] = $row_msg['time'];
 $lastx['messenger'][$i] = $row_msg['show'];
 $lastx['messenger'][$i] = $row_msg['removed'];
 $lastx['messenger'][$i] = $x;

 $i++;
}

echo json_encode($lastx);

 

Quero que ele exiba o JSON no formato abaixo:

 

{ "messenger": [{ "id": "7", "to": "user2 ", "from": "user1", "message": "teste", "date": "2011-01-09", "time": "15:12:28", "show": "1", "removed": "0", "y": "2"},{ "id": "8", "to": "user2 ", "from": "user1", "message": "dsasdas", "date": "2011-01-09", "time": "15:19:53", "show": "1", "removed": "0", "y": "2"}]}

 

Mas ele retorna o seguinte:

 

{"messenger":["20","20","20","20","20","20","20","20"]}

 

OBS: $x é uma variavel previamente definida.

 

Alguma ideia do que pode ser ? Obrigado desde já !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

 

$i = 0;

$lastx = array('messenger' => array());

while($row_msg = mysqli_fetch_assoc($result1))
{
$lastx['messenger'][$i]['id'] 	= $row_msg['id'];
$lastx['messenger'][$i]['to'] 	= $row_msg['to'];
$lastx['messenger'][$i]['from']	= $row_msg['from'];
$lastx['messenger'][$i]['message'] = $row_msg['message'];
$lastx['messenger'][$i]['date']	= $row_msg['date'];
$lastx['messenger'][$i]['time']	= $row_msg['time'];
$lastx['messenger'][$i]['show']	= $row_msg['show'];
$lastx['messenger'][$i]['removed'] = $row_msg['removed'];
$lastx['messenger'][$i]['x'] 	= $x;

$i++;
}

echo json_encode($lastx);

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.