2016-11-18 2 views
0

Итак, у меня есть этот код ниже, который получает данные из моей базы данных, но я хочу, чтобы эти данные обновлялись каждые 5 секунд, чтобы когда в базу данных было добавлено что-то новое соответствие спецификаций. (Я не хочу, чтобы страница обновления для этого только данные ...)Обновление данных из базы данных (PHP)

$sql = "SELECT * FROM items WHERE reference = '1' ORDER BY datePosted asc LIMIT 5"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     $title = $row["titel"]; 
     $description = $row["description"]; 
    } 
} else { 
    echo "Nothing found"; 
} 

Я искал для AJAX и PHP способов сделать это, но я просто не кажется, чтобы понять это вне ... Любая помощь/информация оценена!

+0

Вид бросил мусор прочь .. Но что я пытался это сделать это в функцию, а затем вызывать функцию каждые 5 секунд в JQ, по какой-то причине она не работает. @KoenHollander (Ik versta ook nl ...) – CoderYordi

ответ

1

Вы можете использовать что-то вроде этого;

<div id='contentToUpdate'></div> 


<script type="text/javascript"> 


    setInterval(function(){ 
     LoadContent(); // this will run after every 5 seconds 
    }, 5000); 


    function LoadContent(){ 

     $.ajax({ 

      type:"POST", 
      url: "/path/to/script.php", 
      data: {GenerateContent: true, PostName2: 'value2'}, 

      success: function(result){ 

       $("#contentToUpdate").html(result); 

      }, error: function(result){ 

       alert('something went wrong'); 

      }, complete: function(result){ 

       // fires regardless of above 

      } 

     }); 

    } 

</script> 

В файле php получает запрос Ajax, у вас может быть что-то подобное;

if(isset($_POST['GenerateContent'])){ 


     $aResults = array(); 

     $sql = "SELECT title, description FROM items WHERE reference = '1' ORDER BY datePosted asc LIMIT 5"; 
     $result = $conn->query($sql); 

     while($row = $result->fetch()){ 
      $aResults[] = array('title' =>$row['title'], 'description' => $row['description']); 
     } 


     // if there are results output them 
     if(!empty($aResults)){ 

      // foreach result 
      foreach ($aResults as $iKey => $aResult) { 
       echo "<p>"; 
       echo "Title: ".$aResult['title']."<br>\n"; 
       echo "Description: ".$aResult['description']."<br>\n"; 
       echo "</p>"; 
      } 

     }else{ 
      echo 'No results have been loaded'; 
     } 


     exit; 
    } 
+0

Не могли бы вы преобразовать это во что-то, что использует время для этого? Потому что это то, что я могу сделать тоже, материал времени - это то, что я не понимаю :) @atoms – CoderYordi

+0

обновили мой код. забыл, что вам нужен таймер ... – atoms

+0

@atoms Прежде чем я попробую это и скажу вам, что это не работает, являются ли значение и значение2 именами моих vars в php? – CoderYordi

0

Использование JQuery:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script> 
setInterval(function() 
{ 
    $.ajax({ 
     type:"POST", 
     url:"path/to/script.php", 
     success:function(data) 
     { 
      //do something with response data 
     }, 
     error:function(e){ 
     console.log("Error Occurred"); 
     } 
    }); 
}, 5000);//time in milliseconds 
</script> 
0

Использование JQuery вы можете попробовать что-то вроде этого:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 

function loadData(){ 
    $('#table').load('yourScript.php',function (response, status, xhr) { 
     // handle the response here and set the data 
    }); 
} 

loadData(); // This will run on page load 
setInterval(function(){ 
    loadData(); // this will run after every 5 seconds 
}, 5000); 
Смежные вопросы