2015-03-31 3 views
0

У меня очень неприятная проблема с системой базы данных, которую я создаю. Трудно объяснить, но я попробую. Система предназначена для документирования ремонта цехов. Он построен с использованием PHP, MySQL, Javascript и JQuery. Запуск на Synology DS212 + с DSM 5.1 У меня есть 3 файлов в вопрос:MySQL повторить удаление автономно

vr_edit.php 
vr_edit_save.php 
vr_edit_cancel.php 

При запуске repport этот файл генерирующий новый рекорд:

vr_edit.php?edit=new 
    $sth = $conn->prepare($sql_str); 
    $sth->execute($dataArr); 
    $vrnr = $conn->lastInsertId(); 
    header("Location: ".$goto); 

и перенаправляет браузер:

vr_edit.php?edit=45000 

vr_edit затем считывает запись и показывает форму для ее редактирования. Это отправляется в vr_edit_save, который, очевидно, сохраняет данные.

В форме редактирования вы имеете posibillty отменить отчет:

<button style="width: 165px; margin-top: 8px;" type="button" id="anullerknap" onclick="location.href=('vr_edit_cancel.php?vrnr=46008&setid=46008&cancelReturn=%2FVR3000-TEST%2Findex.php'); return false;"><u>A</u>nullér</button> 

vr_edit_cancel.php: 

    $sql_str = "DELETE FROM `v_rapporter` WHERE vrnr = ".$vrnr." AND status = 'oprettet' LIMIT 1"; 
    $sth = $conn->prepare($sql_str); 
    $sth->execute(); 
    $sql_str = "ALTER TABLE `v_rapporter` AUTO_INCREMENT = 1;"; 
    $sth = $conn->prepare($sql_str); 
    $sth->execute(); 
    unset($sth); 
    unset($sql_str); 
    unset($conn); 
    header("Location: ".$goTo);//This points to old location before creating new record 

Все это работает хорошо, но теперь проблема пинок Когда я создать новый repport после того, как я удалил один.. Он получает тот же идентификатор (vrnr), что и удаленный, и это прекрасно. Но при этом он удаляет запись снова без вызова сценария. И это похоже на случайное случайное. Иногда это происходит через несколько секунд, иногда через минуту, а иногда и вовсе.

Я много работал для решения, но без результата. Я создал систему журналов, файловую базу и базу данных. Но когда я включаю систему регистрации, ошибка волшебным образом исчезает.

Я потерялся в этом, может ли кто-нибудь мне помочь?

+1

Вы не должны использовать GET-запросы для удаления или изменения данных, всегда используйте POST. Это позволит избежать проблем с браузерами, пытающимися получить ссылки для ускорения просмотра, случайных перезагрузок и т. Д. – jeroen

+0

@jeroen - Спасибо за ваш комментарий. Считаете ли вы, что это именно так? Этого не происходит, если я закрою браузер и снова открою страницу. И он удаляет только те записи, которые были удалены ранее. Поэтому, если это браузер делает это, он делает это только тогда, когда это делалось раньше. –

+0

Это, безусловно, выглядит; это похоже на то, что ваш браузер перезагружает ранее загруженные страницы. – jeroen

ответ

0

Решение этого было использовать POST вместо GET, как @jeroen предложил в комментариях.

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