2014-09-01 25 views
0

我得到所有來自mysql數據庫的HTML表格行中的關鍵字。所以當我點擊每個關鍵字時,它調用keywordBox id使用jQuery將kid添加到使用php的mysql數據庫。我用while循環來獲得所有kid,但我只得到一個kid。爲什麼?這是應該得到不同kid當我在不同的keyword無法獲得所有的ID在php哪個循環使用jquery

以下點擊是我的代碼:

echo "<div id='keywordBox'>"; 
echo '<table border="0" cellpadding="0" cellspacing="0" width="1055">'; 
$count = 0; 
while($result = mysql_fetch_array($query)){ 
    if($count%6==0 && $count!=0) 
    echo '</tr><tr>'; 
    elseif($count==0) echo '<tr>'; 

    $kid = $result['kid']; 
    $keywordName = ucfirst($result['keywordName']); 

    $keyword_short_name = ucfirst($result['keyword_short_name']); 
    $keyword_full_name = ucfirst($result['keyword_full_name']); 

    echo "<input type='hidden' id='kid' value='$kid'/>";  
    echo "<input type='hidden' id='cdid' value='$cdid'/>"; 
    echo "<td width='400'><strong>$keyword_full_name</strong><strong>($keyword_short_name)</strong><br/>$keywordName</td>"; 

    $count++; 
} 
echo '</table>'; 
echo "</div"; 


<script> 
$('#keywordBox').click(function(e) { 

    var kid = $('#kid').val();  
    var cdid = $('#cdid').val();   

    e.preventDefault(); 
     $.ajax({ 
     type:"post", 
     url:"addKeywordProcess.php", 
     data:{ 
      'kid' : kid, 
      'cdid' : cdid 
     }, 
     success:function(res){ 
      $('#result').html(res);   
      } 
     }); 
}); 
</script> 

addKeywordProcess.php代碼:以$kid

<?php 
ob_start(); 
@session_start(); 
require_once("../config.php"); 


if(!isset($_SESSION['front_username']) && isset($_SESSION['front_username']) == "" && 
    !isset($_SESSION['front_password']) && isset($_SESSION['front_password']) == "" && 
    !isset($_SESSION['user_id']) && isset($_SESSION['user_id']) == "") { 
    header("Location:login.php"); 
    exit(); 
} 


$cdid = (int) $_POST['cdid']; // Get cdid from keyword page. 
$kid = (int) $_POST['kid']; // Get cdid from keyword page. 

$check = mysql_query("SELECT cdid, kid FROM userkeywords WHERE kid = '$kid' AND cdid = '$cdid' "); 
$num = mysql_num_rows($check); 

if($num == 1){ 
    echo "<div class='error'>Keyword already exits to your contact list. cdid = $cdid and kid = $kid </div>"; 
}else{ 

    $query = mysql_query("INSERT INTO userkeywords (ukid, cdid, kid) VALUES ('', '$cdid', '$kid') "); 
    if($query){ 
     echo "<div class='success'>Successfully added a new keyowrd to your contact list. </div>"; 
    }else{ 
     echo "<div class='error'>I can't added a new keyword. </div>"; 
    } 


} 
?> 
+0

閱讀下面的答案,你的錯誤似乎是一個明顯的錯誤,這是由你的PHP和HTML代碼混合在一起,模糊。爲了將來的參考,您應該將HTML模板和PHP腳本分開,以使代碼更清晰,更易於閱讀。示例:http://stackoverflow.com/a/7368842/1031312 – Ozzy 2014-09-01 12:24:04

+0

感謝@Ozzy重要指南。 – Shibbir 2014-09-01 12:25:09

回答

0

當你更換價值

echo "<input type='hidden' id='kid' value='$kid'/>"; 

每次只包含最後一個循環行的值。

與單擊div時調用Jquery函數不同,可以在單擊每個tr時調用該函數。

while($result = mysql_fetch_array($query)){ 
    if($count%6==0 && $count!=0) 
    echo '</tr><tr>'; 
    elseif($count==0) echo '<tr>'; 

    $kid = $result['kid']; 
    $keywordName = ucfirst($result['keywordName']); 

    $keyword_short_name = ucfirst($result['keyword_short_name']); 
    $keyword_full_name = ucfirst($result['keyword_full_name']); 

    echo "<input type='hidden' id='kid' value='$kid'/>";  
    echo "<input type='hidden' id='cdid' value='$cdid'/>"; 
    echo "<td width='400' onclick='keywordclick($kid,$cdid)'><strong>$keyword_full_name</strong><strong>($keyword_short_name)</strong><br/>$keywordName</td>"; 

    $count++; 
    } 

並更改jQuery函數

$('#keywordBox').click(function(e) { 
---- 
} 

function keywordclick(kid,cid) 
{ 
$.ajax({ 
     type:"post", 
     url:"addKeywordProcess.php", 
     data:{ 
      'kid' : kid, 
      'cdid' : cid 
     }, 
     success:function(res){ 
      $('#result').html(res);   
      } 
     }); 
} 
+0

那它應該是什麼? – Shibbir 2014-09-01 11:57:08

+0

你需要所有的關鍵詞在一起嗎? – Jenz 2014-09-01 11:58:42

+0

是的,在while循環中,我需要所有關鍵字'id'(kid)。然後,當我點擊每個關鍵字名稱時,我可以得到不同的「孩子」。 – Shibbir 2014-09-01 12:00:54

2

你在你的HTML,這不是有效的多次重複的ID,作爲ID必須是唯一的。只要切換到類,並相應地改變你的JS:

echo "<input type='hidden' class='kid' value='$kid'/>";  
echo "<input type='hidden' class='cdid' value='$cdid'/>"; 

JS:

<script> 
$('#keywordBox tr').click(function(e) { 

    var kid = $(this).find('.kid').val();  
    var cdid = $(this).find('.cdid').val();   

    ...