2014-09-01 2 views
0

html 테이블 행의 mysql 데이터베이스에서 모든 키워드를 가져옵니다. 그래서 각 키워드를 클릭하면 keywordBox id를 jquery를 사용하여 PHP를 사용하여 mysql 데이터베이스에 kid을 추가합니다. 나는 while 루프를 사용하여 모두 kid을 얻었지만 단지 하나만 받았다. kid. 왜 ?jquery를 사용하여 반복하는 PHP의 모든 ID를 가져올 수 없습니다.

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

+0

감사합니다. @ 오지 중요 가이드. – Shibbir

답변

0

교체하는 것처럼 값 난 다음 다른 keyword

클릭하면 그것은 kid 다른 얻을해야 것은 내 코드입니다

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++; 
    } 

가와,

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

그러면 그것은 무엇입니까? – Shibbir

+0

모든 키워드가 함께 필요합니까? – Jenz

+0

예, while 루프에서는 모든 키워드'id' (아이)가 필요합니다. 그러면 각 키워드 이름을 클릭하면 다른 '꼬마'를 얻을 수 있습니다. – Shibbir

2

유효하지 않은 당신의 HTML, 여러 중복 ID를 가지고있는 JQuery와 기능

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

을 변경합니다. 간단히 클래스로 변경하고 그에 따라 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();   

    ... 
관련 문제