0

そうです、このようにデータが保存されたCSVファイルがあります。

name,author,isbn,price
name,author,isbn,price
name,author,isbn,price
name,author,isbn,price

私がやろうとしているのは、対応する著者による本のみを表示するためのユーザー入力である URL の値を使用することです。たとえば、次のようなユーザー入力値を含む URL を取得します。

/books.php?author=J.R.R. Tolkien

以下を表形式で出力します。

The Hobbit, J.R.R. Tolkien, ISBN#, #Price
The Lord Of The Rings, J.R.R. Tolkien, ISBN#, #Price

私はコーディングの専門家ではないので、私が得ることができるすべての助けをいただければ幸いです。これまでに管理したことは次のとおりです。

$author = $_GET['author'];
IF (strtolower ($author)==strtolower('J.R.R. TOLKIEN'))
{
echo '<table border=1>'; //start table
$handle = fopen("books.csv", "r");
while (($books = fgetcsv($handle, 1000, ',')) !== FALSE)

echo '<tr><td>',$books[0], //names
'</td><td>',$books[1], //authors
'</td><td>',$books[2], //ISBN
'</td><td>',$books[3], //price
'</td></tr>';
fclose($handle);
echo '</table>'; //end table
}

このコードは機能しますが、エコーすると、選択した著者の特定の本だけでなく、すべての本がエコーされます。

また、JRR Tolkien と書かれている IF ステートメントで $books[1] も試しましたが、うまくいかないようです。

私は機知に富んでいます。私はこれの専門家ではないので、すべての助けをいただければ幸いです。ありがとう。

4

1 に答える 1

2

ifユーザーの入力に対して各本をチェックできるように、ステートメントをループ内に移動する必要があります。

いえ

$author = $_GET['author'];
echo '<table border=1>'; //start table
$handle = fopen("books.csv", "r");
while (($books = fgetcsv($handle, 1000, ',')) !== FALSE)
{
    if (strtolower ($author)==strtolower($books[1]))
    {
        echo '<tr><td>',$books[0], //names
        '</td><td>',$books[1], //authors
        '</td><td>',$books[2], //ISBN
        '</td><td>',$books[3], //price
        '</td></tr>';
    }
}
fclose($handle);
echo '</table>'; //end table

また、検索パラメーターに一致する本がない場合のロジックを追加する必要があります。

于 2013-03-06T21:53:03.300 に答える