2012-06-28 9 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 строки, то вы будете видеть удаленные строки при запуске mysql_fetch_array()

Перемещения SELECT запроса после DELETE запроса и все должно быть хорошо.

+0

конечно! как я не мог этого видеть? Спасибо вам большое. – Dymond

+1

Вы очень приветствуете – mikegreiling

1

Похоже, вы получаете свой набор результатов для $ row в разделе кода до инструкции delete. Если вы поместите код $ deletequery вверху страницы, вы можете удалить соответствующие записи данных, затем получить новый набор результатов и THEN показать их пользователю.

Независимо от запросов питает ваш цикл

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

потребности работать после заявления

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

.

Редактирование для полный код для запуска:

<?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

Смежные вопросы