0

私がこの権利を例証できるかどうかわからない...

さて、ここにあるものは、学生#をチェックするためのループを実行し、$ error_check=0と$error_check++を使用してエラーがあるかどうかを検討しました。ある場合はエラーが表示され、何かがerror.logに出力されます。そうでない場合は、.txtファイルのようなものが出力されて内容が出力されます。

しかし、.txtファイルの最初の行にエラーがある場合、または.txtファイルの2行目以降のコンテンツにエラーがある場合にのみ、スクリプトが正しく実行されることに気付きました。正しいメッセージが出力されます。コンテンツの最初の行とエラーメッセージも出力されます。

ただし、もちろん、コンテンツの最初の行にエラーがなく、他のいくつかの行にエラーがある場合でも、エラーメッセージのみが出力されるようにスクリプトを実行する必要があります。

スクリプトをループのどこに置くかということになるはずですが、どういうわけかスクリプトを読み続けて、何を変更すればよいかわかりません。

else  //else file exist then.......else #1
{
    $fileContents = file("./courses/" . $_GET["filename"]);  //calls out the file into $fileContents[] array....so $fileContents[0] is like the first row of the contents

$datePrinted = false;  //setting a flag first so the date will be print only once when there's error..being used later in the foreach loop

$error_message = false;  //setting a flag so error message only show once and being used later in the foreach loop

$well_formed = false;  //another flag  to stop the looping message saying the file is correctly formed

$table = false;

$error_check = 0;

sort($fileContents);

foreach($fileContents as $row)  //the contents will be then seen as $row
{
    $column = preg_split("/,/", $row);  //splits the row by , and name each array as $column
    $error_log = fopen("./courses/path/error.log","a+") or die ("File can not be opened");  //creates/open an error.log file

    if(!(isEmailAddressWellFormed($column[3])) || !(isStudentNumberWellFormed($column[0])))  //two functions calls from page4.php using preg_match to check email and student# validation
    //if one of them do not validate the following will start
    {
        $error_check++;
        if(!$error_message)  //if this is false then the error message+link will show
        {
        echo "Errors have been found in " . $_GET['filename'] . "<br/><a href='./courses/path/error.log'>Click here for the log</a>";
        $error_message = true;  //since this is in a loop but doesn't need to print it out so many times so changing the value here to true so when this loop runs again if(!error_message) will not run again
        }
        if(!$datePrinted)  //works as how error_message works.  the date only print once by here
        {
        fwrite($error_log, date("F t, Y (h:i:s a)") . PHP_EOL);
        $datePrinted = true;
        }

        if(!(isEmailAddressWellFormed($column[3])))  //checks again if the email is not valid then print the follow to error.log
        {
        fwrite($error_log, "Improper email address from" . $_GET["filename"] . " :" . PHP_EOL);
        fwrite($error_log, "$column[2] $column[1] $column[3]" . PHP_EOL);
        }
        if(!(isStudentNumberWellFormed($column[0])))  //checks again if the student # is not valid then print the follow to error.log
        {
        fwrite($error_log, "Improper student numbers from" . $_GET["filename"] . " :" . PHP_EOL);
        fwrite($error_log, "$column[2] $column[1] $column[0]" . PHP_EOL . "\n");            
        }
    }



    elseif($error_check == 0)
    {

        if(!$well_formed)
        {
            echo "<h1 style='color: red'>" . $_GET["filename"] . " is well formed.</h1>";
            echo "<table>";

            $well_formed = true;
        }

                echo $column[0];
                echo $column[1];
                echo $column[2];
                echo $column[3];

    }

}//closing foreach
        fwrite($error_log, str_repeat("-",80) . PHP_EOL);  //puts a line to separate the next error but each time the page runs this line will print even if there's no error
        fclose($error_log);

                    if(!$table)
        {
            echo "</table>";
            $table = true;
        }

}//closing else #1

助けてくれた人たちに事前に感謝します...ありがとう...

追加した

$row = $column[0] . $column[1] . $column[2] . $column[3];

preg_splitの後のforeachの最初で、次に下部で次のように変更しました...

    elseif($error_check == 0)
    {

        $row.=$row;
    }

}//closing foreach
        fwrite($error_log, str_repeat("-",80) . PHP_EOL);  //puts a line to separate the next error but each time the page runs this line will print even if there's no error
        fclose($error_log);

    if($error_check == 0)
        {

            echo "<h1 style='color: red'>" . $_GET["filename"] . " is well formed.</h1>";
            echo "<table>";
            echo $row;
            echo "</table>";

        }

}//closing else #1

?>

しかし、今ではコンテンツの2行目しか出力されません。Ooは現在、テスト用に3行のコンテンツしかありません。

4

0 に答える 0