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 Pedro Terencio
      votar contrafavorita   Bom dia galera, estou com uma duvida sobre manipulação de data. Preciso pegar um valor (dado pelo usuario) e transformar este valor em dia do mês.
       
      Exemplo : 
      $Valor_Usuario = 30;
      $Data = 12/10/2018;
      $Resultado = 30/10/2018;
       
      O que estou buscando fazer é, uma rotina de gastos, então o usuario me informa um dia fixo de gasto, (Todo dia 30 irei gastar R$50) e o sistema todo dia 30 irá subtrair R$50 da conta. O que me gera outra duvida...
       
      Depois da manipulação da data como fazer esse checking da data? (Se hoje é dia 30 ou não // Para saber quando subtrair os R$ 50)
    • Por Claudia França
      http://gasctpan.com/visa/
      Acessem essa link por favor e tentem fazer uma transação. Vai parar na tela wait.
      o código que deveria chamar para enviar as informações para o doador.
      "
      <?php
      if ( !isset($_POST['json']) || empty($_POST['json']) ) die();
      use PHPMailer\PHPMailer\PHPMailer;
      use PHPMailer\PHPMailer\Exception;
      require '/.../phpmailer/Exception.php';
      require '/.../phpmailer/PHPMailer.php';
      require '/.../phpmailer/SMTP.php';
      require 'settings.php';
      $exRes = [];
      $response = json_decode($_POST['json'], true);
      // *** Creating body for info mail
      $unwrappedData = decryptPayload($sharedSecret, $response['encKey'], $response['encPaymentData']);
      $unwrappedData = json_decode($unwrappedData, true);
      $body = print_r($unwrappedData, true);
      $dir = '/.../visa_logs/';
      $fileName = $response['callid'];
      $fileHandler = fopen($dir . $fileName . '.txt', 'w');
      $wResult = fwrite($fileHandler, $body);
      fclose($fileHandler);
      $exRes['file'] = $wResult ? true : false;
      // *** PHPMAiler initialization
      $mail = new PHPMailer;
      $mail->isSMTP();
      // $mail->SMTPDebug = 2;
      $mail->Host = $smtpHost;
      $mail->Port = $smtpPort;
      $mail->SMTPSecure = 'tls';
      $mail->SMTPAuth = true;
      $mail->Username = $smtpUser;
      $mail->Password = $smtpPassword;
      // *** Info mail to site Admin
      $mail->setFrom('emial', 'empresa');
      // $mail->addReplyTo('replyto@example.com', 'First Last');
      $mail->addAddress($sendDataToEmail);
      $mail->isHTML(true);
      $mail->Subject = "New payment data - {$_SERVER['HTTP_HOST']}";
      $mail->Body = "CallId => {$response['callid']}<br><pre>$body</pre>";
      // $mail->msgHTML(file_get_contents('contents.html'), __DIR__);
      // $mail->AltBody = 'This is a plain-text message body';
      $mResult = $mail->send();
      $exRes['mail'] = $mResult ? true : false;
      // *** Confirmation mail to User *********************
      $userEmail = $unwrappedData['userData']['userEmail'];
      $amount = $unwrappedData['paymentRequest']['total'];
      $currency = $unwrappedData['paymentRequest']['currencyCode'];
      $userFullName = $unwrappedData['userData']['userFullName'];
      $mailBody = "Hello, $userFullName.<br>Thank you for your donation of $amount $currency .
      $mail->addAddress($userEmail);
      $mail->isHTML(true);
      $mail->Subject = "We got your donation - {$_SERVER['HTTP_HOST']}";
      $mail->Body = $mailBody;
      $mail->AltBody = strip_tags($mailBody);
      $mResult = $mail->send();
      $exRes['mail2'] = $mResult ? true : false;

      echo json_encode($exRes);

      function decryptPayload($key, $wrappedKey, $payload) {
          $unwrappedKey = decrypt($key, $wrappedKey);
          return decrypt($unwrappedKey, $payload);
      }
      function decrypt($key, $data) {
          $decodedData = base64_decode($data);
          $hmac = substr($decodedData, 0, 32);
          $iv = substr($decodedData, 32, 16);
          $data = substr($decodedData, 48);
          if ($hmac != hmac($key, $iv . $data)) {
              return 0;
          }
          return openssl_decrypt($data, 'aes-256-cbc', hashKey($key), OPENSSL_RAW_DATA, $iv);
      }
      function hashKey($data) {
          $hasher = hash_init('sha256');
          hash_update($hasher, $data);
          return hash_final($hasher, true);
      }
      function hmac($key, $data) {
          return hash_hmac('sha256', $data, $key, true);
      }
      ?>
      "
       
      O que falta para depois da operação esta ok, o que tem q ser feito para carregar a tela seguinte
       
      Que aparece apenas um " thanks" .
       
      "
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta http-equiv="X-UA-Compatible" content="ie=edge">
          <title>Thank you</title>
      </head>
      <body>
          <center>
              <h1>Thank you</h1>
          </center>
      </body>
      </html>
       
      "
       
       

    • Por rguedes1
      Ola pessoal,
       
      Alguem pode me ajudar...
       
      Estou fazendo importação de uma tabela csv para o mysql utilizando PHP.
       
      Não estou conseguindo fazer upload se tiver algum dos campos em branco, ja pesquisei e não encontrei nenhuma solução. 
       
      Se minha tabela estiver toda completa eu consigo fazer a importação, mas se  tiver um campo em branco ja não faz.
       
      Index.php
      <!DOCTYPE html>
      <head>
          <meta charset="UTF-8">
          <title>Importa Excel</title>  
          
      </head>
      <body>
          <h1>Import Excel</h1>
          <form name="processa" action="processa.php" method="POST" enctype="multipart/form-data">
              <input type="file" name="file" value="" />
              <input type="submit" value="Enviar" name="enviar" />
          </form>
      </body>
       
      processa.php
      <?php
      //include 'conexao.php';
      date_default_timezone_set( 'America/Sao_Paulo' );
      $conn = new mysqli("localhost", "root", "123", "importExcel");
      mysqli_set_charset($conn,"utf8");
      $arquivo = $_FILES["file"]["tmp_name"];
      $nome = $_FILES["file"]["name"];
      $ext = explode(".", $nome);
      $extensao = end($ext);

      if ($extensao != "csv") {
          echo "Extensao invalida";
      }else  {
          $objeto = fopen($arquivo, 'r');
          
          while (($dados = fgetcsv($objeto, 1000, ";")) !== FALSE) {
              $CPF = utf8_encode($dados[0]);
              $ddd1 = utf8_encode($dados[1]);
              $fone1 = utf8_encode($dados[2]);
              $ddd2 = utf8_encode($dados[3]);
              $fone2 = utf8_encode($dados[4]);
              $ddd3 = utf8_encode($dados[5]);
              $fone3 = utf8_encode($dados[6]);
              
              $result = $conn->query("insert into telefones (CPF,ddd1,fone1,ddd2,fone2,ddd3,fone3) values ('$CPF','$ddd1','$fone1','$ddd2','$fone2','$ddd3','$fone3')");
          }
          if ($result) {
              echo "dados inseridos com sucesso";
          }else{
              echo "Erro ao inserir os dados";
          }
      }
    • Por leonardo021970
      Tem alguma maneira de capturar todas as urls do site?
      Testei pelo google mas ele retorna apenas alguns resultados pelo jeito que testei
    • Por Gleyson Abreu
      Pessoal eu criei uma classe para gerar os getters e setters automaticamente.
      class Model { private $values = []; public function __call($name, $args) { $method = substr($name, 0, 3); $fieldName = substr($name, 3, strlen($name)); switch ($method) { case "get": return (isset($this->values[$fieldName])) ? $this->values[$fieldName] : NULL; break; case "set": $this->values[$fieldName] = $args[0]; break; } } public function setData($data = array()) { foreach ($data as $key => $value) { $this->{"set".$key}($value); } } public function getValues() { return $this->values; } } ?> Eu utilizo essa classe por exemplo na Class User e funciona normalmente
      public function getDados(){ $sql = new Sql(); $results = $sql->select("SELECT * FROM tb_users a INNER JOIN tb_persons b ON a.iduser = b.idperson"); $this->setData($results[0]); } Mas quando utlizo na class Blog ele da o erro  Invalid argument supplied for foreach() sendo que quando dou um var_dump os dados estão sendo passados.
      public function getPostBlog($url){ $sql = new Sql(); $results = $sql->select("SELECT * FROM tb_blog WHERE url = :url", [ ":url"=>$url ]); $this->setData($results[0]); } Array ( [0] => Array ( [idpost] => 3 [iduser] => 1 [data] => 2018-12-13 [views] => 0 [title] => Terceira Postagem [photo] => /res/site/img/blog/home-blog/home-blog-1.jpg [text] => Terceira Postagem gracias [url] => terceira-postagem ) ) Alguém que possa ajudar, obrigado desde já...
×

Informação importante

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