2012-06-28 6 views
0

잠시 동안이 작업을 해봤지만 삭제 된 행이 다시로드 된 후에도 페이지를 다시로드 할 수는 없습니다.sql에서 행을 제거한 후 페이지를 다시로드하십시오.

행 삭제가 정상적으로 작동하지만 페이지를 새로 고침 한 후에 만 ​​나타납니다. submit을 누르면 행운을 읽을 때 코드를 읽으려는 시도가있었습니다. 어떤 아이디어?

<?php 
mysql_connect("localhost", "root", "") or die(mysql_error()) ; 
mysql_select_db("booking") or die(mysql_error()) ; 

$resultselect = mysql_query("SELECT * FROM test_mysql ") or die(mysql_error()); 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <title>row delete</title> 
     <link rel="stylesheet" type="text/css" href="" /> 
    </head> 

    <body> 
<?php 
    if(isset($_POST['done'])){ 
    $done = implode(',', $_POST['done']); 
    $deletequery = "DELETE FROM test_mysql WHERE id IN ($done)"; 
    $resultdelete = mysql_query($deletequery) or die(mysql_error()); 
    } 

    ?> 

    <form method="post" action=""> 
    <?php while($row = mysql_fetch_array($resultselect)){?> 
     <input type="checkbox" name="done[]" 
    id="<?php echo $row['id'] ?>" 
    value="<?php echo $row['id'] ?>"> 
    <label for="<?php echo $row['id'] ?>"> 
    <?php echo $row['name'] . ' ' . $row['lastname']. ' '.$row['email']; ?> 
    </label> 
    <br /> 
    <?php } ?> 
    <input type ="submit" value ="submit"> 
    </form> 
    <?php 

    if($resultdelete) { 
     echo 'Item(s) deleted from list.'; 
    } 
    ?> 

    <pre> 
    <?php print_r($_POST) ?> 
    </pre> 
    </body> 
</html> 
+0

나는 당신이 무슨 말을하는지 잘 모르겠습니다. 따라서 '제출'을 클릭하면 선택한 행이 삭제되고 삭제 한 행은 여전히 ​​페이지에 표시됩니다. – mikegreiling

+0

정확히. 행을 다시로드 할 때까지 행이 계속 표시됩니다. – Dymond

답변

2

귀하가 제공 한 코드가이 부분이 실행되기 전에 $resultselect이 곳으로 설정되어 있는지 응용 프로그램 코드의 조각이기 때문에 내가 있으리라 믿고있어.

여기서 중요한 부분은 MySQL 쿼리의 순서입니다. 당신이 SELECT 보내고 행 전에 DELETE 행이있는 경우에, 당신은 DELETE 쿼리 후 SELECT 쿼리를 이동

mysql_fetch_array()을 실행할 때 당신은 여전히 ​​삭제 된 행을 볼 수 모두 잘해야한다.

+0

물론! 내가 어떻게 못 봤어? 감사합니다. – Dymond

+1

당신은 아주 환영합니다. – mikegreiling

1

delete 문을 실행하기 전에 코드 섹션에서 $ row에 대한 결과를 얻는 것처럼 보입니다. $ deletequery 코드를 페이지 맨 위에두면 적절한 데이터 레코드를 삭제 한 다음 새 결과 집합을 얻은 다음 사용자에게 표시 할 수 있습니다.

이 무엇이든간에 쿼리

$resultdelete = mysql_query($deletequery) or die(mysql_error()); 

문 다음에 실행하는 루프

while($row = mysql_fetch_array($resultselect)) 
{ 
.... 
} 

요구를 공급한다. 전체 코드를 실행하기위한

편집 :

<?php 
    mysql_connect("localhost", "root", "") or die(mysql_error()) ; 
    mysql_select_db("booking") or die(mysql_error()) ; 

    if(isset($_POST['done'])) 
    { 
     $done = implode(',', $_POST['done']); 
     $deletequery = "DELETE FROM test_mysql WHERE id IN ($done)"; 
     $resultdelete = mysql_query($deletequery) or die(mysql_error()); 
    } 
    $resultselect = mysql_query("SELECT * FROM test_mysql ") or die(mysql_error()); 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <title>row delete</title> 
    <link rel="stylesheet" type="text/css" href="" /> 
    </head> 

    <body> 
    <form method="post" action=""> 
    <?php while($row = mysql_fetch_array($resultselect)){?> 
    <input type="checkbox" name="done[]" 
    id="<?php echo $row['id'] ?>" 
    value="<?php echo $row['id'] ?>"> 
    <label for="<?php echo $row['id'] ?>"> 
    <?php echo $row['name'] . ' ' . $row['lastname']. ' '.$row['email']; ?> 
    </label> 
    <br /> 
    <?php } ?> 
    <input type ="submit" value ="submit"> 
    </form> 
    <?php 

    if($resultdelete) { 
    echo 'Item(s) deleted from list.'; 
    } 
    ?> 

    <pre> 
    <?php print_r($_POST) ?> 
    </pre> 
    </body> 
</html> 
+0

그건 내 선택 사항 중 하나 였지만 나는 에테르를 사용하지 않을 것이다. – Dymond

+1

그런 경우 전체 코드를 올리면 내가 볼 수 있습니까? – Fluffeh

+0

방금 ​​업데이트되었습니다. 이것이 내 전체 코드입니다. – Dymond

관련 문제