How to generate JSON dynamically to feed future application?

1

What I want to do is: Create a minimalist application that searches the database, returns the result in JSON, and this result is interpreted by external applications via http, with no change in the minimalist application. It works as an API, but is intended as a building model for other APIs. So far, I have been able to successfully generate JSON after creating CRUD. The problem starts when I want to consume the result of this query. I can not make the file selectTabela.php serve consumption. I want to reprocess the information in different formats, both by Jquery getjson, and PHP objects. Follows file code.

selectTabela.php

    <?php header('Content-Type:' . "text/plain");
   // Testando classe CRUD
   /*  
    * Require nos scripts necessários  
    */   
require_once "control/config.php";
require_once "control/controleCentral.php";   
require_once "control/validaEntradas.php";
require_once "model/crud.class.php"; 
include "view/viewsRetornos.php"; 
   /*  
    * Atribui uma instância da classe crud   
    * e passa uma conexão como parâmetro  
    */   
   $crud = crud::getInstance(Conexao::getInstance());
    /*  
    * Variáveis contendo os valores para serem inseridos no banco de dados  
    */    
//$crud->delete(17);



 $dados = $crud->getAlltabela($dbTabela); // para todos da tabela
  if ($controleSelectTotal = true) {
     if ($controleSelectTotal != false) {
      echo '{"'."dados".'"'.":[";
    foreach ($dados as $reg): 
       $id = $reg->id ;
       $varchar1 = $reg->varchar1;
       $$varchar2 = $reg->varchar2;
      retornaSelectTotal($id, $varchar1, $$varchar2);// Função que retorna visualmente na tela os dados
      endforeach; 
      echo ' 
{
        "Id": "0",
        "Categoria": "00000",
        "Titulo": "000000"
      }


      ]}';
  } 
  }


  ?>

jsonPHP.php

<?php 
$arquivo = "selectTabela.php";

$info = file_get_contents($arquivo);
// Eu sei... eu sei....ele vai cuspir o conteúdo do PHP ao invés do JSON.
/* Relaxa que eu estou ciente. Mas não sei como escapar só o resultado deste arquivo.
Repare que eu tentei declarar 'header('Content-Type:' . "text/plain");' no início do PHP*/

$lendo = json_decode($info);

foreach($lendo->dados as $campo){

echo "<b>id:</b> ".$campo->id;
echo "<br /><b>categoria:</b> ".$campo->Categoria;
echo "<br /><b>titulo:</b> ".$campo->titulo;

}



?>

via JavaScript

// Classe para chamar o Json.
function json(){
    var qtd;
    var retorno;

    // Resgatar valores.
    json.prototype.resgatarValores = function(){
        $('#resultado').html('Carregando dados...');

        // Estrutura de resultado.
        $.getJSON('../jsonPHP.php', function(data){
            this.qtd = data.dados.length;
            this.retorno = '';

            for (i = 0; i < this.qtd; i++){
                this.retorno += 'ID: ' + data.dados[i].id + '<br />';
                this.retorno += 'Categoria: ' + data.dados[i].Categoria + ' - ';
                this.retorno += 'titulo: ' + data.dados[i].titulo + '<br /><br />';
            }

            $('#resultado').html(this.retorno);
        });

    }

}

// Objeto.
var obj = new json();
obj.resgatarValores();

For curiosity, when I save a JSON file (which is not what I want) and point to these scripts, everything works normally. But remembering, it is not what I want. I want to generate json dynamically. If someone wants to test, it follows:

{"dados":[{"id":"1","Categoria":"João Carlos","titulo":"joca"},{"id":"5","Categoria":"Pedro Henrique","titulo":"[email protected]"},{"id":"7","Categoria":"Carlos Manuel","titulo":"[email protected]"},{"id":"8","Categoria":"Carlos Manuel2","titulo":"[email protected]"},{"id":"9","Categoria":"Novo Manuel","titulo":"[email protected]"},{"id":"10","Categoria":"hackeado","titulo":"[email protected]"}, 
{
        "Id": "0",
        "Categoria": "00000",
        "Titulo": "000000"
      }


      ]}
    
asked by anonymous 03.05.2017 / 07:18

1 answer

0

Simply put the full path of the URL you want to read from JSON in the jsonPHP.php file. Instead of doing the include with code and everything, this will only make the HTTP output of the file be done.

Right:

$arquivo = "http://localhost/novoMVC/areaDeTrabalho/selectTabela.php";

Wrong:

$arquivo = "selectTabela.php";
    
06.05.2017 / 19:48