2

フォームにTest1と入力すると、出力は5x Test1よりも大きくなります。フォームにTest2と入力すると、出力は4x Test2などになります。この問題を解決するにはどうすればよいですか?

これは私のcsvファイルです:

「ナーム」

「テスト1」

「Test2」

「Test3」

「Test4」

これは私の検索フォームです:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="test.css">
<title>test</title>
</head>
<body>
    <div id="container">
        <div id="logo"></div>
        <div id="header">
            <h1>Test Test Test</h1>
        </div>
        <div id="menu"></div>
        <div id="content">
            <form action="csv.php" method="post">
                <h3>Voer je naam in:</h3>
                <pre>
                    Naam:           <input type="text" name="Naam"><br>
                                    <input type= submit name="submit" value="Verzenden">
                </pre>
            </form>
        </div>
    </div>
    <div id="footer"></div>
</div>
</body>
</html>

これは出力ページです:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="test.css">
<title>test</title>
</head>
<body>
    <div id="container">
        <div id="logo"></div>
        <div id="header">
            <h1>Test Test Test</h1>
        </div>
        <div id="menu"></div>
        <div id="content">
            <form method="get">
            <?php
            if ( !empty ( $_POST['Naam']) ) {
                $naam = $_POST['Naam'];      
                $file_handle = fopen("Test.csv", "rb");
                $found = false;
                while (!feof($file_handle) ) {
                    $parts = fgetcsv($file_handle,4096,",");
                    $file_arr = preg_split ( "/\n/" , $file_content );
                    foreach ( $file_arr as $item ) {
                        if ( $parts[0] == $naam ) {
                            $found = true;                  
                            $resultaat = $parts[0];
                            }
                        }
                    $parts[0] = ucwords(strtolower($parts[0]));
                    if ( $found ) {
                        Print "Naam: ". $resultaat; echo "<br>";
                        }
                    }
                if ( !$found ) {
                    print "Not found";
                    }
                fclose($file_handle);
                }  
            ?>
        </div>
        <div id="footer"></div>
    </div>
</body>
</html> 
4

2 に答える 2

2

ファイルの処理を継続し、それでもtruebreak;であるため、(ループの中止)を追加することがわかった 場合。$found

E:

if ( $found ) {

Print "Naam: ". $resultaat; echo "<br>";

break;

}

$ found = trueに設定し、リセットしないでください。したがって、それは真のままであり、ファイルが通過するわけではないため、それ以降のループはすべてそのステートマネットに実行されif($found)ます

于 2013-02-28T08:50:25.190 に答える
0

部分の意味がわかりません"$file_arr = preg_split(" / \ n / "、$ file_content); foreach($ file_arr as $ item){"

これは、fgetcsvを使用しないコードの以前の実装からの残留物のようです。

于 2013-02-28T08:56:28.307 に答える