0

プロジェクトの PHP と MYSQL に取り組んでいますが、フォームの送信ボタンをクリックすると、これらのコードが実行されるという奇妙な問題が発生しました。ただし、奇妙な問題は、フォームを使用してページに戻るのではなく、ページが空白になることです。エラーを数時間検索しましたが、見つかりませんでした。

私の間違いを指摘してください。お手伝いありがとう。

<?php
include '../database.php';

if(isset($_POST['submit'])) { 

    if (isset($_POST['stuid_0'])){

        $student = $_POST['stuid_0'];


        //query moderator details
        $query = mysql_query(" SELECT ModeratorID FROM Student WHERE StuID ='$student' ") or die(mysql_error());
        $info = mysql_fetch_assoc ($query);
        $dbmoderator = $info['ModeratorID'];

            //check for changes of status in supervisor
            $query2 = mysql_query(" SELECT SupervisorID FROM Student WHERE StuID ='$student' ") or die(mysql_error());
            $value = mysql_fetch_assoc ($query2);
            $dbsupervisor = $value['SupervisorID'];
            $query3 = mysql_query(" SELECT LectStatus FROM Lecturer WHERE LectID ='$dbsupervisor' ") or die(mysql_error());
            $value2 = mysql_fetch_assoc ($query3);
            $dbsupervisorstatus = $value2['LectStatus'];

            //if no changes in supervisor
            if ($dbsupervisorstatus=='2'){ 
                echo ("<SCRIPT LANGUAGE='JavaScript'>
                window.alert('Moderator can't be promoted')
                window.location.href='../committee/committee_supervisor2.php'
                </SCRIPT>"); 

            }
            else{
             //newly assigned a supervisor if previous supervisor status is not active
            $query4 = "UPDATE Student SET SupervisorID='$dbmoderator', SupervisorStatus='1', ModeratorID=NULL WHERE StuID='$student'";
            mysql_query($query4);

            echo ("<SCRIPT LANGUAGE='JavaScript'>
                window.alert('Successfully updated')
                window.location.href='../committee/committee_supervisor2.php'
                </SCRIPT>"); 
            }
    }
    else
        echo ("<SCRIPT LANGUAGE='JavaScript'>
        window.alert('You must choose a moderator to be promoted')
        window.location.href='../committee/committee_supervisor2.php'
        </SCRIPT>");
}
?>

更新: この時点でシステムを実行すると問題が発生すると思います

if ($dbsupervisorstatus=='2'){ 

エコー「テスト」を置くと、この行の前でもまだ機能します。

更新 2:

置くとコードが実行できることがわかりました

if ($dbsupervisorstatus=='2'){ 
                echo "Moderator can't be promoted"; 

            }

としても

  if($dbsupervisorstatus == 2){
  header("location:commitee_supervisor2.php");
   }

ただし、元のコードが

if ($dbsupervisorstatus=='2'){ 
                echo ("<SCRIPT LANGUAGE='JavaScript'>
                window.alert('Moderator can't be promoted')
                window.location.href='../committee/committee_supervisor2.php'
                </SCRIPT>"); 

            }

動作していません..少し助けてください.. :)

最終更新

みんな、私は理由を知っています。

それは

window.alert('Moderator can't be promoted')

3 つのアポストロフィが含まれています。

「できない」という言葉を削除するだけで、すでに機能しています。

皆さん、助けてくれてありがとう:)

4

3 に答える 3

1

JavaScript コードを使用してもコードは機能しますが、デバッグの開始点は、JavaScript をエコーするすべての場所で通常のテキストをエコーすることです。これは、コードが失敗し始めた時点を知るのに役立ちます。例

//if no changes in supervisor
            if ($dbsupervisorstatus=='2'){ 
                echo ("<SCRIPT LANGUAGE='JavaScript'>
                window.alert('Moderator can't be promoted')
                window.location.href='../committee/committee_supervisor2.php'
                </SCRIPT>"); 

            }

と置換する

//if no changes in supervisor
            if ($dbsupervisorstatus=='2'){ 
                echo "Moderator can't be promoted"; 

            }

これをすべてのエコー ポイントで実行してから、1 つずつ JavaScript コードに置き換えていきます。そうすれば、コードが失敗する場所を見つけることができます。

于 2013-03-18T04:19:46.273 に答える
0

HTMLフォームはどこに置きますか?同じページにありますか、それとも別のページにありますか?コードからは何も行われていないように見えるので、送信ボタンの名前が正しいかどうかを確認することをお勧めします(送信)。HTMLは次のようになります。

<form name="your_form">
    <!-- Your form here -->

    <input type="submit" name="submit" value="Submit"/>
</form>
于 2013-03-18T04:32:04.617 に答える
0

JavaScript を使用する代わりに、純粋な PHP ではるかに優れたアプローチを使用してみてください。何かのようなもの:

  if($dbsupervisorstatus == 2){
  header("location:commitee_supervisor2.php");
   }

また、JS を使用する必要がある場合は、AJAX リクエストを作成すると、好きなように JS を介して動作を操作できます。

于 2013-03-18T04:17:36.717 に答える