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
}

此代码是有效的,但是当我回显它时,所有书籍都会被回显,而不仅仅是所选作者的某些书籍。

我还在 IF 语句中尝试了 $books[1],它说 JRR Tolkien 但它似乎不起作用。

我束手无策。我不是这方面的专家,因此将不胜感激所有帮助。谢谢。

4

1 回答 1

2

您需要将if语句移动到循环内部,以便根据用户的输入检查每本书。

IE

$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 回答