1

我正在使用 MSSQL 为模拟图书数据库创建一个网站,用户可以在其中搜索不同的图书并选择他们可能希望添加到他们帐户名下的收藏夹列表中的特定图书。我遇到的问题是我不知道如何区分他们想要添加到收藏夹中的书籍选择,因为我不知道如何将唯一标识它的书籍的 ISBN 设置为 php 会话变量. 如果有人能对此有所了解,我将不胜感激,整天都在努力解决这个问题。

//Set up connection
$connection = mssql_connect("$hostName", "$sqlUsername", "$sqlPassword")
or die("ERROR: selecting database server failed.");

//Select database
mssql_select_db($databaseName, $connection)
or die("ERROR: Selecting database failed");

//Search to run if searching for book title
if(isset($_GET['searchBook'])){
$searchBook = $_GET['searchBook'];
$query = "SELECT BOOK.ISBN, Title, Author, Publisher, NumberOfPages, Language, LocationName, ListPrice FROM BOOK, PRICE, LOCATION WHERE Title LIKE '%$searchBook%' AND BOOK.ISBN = PRICE.ISBN AND PRICE.LocationID = LOCATION.LocationID";
}

//Search to run is searching for a book author
if(isset($_GET['searchAuthor'])){
$searchAuthor = $_GET['searchAuthor'];
$query = "SELECT BOOK.ISBN, Title, Author, Genre, Publisher, NumberOfPages, Language, LocationName, ListPrice FROM BOOK, PRICE, LOCATION WHERE Author LIKE '%$searchAuthor%' AND BOOK.ISBN = PRICE.ISBN AND PRICE.LocationID = LOCATION.LocationID";
}

//Store query result
$query_result = mssql_query($query, $connection)
or die( "ERROR: Query is wrong");

//Set up table to display search results
echo "<form action=\"addFavorite.php\" method=\"POST\" name=\"table\">";
echo "<table border=1 align=\"center\">";
echo "<tr>";

// fetch attribute names
while ($filed = mssql_fetch_field($query_result)) {
echo "<th>".$filed->name."</th>";
}
echo "<th>Favorite</th>";
echo "</tr>";

// fetch table records
while ($line = mssql_fetch_row($query_result)) {
echo "<tr>\n";
foreach ($line as $eachline) {
    echo "<td> $eachline </td>";
}
echo "<td><input name=\"".$line['index']."\" type=\"submit\" value=\"Add To Favorites\"></td>";
echo "</tr>\n";
}
echo "</table>";
echo "</form>";

不确定这是否相关,但以下代码是我获取与单击的按钮行相对应的 ISBN 值的最佳尝试,这并不完全像我希望的那样工作。

//Get the ISBN 
$data = mssql_fetch_assoc($query_result);
$ISBN = $data['ISBN'];
echo $ISBN;

这是我的 addFavorite.php 的代码,这是表单操作设置的位置。该文件需要知道哪些用户将一本书添加为收藏夹,以及他们将哪些书添加到该列表中。

//Set up connection
$connection = mssql_connect("$hostName", "$sqlUsername", "$sqlPassword")
or die("ERROR: selecting database server failed.");

//Select database
mssql_select_db($databaseName, $connection)
or die("ERROR: Selecting database failed");
$User = $_SESSION['userID'];

//Set up query
$query = "INSERT INTO FAVORITES VALUES(\"$User\",\"**I NEED A SESSION VARIABLE OR SOMETHING TO GO HERE\")";

//Store query result
$query_result = mssql_query($query, $connection)
//or die( "ERROR: Query is wrong");

任何帮助将非常感激。我知道这是很多信息,如果有任何不合理或我忘记提供的信息,请告诉我。谢谢。

编辑 我尝试使用 BUTTON 而不是使用 INPUT 但由于某种原因按钮的值未设置为任何值。

echo "<form action=\"addFavorite.php\" method=\"POST\" name=\"table\">";
echo "<table border=1 align=\"center\">";
echo "<tr>";

// fetch attribute names
while ($filed = mssql_fetch_field($query_result)) {
echo "<th>".$filed->name."</th>";
}
echo "<th>Favorite</th>";
echo "</tr>";

// fetch table records **PROBLEM IN HERE since $line['ISBN'] returns nothing**
while ($line = mssql_fetch_row($query_result)) {
echo "<tr>\n";
foreach ($line as $eachline) {
    echo "<td> $eachline </td>";
}
echo "<td><button name=\"FavoriteButton\" type=\"submit\" value=\"".$line['ISBN']."\">Add To Favorites</button></td>";
echo "</tr>\n";
}
echo "</table>";
echo "</form>";

EDIT 2 终于搞定了,感谢大家的帮助!在工作条件下发布的有问题的部分代码。

echo "<form action=\"addFavorite.php\" method=\"POST\" name=\"table\">";
echo "<table border=1 align=\"center\">";
echo "<tr>";

// fetch attribute names
while ($filed = mssql_fetch_field($query_result)) {
echo "<th>".$filed->name."</th>";
}
echo "<th>Favorite</th>";
echo "</tr>";

// fetch table records
while ($line = mssql_fetch_row($query_result)) {
echo "<tr>\n";
foreach ($line as $eachline) {
    echo "<td> $eachline </td>";
}
echo "<td><button name=\"FavoriteButton\" type=\"submit\" value=\"".$line[0]."\">Add To Favorites</button></td>";
echo "</tr>\n";
}
echo "</table>";
echo "</form>";
4

1 回答 1

1

使用BUTTON-element 而不是INPUT-element。这样,您可以使用此元素的“值”属性来传递正确的值。

echo "<td><button name=\"$line['index']\" value=\"$line['ISBN']\" type=\"submit\">Add to favorites</button></td>";

尽管我建议为此使用 AJAX 而不是上述方法:使用按钮的 onclick 事件来执行调用单独的 php 文件并传递正确的 ISBN 号的 javascript。然后将其添加到数据库中,您的原始页面应刷新或重新加载页面的一部分。

于 2013-04-05T21:29:11.723 回答