2012-06-22 36 views
0

我已經開始研究相當大的項目。 概念:Some1向mysql插入數據。其他人得到他們的屏幕上的數據(表) 我有我的代碼工作,但我填寫表中的表,並據我瞭解這是不適合帶寬,所以我試圖從PHP捕獲數據從MySQL代碼,將它發送給js,然後它將格式化/填充表(setinterval正在運行)。但是我的桌子並沒有填滿,我沒有想法。 我是js的新手,所以如果你看到任何錯誤,讓我知道!謝謝!從php中通過ajax發送數據到mysql並填充表格

PHP:

<?php 
$rows = array(); 
$con = mysql_connect("where","who","pass"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("dbname", $con); 
$result = mysql_query("SELECT * FROM Brokers"); 
$rows = array(); 
while($r = mysql_fetch_assoc($result)){ 
    $rows[] = $r; 
} 
mysql_close(); 
print json-encode($rows); 
?> 

JS:

function fetchData() 
{ 
    $.ajax({ 
     url: 'brokers.php', 
     dataType: 'json', 
     success: createTable(rows) 
    }) 

} 
function createTable(rows) 
{ 
    var flowTable = '<table id="resultTable">' 
    for (var i=0; i< rows.length; i++){ 
     flowTable += '<tr class="filterthis height20">', 
     flowTable += '<td class="companyname width120">', 
     flowTable += rows[i].company_name + '</td>', 
     flowTable += '<td class="width180">' , 
     flowTable += rows[i].address + '</td>', 
     flowTable += '<td class="width70">' , 
       .........SOME MORE........... 
     flowTable += '</tr>'; 
    } 
    flowTable += '</table>'; 
    $("#here").innerHTML = flowTable; 
} 
function starttimer(){ 
    interval = setInterval("fetchData()",1000); 
} 

startTimer所();

+1

我注意到的第一件事是在你的PHP的JSON編碼「 - 它應該是json_encode – Fluidbyte

+0

謝謝您的指點說出來! – Mantosh

回答

0

那麼我找到了一個解決方案。

更正腳本 JS:

function fetchData(){ 
    $.ajax({ 
     url: 'brokers.php', //where are we sending request 
     dataType: 'json', 
     success: createTable //where are we transfering data from php ajax request 
    }) 
} 

var createTable = function(data){ 
    rows = jQuery.parseJSON(data) //creates object from information sent from php 
    $.each(rows, function(key,value){ //for each row from php does things You want 
     $("#Somediv").html = value.owner_name 
     //and etc. 
    } 
} 

brokers.php:

$con = mysql_connect();  
if (!$con) { 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db('somedb'); 
$result = mysql_query("SELECT * FROM sometable WHERE something=66"); 
while($row= mysql_fetch_assoc($result)){ //for each row which = our $result query 
    $rows[]=$row; 
} 

echo json_encode($rows); 
mysql_close($con); 
1

它是json_encode帶下劃線而不是短劃線,你有json-encode

還可以使用:

interval = setInterval(fetchData, 1000); 

相反的:

interval = setInterval("fetchData()",1000); 
+0

語法錯誤,#1片段。 –

+0

@AlexBelanger;修正了,謝謝 – Blaster

+0

也改變這些,謝謝你,但是表中還是沒有任何信息 – Mantosh

0

一個問題是:你基本上設置你的 「成功」 處理程序 「不確定」。這是因爲你有success: createTable(rows)這實際上是調用該函數並將其返回值(「undefined」)設置爲處理程序。

相反,你會想要更多的東西一樣:

success: function(data) { 
    createTable(data); 
} 

當然,因爲處理程序(我認爲)傳遞的數據作爲第一個參數,你可以通過完成相同的事情:

success: createTable 
+0

他怎麼會在你最後的例子中傳遞'data'參數? – Blaster

+0

第二個例子等同於第一個例子。他們都假設「數據」是jQuery框架的第一個參數。 – Brendan

+0

改變它,但表中仍然沒有內容。但是在檢查頁面運行後,腳本發送請求並按其大小(6kb,而php僅爲423字節),我認爲它正在接收它,其他的東西都在運行。也許數據不會超出Ajax請求? – Mantosh

相關問題