2013-06-03 1 views
0

부트 스트랩 아코디언을 사용하고 있습니다. 각 행을 확장하여 일부 추가 정보와 데이터베이스에서 해당 행을 삭제해야하는 버튼을 포함하는 '세부 정보 섹션'을 표시 할 수 있습니다. 행 ID와 이름이 PHP를 사용하여 할당되고 이것은 내 문제를 일으키는 것 같습니다. 숨겨진 필드를 사용하면 이름을 표시 할 수 있지만 항상 아코디언의 마지막 행의 이름입니다.버튼에서 확장 된 아코디언 행의 Div 이름을 얻는 방법

PHP를 사용하면 어떤 행이 확장되어 있는지 감지하고 해당 div의 이름을 얻을 수 있습니까?

PHP/HTML

<?php 
if (isset($_POST['btnDelete'])) { 
    $idnbr = $_POST['hid']; 
    echo $idnbr;   // No matter which row is selected, always echoes last row's name 
} 
?> 

<div id="div1"> 
    <?php 
    // SQL and SQL connection stuff 
    while ($row = odbc_fetch_array($data)) { 
    ?> 
     <div class="accordion-heading"> 
      <a class="accordion-toggle" data-toggle="collapse" data-parent="#div1" 
       href="#<?php echo $row['idnbr']; ?>">Delete</a> 
     </div> 
     <div id="<?php echo $row['idnbr']; ?>" name="<?php echo $row['idnbr']; ?>" 
      class="accordion-body collapse"> 
      <input type="hidden" id="hid" name="hid" 
       value="<?php echo $row['idnbr']; ?>"> 
     </div> 
     <!-- Accordion body --> 
     <div> 
      <input class="btn" type="submit" name="btnDelete" 
       id="btnDelete" value="Delete"> 
     </div> 
    <?php 
    } 
    ?> 
</div> 


JS

// Hides/shows correct row 
$('.accordion-toggle').click(function() { 
    var $acc = $('#div1'); 
    $acc.on('show', '.collapse', function() { 
     $acc.find('.collapse.in').collapse('hide'); 
    }); 
}); 

$('input#btnDelete').click(function() { 
    // Get the id of the selected row 
    var $selrow = $('#div1').find('.collapse.in'); 
    var $attrid = $selrow.attr('name'); 
    if (!confirm("Are you sure you want to Delete?")) { 
     event.preventDefault(); 
     return; 
    } else { 
     $('#hid').val($attrid); 
     alert($attrid');   // Able to alert the correct row 
    } 
}); 
내 jQuery를에


, 나는 숨겨진 필드의 값을 설정 한 후, 내가 게시에서 페이지를 방지 경우 콘솔에서 값을 확인하십시오. 페이지를 게시하고 콘솔에서 HF 값을 확인할 때, 삭제를 클릭 한 행과 상관없이 항상 첫 번째 행의 이름입니다. 따라서 마지막 행의 이름이 반향되고 첫 번째 행의 이름이 숨겨진 필드로 설정됩니다.

그래서 위의, 당신은 페이지의 3 아코디언 행 (제품 설명 1, 제품 설명 2, 제품 설명 3)를 참조 할 것 예를 들어 DB를 사용하여 DB

Desc | idnbr 
------------------- 
Desc 1 | 10 
Desc 2 | 20 
Desc 3 | 30 


. 내가 또는 정확한 값을 에코하기 위해 어떻게해야합니까 무엇

Alert:   20 
Hidden Field: 10 
Echo:   30 


나는 완전히 이것에 대해 갈거야 : 나는 두 번째 행 (제품 설명 2)를 확장하고 삭제를 클릭하면 이것은 내가 지금 무엇을 얻을 잘못된? 다음
<input class="btn" type="submit" name="btnDelete<?php echo $row['idnbr']; ?>" id="btnDelete" value="Delete">

과 같은

답변

1

귀하의 의견의 이름 속성이 고유의 제출 확인 (이 경우 20) :

if(!empty($_POST)) 
    { 
    $idnr = str_replace('btnDelete','',array_search('Delete', $_POST)); 
    } 
+0

정말 고마워요! 정확히 내가 필요로하는 것을합니까! – Brian

관련 문제