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 Augusto A.S
      Boa noite, sou novo aqui no fórum, estou tentando fazer um sistema de comentários para um site, e minha dúvida é a seguinte:
       
      Como faço para, através do "f" (fopen, fwrite...), escrever um conteúdo no meio de um arquivo html?
       
      O código que fiz escreve apenas no final do arquivo, o que causa problemas, pois o texto escrito se trata de uma tag <li></li> que deverá ser colocado dentro de uma tag <ul></ul>, a qual se localiza na tag <html></html>, no arquivo "comentario.html". Porém, no código que fiz, está escrevendo fora da tag <html></html>.
    • Por Vinícius022
      Acho que estou com algum problema de herança ou coisa assim, eu não consigo chamar mais de um Container::getModel no meu Controller. Vou colocar o meu __construct aqui e o erro que ele me retorna

      PaginaController.php
      public function __construct()
      {
        parent:: __construct();
        #se eu comentar e deixar apenas um ai ele funciona, mas quando tento fazer com mais de um ele da um erro
        $this->contato       = Container::getModel("Contato");
        $this->noticia       = Container::getModel("Noticias");
        $this->institucional = Container::getModel("Institucional");
        $this->atuacao    = Container::getModel("Atuacao");
        $this->banner    = Container::getModel("Banners");
      }
      Container.php
      public static function getModel($model)
      {
          $objModel = "\\App\\Models\\".$model;
          return new $objModel(DataBase::getDataBase());
      }
      Fatal error: Uncaught TypeError: Argument 1 passed to Core\BaseModel::__construct() must be an instance of PDO.
    • Por Eduardo Pereira de Barros
      Boa tarde,
       
      Tenho o seguinte problema.
       
      Faço um requisição em um webservice, me retorna como string dados igual arquivo bacário.
       
       
      Atraves do strpos no PHP eu verifico se nesse retorno ha o seguinte conteúdo: "HA MAIS REGISTROS A ENVIAR".
       
      Se houver preciso reenviar esse bloco para a função de reconsulta afim de trazer novos registros.
       
      Enviando esse primeiro bloco eu recebo um novo, se esse bloco vier também com o conteúdo : "HA MAIS REGISTROS A ENVIAR", preciso pegar somente esse que retornou e reenviar para a função de reconsulta.
       
       
      Ai que está o problema, pois não estou conseguindo isolar somente a última requisição, ele está enviando os dois blocos resultantes e não apenas o último.
       
      A regra é "SEMPRE ENVIAR O ÚLTIMO BLOCO RESULTANTE PARA RECEBER MAIS REGISTROS".
       
      Ja tente com while strpos porem sempre acaba enviando tudo.
       
      Esse foi a última ganbiarra, mas não está rolando.
       
       
      $output = self::curlSerasa($id, $doc, $tipo, $adicionais, $uf); if(strpos($output, 'HA MAIS REGISTROS A ENVIAR') !== false) { $arr = []; $arr[0] = $output; $i=1; while(true) { $arr[$i] = self::curlSerasaContinua($arr[0], $produto->logon, $produto->senha); $proximo = $arr[$i-1]; if(strpos($proximo, 'HA MAIS REGISTROS A ENVIAR') !== false) { $arr[$i] = self::curlSerasaContinua($arr[$i-1], $produto->logon, $produto->senha); $output .= $arr[$i]; } elseif(strpos($arr[$i], 'PROCESSO ENCERRADO NORMALMENTE') !== false) { break; } $i++; } }  
    • Por subplo
      Bom dia, pessoal,
       
      Tenho um projeto em Laravel 5.x e queria gerar PDF de um Blade já customizado em CSS.
       
      Tentei fazer com o DomPDF, porém ele não interpreta o CSS da mesma forma que aparece na página do sistema, parece que ainda não há suporte para tal.
       
      Alguma sugestão?
       
      Agradeço desde já a colaboração de todos, fico no aguardo.
    • Por artur0407
      Boa noite;
       
      Estou realizando testes com a biblioteca PDO para banco de dados com PHP;
      Logo de inicio estou realizando minha conexão com o banco utilizando um código simples nativo da biblioteca.
      No entanto, mesmo errando o código propositalmente e tendo setado todos os possíveis erros e tratando com o bloco "try catch" o php não me retorna erro de nenhuma forma.
       
      Abaixo ambos os códigos;
       
      Primeiro sem erros:
      <?php ini_set('display_errors',true); ini_set('display_startup_erros',1); error_reporting(E_ALL); $username = 'root'; $password = ''; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_CASE => PDO::CASE_NATURAL, PDO::ATTR_ORACLE_NULLS => PDO::NULL_EMPTY_STRING, PDO::ATTR_PERSISTENT => true ]; try { $conn = new PDO('mysql:host=localhost; dbname=test', $username, $password, $options); $conn->exec("set names utf8"); } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } ?> Posteriormente com erro proposital (na string de conexão da classe PDO)
      <?php ini_set('display_errors',true); ini_set('display_startup_erros',1); error_reporting(E_ALL); $username = 'root'; $password = ''; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_CASE => PDO::CASE_NATURAL, PDO::ATTR_ORACLE_NULLS => PDO::NULL_EMPTY_STRING, PDO::ATTR_PERSISTENT => true ]; try { $conn = new PDO('mysql:hst=localhost; dbname=test', $username, $password, $options); $conn->exec("set names utf8"); } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } ?> Observem que no construtor do pdo, no lugar de host escrevi 'hst' e o php não retorna erros!
       
      Como sou novo aqui, me desculpem algum erro de formatação na mensagem, obrigado!
×

Informação importante

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