Ir para conteúdo
clickanapolis

Colocar consulta dentro de json

Recommended Posts

Estou criando um arquivo json dessa maneira:

 

$sql = mysqli_query($con, "SELECT nome, percentual FROM atleticas order by percentual DESC, nome ASC");

while($vetor_ranking = mysqli_fetch_array($sql)) {

$ranking = [
    "atletica" => $vetor_ranking['nome'],
    "percentual" => $vetor_ranking['percentual']   
];

$rankingJson = json_encode($ranking);

echo $rankingJson;

}

o problema que o cliente solicitou que ao inves de criar varios ele precisa todos os cadastros dentro de um json apenas, como eu faria?

 

tipo atletica[0]

atletica[1]

 

não estou sabendo como fazer isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tento fazer como o aplicativo do cliente precisa mais não vai:

 

$ranking = [
    "ranking" => 
	
	while($vetor_ranking = mysqli_fetch_array($sql)) {
	
	[
	"id" => $vetor_ranking['id_atletica'],
    "percentual" => $vetor_ranking['percentual']
	]
	
	} 
	
];

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize a variável $ranking como um array (basta adicionar [] ao lado da variável). Crie e imprima o json fora do laço de repetição (while).

while(/** código **/)
{
   $ranking[] = /** restante do código **/;
}

// criação do json

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
$sql = mysqli_query($con, "SELECT nome, percentual FROM atleticas order by percentual DESC, nome ASC");

//fora do laço para criar array
$ranking = []; 
while($vetor_ranking = mysqli_fetch_array($sql)) {

//indico ranking como array para resultado ficar agrupado
$ranking[] = [
    "atletica" => $vetor_ranking['nome'],
    "percentual" => $vetor_ranking['percentual']   
];

}

//retiro a criação do objeto do looping para gerar um objeto com todos os resultados e não um objeto para cada resultado
$rankingJson = json_encode($ranking);
//imprimo fora do looping o objeto para mostrar o resultado total e não um resultado por objeto.
echo $rankingJson;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Wagner Martins Bodyboard
      Preciso separar uma consulta Sql por categorias.
      Estou fazendo assim
      $mysqli = new mysqli('xxx','xxx','xxx', 'xxx'); $sql = "SELECT empresas.id AS id_empresas, empresas.nome AS nome_empresa, empresas.bairro AS bairro_empresa, empresas.rua AS rua_empresa, empresas.numero AS numero_empresa, empresas.complemento AS complemento_empresa, empresas.CEP AS cep_empresa, empresas.logomarca AS logomarca_empresa, empresas.horario_funcionamento AS horario_funcionamento_empresa, empresas.email AS email_empresa, empresas.telefone1 AS telefone1_empresa, empresas.telefone2 AS telefone2_empresa, empresas.descricao AS descricao_empresa, empresas.site AS site_empresa, empresas.facebook AS facebook_empresa, empresas.twitter AS twitter_empresa, empresas.instagram AS instagram_empresa, empresas.cartao1 AS cartao1_empresa, empresas.cartao2 AS cartao2_empresa, empresas.banner1 AS banner1_empresa, empresas.banner2 AS banner2_empresa, empresas.banner3 AS banner1_empresa, empresas.banner1 AS banner1_empresa, empresas.banner1 AS banner1_empresa, empresas.banner3 AS banner3_empresa, empresas.url_empresa AS url_empresa, empresas.palavras_chave AS palavras_chave_empresa, empresas.marcas AS marcas_empresa, empresas.plano AS plano_empresa, empresas.plano_congelado AS plano_congelado_empresa, empresas.dia_vencimento AS dia_vencimento_empresa, empresas.pago AS pago_empresa, empresas.id_categoria AS id_categoria_empresa, empresas.id_subcategoria AS id_subcategoria_empresa, empresas.banner_tempo AS banner_tempo_empresa, categorias.id AS id_categoria, categorias.nome_categoria FROM empresas INNER JOIN categorias ON empresas.id_categoria = categorias.id ORDER BY nome_empresa"; $query = $mysqli->query( $sql )or die( $mysqli->error ); $prev_cat = ''; $nome_categ = array(); while( $dados = $query->fetch_object() ) {?> <? if (($dados->plano_empresa=="Prata")){ ?> <div class="container"> <h2><? echo utf8_encode($dados->nome_categoria); ?></h2> <div class="row free"> <div class="col-md-4"> <b><a href="<? echo utf8_encode($dados->site_empresa); ?>"><? echo utf8_encode($dados->nome_empresa); ?></a></b> </div> <div class="col-md-4"> <p> <? $query2=mysql_query("SELECT * FROM rua where id=".$dados->rua_empresa.""); if (mysql_num_rows($query2) > 0) { while ($row2 = mysql_fetch_array($query2)) { echo $row2['rua']; }}?> , <? echo $row['numero'] ?> <? $query3=mysql_query("SELECT * FROM bairro where id=".$dados->bairro_empresa.""); if (mysql_num_rows($query3) > 0) { while ($row3 = mysql_fetch_array($query3)) { echo $row3['bairro']; }}?> </p> </div> <div class="col-md-4" style="text-align:right"> <b><? echo $dados->telefone1_empresa; ?></b> </div> </div> </div> <? } ?>  
       
      O resultado dessa consulta fica assim

       
       
       
      Mas eu preciso que fique assim

      Como eu faria com meu código PHP?
    • Por Rzorr
      Bom Dia Pessoal, 
             Pessoal gostaria de entender a lógica do botão favoritos.  o que eu queria fazer é o seguinte colocar uma estrelinha no item que aparece no site, quando o visitante  clicar na estrela esse item vai ficar guardado em uma session, ai quando ele clicar no link favoritos aparece todos os itens que ele favoritou e quando ele fechar o navegador destrói tudo. bem simples né? mas confesso que não faço a mínima ideia de como fazer. ou até tenho mais ou menos a noção mas não sei como fazer. alguém pode me ajudar? 
    • Por paulo123araujo
      Bom, eu não estou conseguindo conectar com meu banco access.
      Quando eu executo ele sempre cai na mensagem "Banco de dados não encontrado", já verifiquei o php config e o odbc está habilitado.
      Segue o código abaixo:
      <?php $db = $_SERVER["DOCUMENT_ROOT"] ."/db/banco.accdb"; if (!file_exists($db)) { die("Banco de dados não encontrado."); } $dbNew = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$db; Uid=; Pwd=;"); $sql = "select * from clientes"; $rs = $dbNew->query($sql); while($result = $rs->fetch()) { echo $result[0].": ".$result[1]."<br />"; } ?>  
    • Por WitchMad
      Olá Gente! Se pudessem me ajudar agradeceria bastante!
      Seguinte: Estou precisando cadastrar um valor do INPUT em dois bancos de dados. Onde eu vi a solução acabou não funcionando. Ainda sou um pouco noob em PHP, então se for algo óbvio perdoai
       
      Aqui o arquivo que processa os dados para enviar:
      <?php session_start(); include_once("conexao-alunos.php"); $matricula = filter_input(INPUT_POST, 'matricula', FILTER_SANITIZE_NUMBER_INT); $nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING); $ensino = filter_input(INPUT_POST, 'ensino', FILTER_SANITIZE_STRING); $ano = filter_input(INPUT_POST, 'ano', FILTER_SANITIZE_STRING); $turno = filter_input(INPUT_POST, 'turno', FILTER_SANITIZE_STRING); $nascimento = filter_input(INPUT_POST, 'nascimento', FILTER_SANITIZE_STRING); $situacao = filter_input(INPUT_POST, 'situacao', FILTER_SANITIZE_STRING); $responsavel = filter_input(INPUT_POST, 'responsavel', FILTER_SANITIZE_STRING); $contato = filter_input(INPUT_POST, 'contato', FILTER_SANITIZE_NUMBER_INT); $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL); $endereco = filter_input(INPUT_POST, 'endereco', FILTER_SANITIZE_STRING); $cargo = filter_input(INPUT_POST, 'cargo', FILTER_SANITIZE_STRING); $empresa = filter_input(INPUT_POST, 'empresa', FILTER_SANITIZE_STRING); // Aonde eu vi era pra deixar dessa forma na sintaxe "INSERT INTO 'nome da tabela, $nomedobanco'" $result_usuarios = "INSERT INTO 'medio', $dbname (matricula, nome, turno, nascimento, responsavel, contato, email, endereco, cargo, empresa, situacao) VALUES ('$nome', '$turno', '$nascimento', '$responsavel', '$contato', '$email', '$endereco', '$cargo', '$empresa', '$situacao')"; $resultado_usuario = mysqli_query($conn, $result_usuarios); $result_usuarios_tran = "INSERT INTO 'mensalidade', $dbname_tran (matricula) VALUES ('$matricula')"; $resultado_usuario_tran = mysqli_query($conn_tran, $result_usuarios_tran); if (mysqli_insert_id($conn)){ $_SESSION['msg'] = "<p style='color:#00ff2a;'>Usuário Cadastrado com Sucesso</p>"; header("Location: index.php"); } else{ $_SESSION['msg'] = "<p style='color:red;'>Falha ao Cadastrar Usuário</p>"; header("Location: cad_aluno.php"); } ?> E aqui o arquivo de conexão:
      <?php $servidor = "localhost"; $usuario = "root"; $senha = ""; $dbname = "medio"; $conn = mysqli_connect($servidor, $usuario, $senha, $dbname); ?> <?php $dbname_tran = "transacoes"; $conn_tran = mysqli_connect($servidor, $usuario, $senha, $dbname_tran); ?>  
       
    • Por manoaj
      Boa noite pessoal, meu sistema começou a emitir uns espaços antes das respostas do ajax e n sei de onde estao vindo, ja verifiquei meu php e n tem nenhum espaço, e o engraçado e q esses espaços estao em lugares aleatórios, ontem estava funcionando normal e hj começou a fazer isso.
       
      exemplo
      normalmente utilizo assim
      if(data == 'success')
       
      agora tenho que fazer assim
      if(data.trim() == 'success')
       
      ao invés de me retornar só 'success' o data esta vindo com ' sucess' tem um espaço antes da string.
      n vi nada de incomum no php ate mesmo pq o código q uso em uma consulta uso em outras e outras funcionam, esse erro esta em códigos da mesma pagina onde outras consultas funcionam normalmente.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.