Ir para conteúdo

Arquivado

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

Ronny Santana

mySQL PDO para JSON

Recommended Posts

Boa tarde pessoal, desde ontem estou tentando gerar um JSON com dados vindo do mySQL, e nada dá certo, não retorna na tela, nem erro e quando dou um var_dump as informações aparecem.

Será que é fácil de resolver para os mais experientes?

 

$DBC = self::DBC();
$QUERY = $DBC->prepare("SELECT * FROM ipLocale WHERE siteaccess = 'RSANTANA.COM/ONEPAGE' ORDER BY id DESC");
$QUERY->execute();
$QUERY = $QUERY->fetchAll(PDO::FETCH_ASSOC);

$JSON = array('rsantana_all' => $QUERY);
//var_dump($JSON);die;
print json_encode($JSON);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, BrunoMs disse:

Posta seu código inteiro pra gente ver, de preferência esse de onde você ta chamando self::DBC();

 

public static function DBC() {
		try {
			return new PDO("mysql:host=localhost;dbname=ronny_ipLocale", self::$user, self::$pass);
		}catch(PDOException $e){
			echo $e->getMessage();
		}
}

 

public static function RSantanaAllReturn() {
$DBC = self::DBC();
$QUERY = $DBC->prepare("SELECT id, ip, locale, date, hour, useragent FROM ipLocale WHERE siteaccess = 'RSANTANA.COM/ONEPAGE' ORDER BY id DESC");
$QUERY->execute();
return $QUERY->fetchAll(PDO::FETCH_ASSOC);
}

 

$r = self::RSantanaAllReturn();
$array = array('rsantana_all' => $r);
//var_dump($array);die;
var_dump(json_encode($array, JSON_PRETTY_PRINT));
print json_encode($array, JSON_PRETTY_PRINT);
die();

 

Ao dar var_dump(json_encode($array, JSON_PRETTY_PRINT)); apresenta o resultado bool(false), mas ap dar var_dump sem o json_encode apresenta o array com as informações do banco de dados.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei seus códigos aqui e ta funcionando normalmente, a única alteração que fiz foi, ao invés de usar $r = self::RSantanaAllReturn(); eu utilizei $r = testingDBC::RSantanaAllReturn(); . testingDBC no caso seria o nome da class de teste que fiz aqui pra testar seu código. Veja aqui:


<?php

class testingDBC{

    public static $user = "root";
    public static $pass = "";

    public static function DBC() {
            try {
                return new PDO("mysql:host=localhost;dbname=meu_banco", self::$user, self::$pass);
            }catch(PDOException $e){
                echo $e->getMessage();
            }
    }

    public static function RSantanaAllReturn() {
    $DBC = self::DBC();
    $QUERY = $DBC->prepare("SELECT * FROM minha_tabela WHERE minha_coluna_1 = 'dados_pra_busca' ORDER BY minha_coluna_id DESC");
    $QUERY->execute();
    return $QUERY->fetchAll(PDO::FETCH_ASSOC);
    }
}
$r = testingDBC::RSantanaAllReturn();
$array = array('rsantana_all' => $r);
//var_dump($array);die;
var_dump(json_encode($array, JSON_PRETTY_PRINT));
print json_encode($array, JSON_PRETTY_PRINT);
die();

funcionou normalmente, inclusive com json_encode().

Compartilhar este post


Link para o post
Compartilhar em outros sites
34 minutos atrás, BrunoMs disse:

Testei seus códigos aqui e ta funcionando normalmente, a única alteração que fiz foi, ao invés de usar $r = self::RSantanaAllReturn(); eu utilizei $r = testingDBC::RSantanaAllReturn(); . testingDBC no caso seria o nome da class de teste que fiz aqui pra testar seu código. Veja aqui:

 


<?php

class testingDBC{

    public static $user = "root";
    public static $pass = "";

    public static function DBC() {
            try {
                return new PDO("mysql:host=localhost;dbname=meu_banco", self::$user, self::$pass);
            }catch(PDOException $e){
                echo $e->getMessage();
            }
    }

    public static function RSantanaAllReturn() {
    $DBC = self::DBC();
    $QUERY = $DBC->prepare("SELECT * FROM minha_tabela WHERE minha_coluna_1 = 'dados_pra_busca' ORDER BY minha_coluna_id DESC");
    $QUERY->execute();
    return $QUERY->fetchAll(PDO::FETCH_ASSOC);
    }
}
$r = testingDBC::RSantanaAllReturn();
$array = array('rsantana_all' => $r);
//var_dump($array);die;
var_dump(json_encode($array, JSON_PRETTY_PRINT));
print json_encode($array, JSON_PRETTY_PRINT);
die();

 

funcionou normalmente, inclusive com json_encode().

 

Aqui não tem jeito para fazer funcionar...

 

o var_dump resulta nesse resultado abaixo

array(1) {
  ["rsantana_all"]=>
  array(3) {
    [0]=>
    array(6) {
      ["id"]=>
      string(4) "1573"
      ["ip"]=>
      string(13) "201.54.165.38"
      ["locale"]=>
      string(23) "Arapiraca - AL - Brazil"
      ["date"]=>
      string(10) "22/12/2017"
      ["hour"]=>
      string(8) "19:12:36"
      ["useragent"]=>
      string(209) "Mozilla/5.0 (Linux; Android 6.0.1; SM-G600FY Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/147.0.0.25.86;]/FB_MEXT_IAB"
    }
    [1]=>
    array(6) {
      ["id"]=>
      string(4) "1571"
      ["ip"]=>
      string(13) "187.59.231.98"
      ["locale"]=>
      string(23) "Cariacica - ES - Brazil"
      ["date"]=>
      string(10) "22/12/2017"
      ["hour"]=>
      string(8) "18:12:56"
      ["useragent"]=>
      string(208) "Mozilla/5.0 (Linux; Android 6.0.1; SM-A500M Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/147.0.0.25.86;]/FB_MEXT_IAB"
    }
    [2]=>
    array(6) {
      ["id"]=>
      string(4) "1570"
      ["ip"]=>
      string(12) "187.32.198.9"
      ["locale"]=>
      string(34) "Campo Limpo Paulista - SP - Brazil"
      ["date"]=>
      string(10) "22/12/2017"
      ["hour"]=>
      string(8) "15:12:11"
      ["useragent"]=>
      string(211) "Mozilla/5.0 (Linux; Android 6.0; XT1069 Build/MPB24.65-34-3; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/147.0.0.25.86;]/FB_MEXT_IAB"
    }
  }
}

 

Será que pode ser por causa da codificação do banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tentou colocar o nome referindo à sua classe como dei de exemplo?

$r = suaClasse::RSantanaAllReturn();

Pode ser inúmeras coisas que esteja impedindo o funcionamento, pq esse trecho ai que te mandei está funcionando, tem alguma outra coisa interferindo, pode ser no banco, alguma coluna inexistente ou até mesmo dentro da classe. Esse é o código inteiro ou tem mais? Pq esse aí ta funcionando normal.

Coloca esse trecho no início dos arquivos que você está testando pra aparecer os possíveis erros e avisos:


ini_set('display_errors', true);

error_reporting(E_ALL);

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 minutos atrás, BrunoMs disse:

Você tentou colocar o nome referindo à sua classe como dei de exemplo?


$r = suaClasse::RSantanaAllReturn();

Pode ser inúmeras coisas que esteja impedindo o funcionamento, pq esse trecho ai que te mandei está funcionando, tem alguma outra coisa interferindo, pode ser no banco, alguma coluna inexistente ou até mesmo dentro da classe. Esse é o código inteiro ou tem mais? Pq esse aí ta funcionando normal.

Coloca esse trecho no início dos arquivos que você está testando pra aparecer os possíveis erros e avisos:

 


ini_set('display_errors', true);

error_reporting(E_ALL);

 

 

Coloquei o nome da Classe sim, antes estava self porque estava dentro da mesma classe, mas separei em outro arquivo e fiz como no trecho abaixo

ini_set('display_errors', true);
error_reporting(E_ALL);

header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With');
header("Content-type:application/json;charset=utf-8");

$foreach = Controller::RSantanaAll();
$JSON = array('rsantana_all' => $foreach);

//var_dump($JSON);die;

var_dump(json_encode($JSON, JSON_FORCE_OBJECT));die;

print json_encode($JSON, JSON_PRETTY_PRINT);

 

Dentro do metodo só tem esse código abaixo

 

$DBC = self::DBC();
$QUERY = $DBC->prepare("SELECT id, ip, locale, date, hour, useragent FROM ipLocale WHERE siteaccess = 'RSANTANA.COM/ONEPAGE' ORDER BY id DESC LIMIT 12");
$QUERY->execute();
return $QUERY->fetchAll(PDO::FETCH_ASSOC);

 

 

E olha que estranho, quando eu coloco "LIMIT 4" no SELECT, ele retorna normalmente, acima disso não resulta nada... Resultado abaixo

{
    "rsantana_all": [
        {
            "id": "1573",
            "ip": "201.54.165.38",
            "locale": "Arapiraca - AL - Brazil",
            "date": "22\/12\/2017",
            "hour": "19:12:36",
            "useragent": "Mozilla\/5.0 (Linux; Android 6.0.1; SM-G600FY Build\/MMB29M; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/63.0.3239.111 Mobile Safari\/537.36 [FB_IAB\/Orca-Android;FBAV\/147.0.0.25.86;]\/FB_MEXT_IAB"
        },
        {
            "id": "1571",
            "ip": "187.59.231.98",
            "locale": "Cariacica - ES - Brazil",
            "date": "22\/12\/2017",
            "hour": "18:12:56",
            "useragent": "Mozilla\/5.0 (Linux; Android 6.0.1; SM-A500M Build\/MMB29M; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/63.0.3239.111 Mobile Safari\/537.36 [FB_IAB\/Orca-Android;FBAV\/147.0.0.25.86;]\/FB_MEXT_IAB"
        },
        {
            "id": "1570",
            "ip": "187.32.198.9",
            "locale": "Campo Limpo Paulista - SP - Brazil",
            "date": "22\/12\/2017",
            "hour": "15:12:11",
            "useragent": "Mozilla\/5.0 (Linux; Android 6.0; XT1069 Build\/MPB24.65-34-3; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/63.0.3239.111 Mobile Safari\/537.36 [FB_IAB\/Orca-Android;FBAV\/147.0.0.25.86;]\/FB_MEXT_IAB"
        },
        {
            "id": "1568",
            "ip": "179.104.232.220",
            "locale": "Uberaba - MG - Brazil",
            "date": "22\/12\/2017",
            "hour": "14:12:11",
            "useragent": "Mozilla\/5.0 (Linux; Android 5.1.1; SM-G531H Build\/LMY48B; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/62.0.3202.84 Mobile Safari\/537.36 [FB_IAB\/Orca-Android;FBAV\/146.0.0.33.136;]\/FB_MEXT_IAB"
        }
    ]
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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