2012-11-14 96 views
0

嗨我已經問過這個問題,但不幸的是我沒有得到適當的答案。我在MySQL數據庫的兩個表叫條目爲波紋管:使用Ajax PHP和jQuery從MySQL獲取數據的問題

enter image description here

我有兩個PHP文件作爲bwlow;在index.php和results.php在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"><?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是:

<?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表,但點擊列表不從Result.php文件返回任何值到頁面,甚至沒有錯誤消息。你能讓我知道我在這裏做錯了嗎?

+0

你怎麼知道什麼是從控制檯中檢查請求返回...?你知道是否有Ajax請求嗎?沒有顯示點擊處理程序代碼或ajax代碼。如果問題是服務器代碼或JavaScript相關,將有助於縮小範圍。提供儘可能多的細節,你可以 – 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我只是測試他們,他們工作fine.just想知道爲什麼我們不能夠在你的例子中使用jQuery文檔就緒方法? – user1760110

0

您的問題是:

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

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

你的代碼是開放的SQL注入攻擊btw。 – keyboardSmasher

+0

嗨KeyboardSmasher,感謝您的評論我更新選擇子句$ query ='選擇名稱從tblItem其中id ='。$ _ GET ['id'];但我確實,nt通過$ _GET ['id'] ='Drama'獲得您的觀點; //動作等,請你讓我知道更多發生了什麼?謝謝 – user1760110

+0

@ user1760110:KeyboardSmasher意味着,在你的'tblItem'''''字段中是整數而不是varchar,所以你選擇的是watever,你沒有'id'就是字符串! – sephoy08

0

嘗試在results.php下面的查詢

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

也改變$row['type']$row['Name']

+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如果($ result-> NUM_ROWS> 0) \t { \t \t $ resultStr = '

    '。 。 \t \t而($行= $ result-> 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

相關問題