Exibir apenas um item a partir de um banco de dados de cada vez e percorrer outros para exibição

sams:

Eu estou tentando criar uma página que exibe uma linha de informações a partir de um DB notícias de cada vez. Seria exibir a primeira linha para cerca de 10 segundos, em seguida, trocar para a próxima linha de notícia para a mesma duração. Eu encontrei uma resposta a partir de cinco anos atrás, que parecia que ele iria trabalhar, mas cada vez que eu tento executá-lo um dos meus variáveis ​​torna ilegível devido a ele ser indefinido. código completo abaixo:

<?php
  include('include/sqlsettings.php');
  $mysqli_conn = mysqli_connect($mysqli_host, $mysqli_user, $mysqli_pass, $mysqli_db);
  $query = 'SELECT * FROM news';
  $rs = mysqli_query($mysqli_conn, $query);
  $info = array();

  while($row = mysqli_fetch_array($rs, MYSQLI_ASSOC)){
    array_push($info, array('title' => $row['id'],
                            'news' => $row['news'],
                            'location' => $row['location']));
    $infoData = json_encode(array('info' => $info));
    file_put_contents('info.json', $infoData);
  }
?>
<html>
  <head>
  </head>
  <body>
    <ul></ul>
  </body>
  <script src='/libs/js/jquery/jquery-3.2.1.min.js'></script>
  <script>
    var i = 0,
        d = null,
        x = null,
        interval = 3000;

    $(document).ready(function(){
      fetch();
    });

    function fetch(){
      // get the data *once* when the page loads
      $.getJSON('info.json', function(data){
        // store the data in a global variable 'd'
        d = data.result;
        // create a recurring call to update()
        x = setInterval(function(){
          update()
        }, interval);
      });
    }

    function update(){
      // if there isn't an array element, reset to the first once
      if (!d[i]){
        clearInterval(x);
        i = 0;
        fetch();
        return;
      }
      // remove the previous items from the page
      $('ul').empty();
      // add the next item to the page
      $('ul').append(
        '<li>' + d[i]['title']
        + '</li><li>' + d[i]['news']
        + '</li><li>' + d[i]['location']
        + '</li>'
      );
      // incriment for the next iteration
      i++;
    }
  </script>
</html>

Os erros de código para fora em if(!d[i])retroceder para trás com Uncaught TypeError: Cannot read property '0' of undefined at update (<file>.php:33)que d deve ser definido como os dados json assim que eu posso laço através dele. Eu não sou inteiramente certo o que estou fazendo de errado.

amcquaid:

Você está atribuindo dpara a data.result. Se dé undefined, é porque data.resultnão está definida. Se é possível para data.resultser undefined, considere fazer o seguinte cheque.

if(d && !d[i])

Isso irá garantir dé definida antes de verificar o índice.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=275164&siteId=1
Recomendado
Clasificación