2012-11-08 3 views
4

새 프로젝트에서는 모든 데이터베이스 요청에서 페이지를 다시로드 할 필요가 없다는 현대적인 접근 방식을 원합니다. :) 스크립트에서 데이터베이스를 쿼리하고 쿼리 정보가있는 테이블을 만들길 원합니다.mysql, php, ajax (jquery 사용) 테이블 만들기

나는 인터넷에서 발견 한 다른 스크립트를 시도했다. 아래의 것은 나의 필요에 가장 가깝다.

index.php를

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> 
<html xmlns='http://www.w3.org/1999/xhtml'> 
<head> 
<title>Display Page</title> 
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> 
<script language='JavaScript' type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script> 
</head> 

<body> 
<button type='button' name='getdata' id='getdata'>Get Data.</button> 

<div id='result_table'> 

</div> 

<script type='text/javascript' language='javascript'> 
$('#getdata').click(function(){ 

$.ajax({ 
     url: 'getdata.php', 
     type:'POST', 
     dataType: 'json', 
     success: function(output_string){ 
       $('#result_table').append(output_string); 
      } // End of success function of ajax form 
     }); // End of ajax call  

}); 
</script> 
</body> 
</html> 

getdata.php

<?php 
include('conn.inc.php'); 
//Query of facebook database 
$facebook = mysql_query('SELECT * FROM users') 
or die(mysql_error()); 

//Output results 
if(!$facebook) 
{ 
    mysql_close(); 
    echo json_encode('There was an error running the query: ' . mysql_error()); 
} 
elseif(!mysql_num_rows($facebook)) 
{ 
    mysql_close(); 
    echo json_encode('No results returned'); 
} 
else 
{ 
    $output_string = ''; 
    $output_string .= '<table border="1">'; 
    while($row = mysql_fetch_assoc($facebook)) 
    { 
     $output_string .= '<tr>'; 
     foreach($row as $value) 
     { 
      $output_string .= '<td>{$value}</td>'; 
     } 
     $output_string .= '</tr>'; 
    } 
    $output_string .= '</table>'; 
} 

mysql_close(); 
// This echo for jquery 
echo json_encode($output_string); 

?> 

하지만 난 단지 테이블 내부 {$ 값}의 무리와 함께 테이블을 얻을. 나는 단지 $ 값으로 시도했지만 많은 0을 얻었습니다.

나는 간단한 스크립트를

$query = "SELECT users_name, users_password FROM users WHERE users_name = 'name'"; 
$result = mysql_query($query) or die(mysql_error()); 

$row = mysql_fetch_array($result); 

echo $row['users_name']; 

을 시도 그리고 내가 솜 결과를 얻을 수 있지만,이 스크립트로 내가 모든 검색에서 페이지를 새로 고침해야합니다. 분명히 나는 ​​mysql 데이터베이스의 정보로 테이블을 생성하고 페이지를 다시로드하면서 화면에 표시 할 수 있기를 원합니다.

아이디어가 있으십니까? 대신

$output_string .= '<td>{$value}</td>'; 

+0

내부의 클라이언트 측에서 다음

Phery::instance()->set(array( 'load' => function(){ /* rest of mysql code */ $rows = array(); while($row = mysql_fetch_assoc($facebook)) { $rows[] = $row; } return PheryResponse::factory()->json($rows); })->process(); 

: 더 빨리, 그리고 테이블을 구축 하이 아약스를 사용하고 있습니다 ... 양식을 만듭니다 .. 그것을 게시하고 결과를 얻을 .. 그것은 Reloading와 함께 테이블을 표시합니다 ... :) – bipen

+0

나는 그가 "페이지를 다시로드하지 않고 화면에 표시하는 것 같아요. " – Joseph

답변

2

{$ value} 대신 $ value를 사용해야합니다. while 루프 안에 또 다른 foreach 루프가 필요하지 않습니다.

$output_string = ''; 
$output_string .= '<table border="1">'; 
while($row = mysql_fetch_assoc($facebook)) 
{ 
    $output_string .= '<tr>'; 
    $output_string .= '<td>'.$row['Your table column name here'].'</td>'; 
    $output_string .= '</tr>'; 
} 
$output_string .= '</table>'; 
+0

감사합니다. 둘 다 해결되어 내 대본을 개선했습니다. :) 두 엄지 손가락! – Nicklas

+0

그냥 고마워. 대답을 수락하십시오 – Joseph

+0

당신은 나를 용서해야하지만 나는이 사이트를 처음 사용합니다. 어떻게해야합니까? – Nicklas

0

$output_string .= "<td>{$value}</td>"; 

즉 따옴표와 작은 따옴표를 교체하려고합니다.

문자열이 따옴표에 지정된

... 변수는 그 안에서 해석된다

는 말한다 문서 here을 참조하십시오. 그들이 단일 인용 문자열에서 발생할 때

변수는 ... 가 확장되지 않습니다.

+0

정보를 제공해 주셔서 감사합니다. :) – Nicklas

0

당신은 브라우저에 JSON으로 보내, 서버 측에서 테이블을 만드는 대신, 자동으로 해당을하는 라이브러리를 사용하여, http://phery-php-ajax.net 등이 논리를 반전하고, 클라이언트 측에서 그것을 할 수있는 다음 ... ?? 페이지를 다시로드 $(function(){});

$(function(){ 
    var $result_table = $('#result_table'); 
    $result_table.phery('make', 'load'); 
    $result_table.bind('phery:json', function(e, data){ 
    var $this = $(this); 
    for (var i = 0; i < data.length; i++) { 
     $this.append($('<tr/>', { 
     'html': '<td>' + data[i].row_name + '</td>' 
     })); 
    } 
    }); 
    $result_table.phery('remote'); 
});