Как показать окно предупреждения после успешного или нет удаления данных в mssql - PullRequest
2 голосов
/ 26 мая 2019

Я хочу показать предупреждение JavaScript после успешного или нет удаления данных в MSSQL.Как это сделать?Я написал этот код, но он показывает только частичное предупреждение message=success, даже когда удаление не работает из-за ошибок типа «конфликт со ссылкой (foreign_key)», поэтому, когда я нажимаю на эту ссылку.

 echo "<a class='activater'  href='ma_QualiOverviewloeschen.php?TestaufstellungID=".$row['TestaufstellungID'] ."&QualiID=".$row['QualiID'] ."' title='Qualitest l&ouml;schen' data-toggle='tooltip' onclick='confirm_delete()'>   <span class='glyphicon glyphicon-trash'></span></a>"; 

Вызывает следующую php-страницу, которая обрабатывает SQL-часть:

$QualiDelete =("DELETE FROM MyDB.dbo.Testaufstellung WHERE MyDB.dbo.Testaufstellung.TestaufstellungID = :TestaufstellungID");
$QualiDelete .=("DELETE FROM MyDB.dbo.AllgemeineAngaben WHERE MyDB.dbo.AllgemeineAngaben.QualiID = :QualiID");

$sth = $connection->prepare($QualiDelete);
$sth->execute(array(':TestaufstellungID' => $TestaufstellungID, ':QualiID:' => $QualiID));

                if($sth)
                {
                    header("location: ma_QualiOverview.php?message=success");   
                }
                else
                {
                    echo sqlsrv_errors();
                    header("location: ma_QualiOverview.php?message=failed");    
                }
                $connection = null;

Вернуться на главную страницу, где нажимается ссылка, следующие ifelse считают на message Должен показать мне правильное предупреждение,

<?php
if($_GET['message']=='success'){
    echo '<script language="javascript">';
    echo 'alert("Erfolgreich gelöscht.");';
    echo '</script>';
} elseif($_GET['message']=='failed'){
    echo '<script language="javascript">';
    echo 'alert("Nicht gelöscht, da Quali "ongoing" ist.");';
    echo '</script>';
}
?>

Что мне не хватает?

1 Ответ

1 голос
/ 26 мая 2019

$sth никогда не будет falsy, вы должны проверить возвращаемое значение $sth->execute Кроме того, вы должны повторить ошибки после отправки заголовка.

Поскольку $sth всегда определено, вы всегда получите успешный результат. Смотрите модифицированный код здесь

$QualiDelete =("DELETE FROM MyDB.dbo.Testaufstellung WHERE MyDB.dbo.Testaufstellung.TestaufstellungID = :TestaufstellungID");
$QualiDelete .=("DELETE FROM MyDB.dbo.AllgemeineAngaben WHERE MyDB.dbo.AllgemeineAngaben.QualiID = :QualiID");

$sth = $connection->prepare($QualiDelete);//Check the value returned instead of $sth
$result = $sth->execute(array(':TestaufstellungID' => $TestaufstellungID, ':QualiID:' => $QualiID));

                if($result )
                {
                    header("location: ma_QualiOverview.php?message=success");   
                }
                else
                {
                    header("location: ma_QualiOverview.php?message=failed");  
                    echo sqlsrv_errors();//Echo must be after header

                }
                $connection = null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...