2014-05-12 1 views
0

내 HTML : 내 테이블에각 레코드에 대한 삭제 버튼. 클릭시 정의되지 않은 변수? 방법?

<td> 
    <button type="submit" id="delete" name="delete">Verwijderen</button> 
</td> 

모든 기록이 버튼이 있습니다. 각 단추를 누를 때 레코드를 삭제하려고합니다. 이 버튼을 누를 때마다이 오류 (알림 : 정의되지 않은 색인 : product_nr in C : \ xampp \ htdocs \ FESPHP \ delete.php 3 행)가 나타납니다.

PHP 코드는 :

<?php 
if (isset($_POST['delete'])) { 
    $product_nr = mysqli_real_escape_string($con, $_POST['product_nr']); 
    $deleteq = 'DELETE FROM products WHERE product_nr = "' . $product_nr . '";'; 
    echo $deleteq; 
    if (!mysqli_connect_errno()){ 
     if (mysqli_query($con, $deleteq)) { 
      echo "Product deleted"; 
     } 
    } 
    var_dump($product_nr); 
} 
?> 

은 내가 삭제할 기록에 속하는 product_nr를 검색하려고 도움을 필요로하는 것,하지만 난 다른 것들을 많이 잘못하고 할 수있다. 다른 것들에 대한 조언도 부탁드립니다.

답변

1

당신은 양식에 버튼을 배치해야합니다 :

<td> 
    <form action="url_to_delete_script.php" method="post"> 
     <input type="hidden" name="product_nr" value="id_of_record"/> 
     <button type="submit" name="delete">Verwijderen</button> 
    </form> 
</td> 

이 방법은,이 버튼을 사용하여 양식을 제출하면, 게시물의 호출은 지정된 스크립트로 이루어집니다. 양식 태그 안의 모든 정보는 delete_script로 보내집니다. 그래서 당신은 그 기록의 이디를 찾을 것입니다 $_POST["product_nr"]; 이는 "product_nr"이라는 이름의 (숨겨진) 필드를 지정했기 때문입니다.

PHP 스크립트를 사용하여 작성할 수있는 레코드의 ID (변수 id_of_record)입니다. 당신은 어쩌면 어떤 종류의 for 루프를 사용하여 어쨌든 데이터를 반복 할 수 있습니다.

$_POST["delete"]에 대한 추가 검사가 왜 필요한지 잘 모르겠지만이를 수행하려면 다른 입력란을 사용해야합니다. 아니면 '동작'의 URL을 url_to_delete_script.php?delete으로 변경할 수도 있지만 그 점은 확실하지 않습니다.

다른 가능한 솔루션

솔직히 말해서, 나는 좀처럼 기록 삭제의이 유형을 사용하지 않습니다. 당신은 form 태그를 많이 가지고 있기 때문에 중복 된 코드가 많습니다. 나는이 문제를 해결하기 위해 jQuery ajax를 사용하는 것을 선호한다.

jQuery를 나의 솔루션을했을 것이다 : 당신은 여전히 ​​테이블 다시로드의 일종이 있어야이 솔루션에서

<td> 
    <button type="button" onclick="removeRecord(id_of_record)">Verwijderen</button> 
</td> 

<script> 
    function removeRecord(recordId){ 
     $.post("url_to_delete_script.php", 
      { product_nr: recordId }, 
      function(data){ 
       alert("The record with ID " + recordId + " was removed!"); 
      } 
     ); 
    } 
</script> 

. 레코드가 서버 측에서 삭제되었지만 이는 테이블에 즉시 반영되지 않기 때문입니다.

나는이 방법을 선호하지만 이것이 최선의 해결책이라는 것을 의미하지는 않습니다.

0

게시물을 사용하여 데이터를 가져올 때는 먼저 양식으로 제출해야하며 '삭제'의 경우 요소 이름을 사용하여 데이터에 액세스해야합니다. 귀하의 경우에는 모든 단추를 테이블에 추가하고 거기에서부터가는 것이 좋습니다.

관련 문제