2012-11-14 4 views
0

안녕하세요 저는 이미이 질문을 던졌지 만 불행히도 그에 대한 적절한 대답을 얻지 못했습니다. 나는 다음과 같은 설정 항목 및 항목이라고 MySQL 데이터베이스에 두 개의 테이블이 있습니다Ajax PHP 및 jQuery를 사용하여 MySQL에서 데이터 가져 오기 문제

enter image description here

내가 bwlow 등이 개 .PHP 파일이;

<html> 
<head></head> 
<body> 
<?php 
    $mysqli = new mysqli('localhost', 'root', '', 'moviedb'); 
    if ($mysqli->connect_errno) 
    { 
     die('Unable to connect!'); 
    } 
    else{ 
     $query = 'SELECT * FROM tblItems'; 
     if ($result = $mysqli->query($query)) { 
      if ($result->num_rows > 0) { 
    ?> 
    <p> Select a Genre 
     <ul> 
    <?php  
     while($row = $result->fetch_assoc()){ 
    ?>  
    <li><div class="selectGenre"><?php echo $row['item']; ?></div></li>  
    <?php   
    } 
    ?> 
     </ul> 
</p> 
<p id="result"></p> 
<?php 
} 
else 
{ 
    echo 'No records found!'; 
} 
$result->close(); 
} 
else 
{ 
echo 'Error in query: $query. '.$mysqli->error; 
} 
} 
$mysqli->close(); 
?> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"   type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $('.selectGenre').click(function() 
     { 
      if($(this).html() == '') return; 
      $.get(
       'results.php', 
       { id : $(this).html() }, 
       function(data) 
       { 
        $('#result').html(data); 
       } 
      ); 
     }); 
    }); 
    </script> 
    </body> 
    </html> 

및 results.php은 : 다음의 index.php를 results.php의 index.php과 같다

<?php 
    $mysqli = new mysqli('localhost', 'root', '', 'moviedb'); 
    $resultStr = ''; 
    $query = 'SELECT type FROM tblItem where id='.$_GET['id']; 
    if ($result = $mysqli->query($query)) 
    { 
    if ($result->num_rows > 0) 
    { 
    $resultStr.='<ul>'; 
    while($row = $result->fetch_assoc()) 
    { 
    $resultStr.= '<li><strong>'.$row['id'].'</strong> - '.$row['type']; 
    '</li>'; 
    } 
    $resultStr.= '</ul>'; 
    } 
    else 
    { 
$resultStr = 'Nothing found'; 
    } 
} 
echo $resultStr; 
?> 

아니라,리스트를 채우고 제 부 (index.php에) tblItems 테이블을 기반으로하지만 results.php 파일의 페이지에 아무런 값도 반환하지 않는 목록을 클릭하면 오류 메시지가 표시되지 않습니다. 내가 여기서 뭘 잘못하고 있는지 알려주시겠습니까?

+0

어떻게 당신은 아무것도 없다 알 수 있습니까 콘솔에서 요청을 검사하여 반환 되었습니까? 아약스 요청이 있었는지 아십니까? 표시된 클릭 핸들러 코드 또는 아약스 코드는 없습니다. 문제가 서버 코드 또는 자바 스크립트와 관련된 경우 많은 도움이 될 것입니다. 최대한 자세하게 제공하십시오. – charlietfl

답변

1

이 당신을 위해 더 쉬울 것이다 : 이 하나를 시도, 당신의 index.php 코드를 편집 : 여기에 좋아

<html> 
<head></head> 
<body> 
<?php 
    $mysqli = new mysqli('localhost', 'root', '', 'moviedb'); 
    if ($mysqli->connect_errno) 
    { 
     die('Unable to connect!'); 
    } 
    else{ 
     $query = 'SELECT * FROM tblItems'; 
     if ($result = $mysqli->query($query)) { 
      if ($result->num_rows > 0) { 
    ?> 
    <p> Select a Genre 
     <ul> 
    <?php  
     while($row = $result->fetch_assoc()){ 
    ?>  
    <li><div class="selectGenre" onclick="return printSearch('<?php echo $row['id']; ?>');"><?php echo $row['item']; ?></div></li>  
    <?php   
    } 
    ?> 
     </ul> 
</p> 
<p id="result"></p> 
<?php 
} 
else 
{ 
    echo 'No records found!'; 
} 
$result->close(); 
} 
else 
{ 
echo 'Error in query: $query. '.$mysqli->error; 
} 
} 
$mysqli->close(); 
?> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"   type="text/javascript"></script> 
<script type="text/javascript"> 
    function printSearch(idVal) 
    { 

      $.get(
       'results.php', 
       { id : idVal }, 
       function(data) 
       { 
        $('#result').html(data); 
       } 
      ); 
    } 
    </script> 
    </body> 
    </html> 

는 result.php입니다

<?php 

$mysqli = new mysqli('localhost', 'root', '', 'moviedb'); 
$resultStr = ''; 
$query = 'SELECT * FROM tblItem where id='.$_GET['id']; 
if ($result = $mysqli->query($query)) 
{ 
    if ($result->num_rows > 0) 
    { 
     $resultStr.='<ul>'; 
     while($row = $result->fetch_assoc()) 
     { 
      $resultStr.= '<li><strong>'.$row['id'].'</strong> - '.$row['Name']. 
          '</li>'; 
     } 
     $resultStr.= '</ul>'; 
    } 
    else 
    { 
     $resultStr = 'Nothing found'; 
    } 
} 
echo $resultStr; 
?> 
+0

감사합니다. Sephoy, 코드를 복사하여 붙여 넣기 만하면 페이지에 아무 것도 표시되지 않습니다. – user1760110

+0

@ user1760110 :이 파일을 두 파일 모두에 복사하십시오. – sephoy08

+0

감사합니다. Sephoy08 난 그냥 테스트하고 잘 작동합니다. 왜 우리는 예제에서 jQuery 문서 준비 방법을 사용할 수 없습니까? – user1760110

0

귀하의 문제는 다음과 같습니다

$_GET['id'] = 'Drama'; // Action, etc. 
+0

코드는 SQL 주입 공격 btw에 대해 광범위하게 열려 있습니다. – keyboardSmasher

+0

안녕하세요 KeyboardSmasher, ur 주석 주셔서 고맙습니다. select 절을 $ query = 'SELECT name FROM tblItem id ='. '로 업데이트합니다.'; $ _ GET [ 'id']; 그러나 나는 $ _GET [ 'id'] = 'Drama'에 의해 당신의 요점을 얻지 않았다. // 행동, 기타 등등 무엇이 일어나고 있는지 알려주시겠습니까? 감사합니다 – user1760110

+0

@ user1760110 : KeyboardSmasher는'tblItem'에서'id' 필드가 정수이고 varchar가 아니라는 것을 의미합니다. 그래서 당신이 선택한 것은 무엇이든,'id'는 문자열입니다! – sephoy08

0

가 results.php에서 아래 쿼리를 시도 할 때

$query = 'SELECT type FROM tblItem where id='.$_GET['id']; 

$sql = "SELECT tblItem.* FROM tblItems 
    INNER JOIN tblItem USING(id) 
    WHERE tblItems.item = '".$mysqli->real_escape_string($_GET['id'])."'"; 

는 또한 $row['Name']$row['type']을 변경합니다.

+0

안녕하세요 air4x, result.php 코드를 ' $ query = "select tblItem. * from tblItems INNER JOIN tblItem USING (id) where tblItems.item ='". $ mysqli-> real_escape_string ($ _ GET [ 'id ']). "'"; 경우 ($ 결과 = $ mysqli-> 쿼리 (질의 $)) { \t 경우 ($에서 그 결과> NUM_ROWS> 0) { \t \t \t $ resultStr = '

    .'; . \t \t 동안 ($ 행 = $에서 그 결과> fetch_assoc()) \t \t \t \t {$ resultStr = '
  • '; \t \t \t $ resultStr.= '
    '.$row['name'].'
    '; \t \t \t '
  • '; \t \t} \t \t $ resultStr. = '
'; \t} \t 다른 \t { \t \t $ resultStr = '아무것도 발견'; \t} } echo $ resultStr; ?>'그러나 이것은 아직 아무것도하지 않습니다! – user1760110

관련 문제