2013-03-28 92 views
0

我對此有點麻煩。我有一個帶有各種鏈接的書籍的搜索結果頁面,所有鏈接到同一頁面(book.php),我想設置一個會話變量傳遞到新頁面,該頁面應該顯示更多關於特定結果鏈接的信息,即選擇。我試圖在while循環中的鏈接被選中時將變量$ _SESSION ['booktitle']傳遞給book.php。在搜索結果頁面的代碼是:單擊鏈接時將會話變量傳遞到新頁面

<form id="rform" name="formsort" action="" method="post"> 
<select name="sort" id="sort" onChange="document.forms['formsort'].submit()"> 
<option value="default">Sort Results</option> 
<option value="lowhigh">Price: Low to High</option> 
<option value="highlow">Price: High to Low</option> 
<option value="az">Alphabetical Order: A-Z</option> 
<option value="za">Alphabetical Order: Z-A</option> 
</select> 
<?php 
if(isset($_POST['title'])) 
    { 
     echo '<input type="hidden" name="title" value="'.$_POST['title'].'" />'; 
    } 
if(isset($_POST['author'])) 
    { 
     echo '<input type="hidden" name="author" value="'.$_POST['author'].'" />'; 
    } 
if(isset($_POST['isbn'])) 
    { 
     echo '<input type="hidden" name="isbn" value="'.$_POST['isbn'].'" />'; 
    } 
if(isset($_POST['keyword'])) 
    { 
     echo '<input type="hidden" name="keyword" value="'.$_POST['keyword'].'" />'; 
    } 
?> 
</form> 
<?php 
include "include.php"; 
session_start(); 
// Defining variables from home.php if set 
$title = mysql_real_escape_string($_POST['title']); 
$author = mysql_real_escape_string($_POST['author']); 
$isbn = mysql_real_escape_string($_POST['isbn']); 
$keyword = mysql_real_escape_string($_POST['keyword']); 

if(isset($_POST['sort'])){ 
[email protected]$_POST['sort'];} 
// Determine the WHEREs to use 
$where = array(); 
if (! empty($title)) 
$where[] = "booktitle LIKE '%" . $title . "%'"; 
if (! empty($author)) 
$where[] = "author LIKE '%" . $author . "%'"; 
if (! empty($isbn)) 
$where[] = "isbn LIKE '%" . $isbn . "%'"; 
if (! empty($keyword)) 
$where[] = "description LIKE '%" . $keyword . "%'"; 

//Determine the ORDERs to use 
$order = array(); 
if ((isset($sort)) && ($sort=='lowhigh')) 
$order[] = "price ASC"; 
if ((isset($sort)) && ($sort=='highlow')) 
$order[] = "price DESC"; 
if ((isset($sort)) && ($sort=='az')) 
$order[] = "booktitle ASC"; 
if ((isset($sort)) && ($sort=='za')) 
$order[] = "booktitle DESC"; 
// Build the query 
$query = 'SELECT * FROM book'; 
if (! empty($where)) 
$query .= ' WHERE ' . implode(' AND ', $where); 
if(! empty($sort)) 
$query .= ' ORDER BY ' . implode($order); 
//Display results 
$result = mysqli_query($con, $query) or die("Error in query $query: " . mysqli_error()); 
while ($row = mysqli_fetch_array($result)) { 
    ?><a id="1" href="book.php" border="0"><img src="<?php echo $row[12]; ?>" width="112px" height="150px" /></a> 
<a href="book.php?booktitle='<?php echo $_SESSION['booktitle']=$row[1];?>'"><b><?php echo $row[1] . ", (" . $row[5] . ")";?></b></a><br><?php 
echo $row[2]; 
echo "<br><div style='text-align:right'> <b>&pound;" . $row[9] . "</b></div>"; 
echo "<b>Book description:</b> " . substr($row[3],0,300) . "...<br /><hr>"; 
} 
mysqli_close($con);    //closes the connection 
?> 

和我使用調用它book.php中:

<?php 
include "include.php"; 
session_start(); 
$book=$_SESSION['booktitle']; 

$query = "SELECT * FROM book WHERE booktitle='$book'"; 
$result = mysqli_query($con, $query) or die("Error in query $query: " . mysqli_error()); 
while ($row = mysqli_fetch_array($result)) { 
echo $row[1]; 
} ?> 

但無論我選擇什麼書環節,第一個搜索結果中的BOOKTITLE while循環被回顯出來。任何想法爲什麼?

任何幫助將不勝感激。

+0

Hello @ user2197354:我會很高興,如果我可以幫助你,但只要你能夠張貼足夠的代碼,所以我可以站出來解決你的真正問題,因爲你的代碼是不夠的,至少你的程序的想法或邏輯不夠清晰我請你能給我額外的解釋和你的問題的額外信息,然後當你發佈你的代碼嘗試組織它的方式,將反映它的真實用途:) 我等待你的編輯,所以我可以幫助你:) –

+0

謝謝你最後的呼吸。我希望我已經解釋過這一點現在好了:) – user2197354

回答

0

更換

$book=$_SESSION['booktitle']; 

隨着

$book=$_GET['booktitle']; 

可以使用GET方法得到的鏈接booktitle

而不是使用$row[1]$row['booktitle']

+0

當我更換此行中我得到一個錯誤信息 警告:mysqli_error()期望的是1個參數,0在C中給出:\ XAMPP \ htdocs中\ book.php中第8行 查詢中的錯誤SELECT * FROM book WHERE booktitle =''Magic Finger'': – user2197354

+0

你得到了什麼錯誤信息? –

+0

我在其他地方有mysqli的語法錯誤嗎?對不起,我沒有太多的經驗,這 – user2197354

0

我希望我可以爲您提供我最大程度的幫助更換的。

首先,我想了解如果第二個塊是book.php,那麼第一個塊所在的文件名是什麼?

然後,我想建議您在代碼的頂部使用session_start()以消除任何「標題警告」。

然後,我從你想向我解釋爲什麼你把你的代碼,該指令

<?php echo $_SESSION['booktitle']=$row[1]?> 

你爲什麼不把它寫成:始終迴響着一個$_SESSION['variable']

<?php 
$_SESSION['booktitle'] = $row[1]; 
echo $_SESSION['booktitle']; 
?> 

然後這是需要一次做一個unset()它後直接回顯它看起來像這樣在你的情況下unset($_SESSION['booktitle']);

我認爲你的新書目搜索沒有存儲在新的會話期間上述代碼和舊的搜索結果只是存儲嘗試應用這些修改,並告訴我,如果它被解決:)

相關問題