2016-09-28 78 views
0

所有字段這個項目的想法是創建一個能夠在關係創建的,在下拉boxes.So例如選擇哪個項目如果我點擊了一個SQL查詢對作者姓名,我會得到所有作者的記錄,然後如果我想作者+流派,我會從作者下拉選擇作者,從流派下拉列表中選擇作者,並顯示該作者與該類型等等。 我當時的想法是用一個變量來代替作者的名字,所以不是查詢閱讀:在PHP MySQL查詢不會結合起來,包括在表

$sql = "SELECT * FROM books WHERE author = 'Ken Davies' 

我更換這又已經宣佈爲筆者在這裏

與變量$鳥名
$bird = (! empty($_POST['author'])) ? $_POST['author'] : null; 

但是代碼只是部分working.Each盒單獨工作,但他們不會合並。 所以,如果我選擇作者肯·戴維斯,那麼我選擇流派,我得到的流派,所有作者不只是肯戴維和他的流派。 任何人都可以看到我做錯了什麼,任何幫助非常感謝,我已經把所有的代碼放在這裏看。

<html> 
<head> 
<title>My Page</title> 
</head> 
<body> 
<br> 
<form name="myform" action="authors3.php" method="POST"> 

<select name="author" size="2"> 
<option value="ken davies">ken davies</option> 
<option value= "arthur smith">arthur smith</option> 
<option value="gill rafferty">gill rafferty</option><br /> 
<option value="molly brown">molly brown</option><br /> 
<option value="gilbert riley">gilbert riley</option><br /> 
<input type = "submit" name = "submit" value = "go"> 

<select name="genre" size="4"> 
<option value="adventure">adventure</option> 
<option value="biography">biography</option> 
<option value="crime">crime</option><br /> 
<option value="romance">romance</option> 
<option value="thriller">thriller</option> 

<input type = "submit" name = "submit" value = "go"> 
<select name="year" size="4"> 
<option value="2002">2002</option> 
<option value="2003">2003</option> 
<option value="2004">2004</option> 
<option value="2005">2005</option> 
<option value="2006">2006</option> 
<option value="2007">2007</option> 
<option value="2008">2008</option>          

<input type = "submit" name = "submit" value = "go"> 

<select name="publisher" size="4"> 
<option value="blue parrot">blue parrot</option> 
<option value="yonkers">yonkers</option> 
<option value="zoot">zoot</option> 

<input type = "submit" name = "submit" value = "go"> 


<?php 

#variables created and tested 
$bird = (! empty($_POST['author'])) ? $_POST['author'] : null; 
$cat = (! empty($_POST['genre'])) ? $_POST['genre'] : null; 
$mouse = (! empty($_POST['year'])) ? $_POST['year'] : null; 
$goat = (! empty($_POST['publisher'])) ? $_POST['publisher'] : null; 


$con = mysql_connect("localhost","root",""); 
If (!$con){ 
    die("Can not Connect with database" . mysql_error()); 
} 
Mysql_select_db("authors",$con); 


if (isset($bird) && isset($cat) && isset($mouse) && isset($goat)) 
{ 
    $sql = "SELECT * FROM books 
      WHERE author = '$bird' 
      AND genre ='$cat'  
      AND year= '$mouse' 
      AND publisher = '$goat' "; 
}  
      '$cat'  
      AND year= '$mouse' 
      AND publisher = '$goat' ";} 


else if (isset($bird)) 
{ 
    $sql = "SELECT * FROM books WHERE author = '$bird' "; 
} 

if(!is_null($author)){ 

    $sql.="AND author = $author"; 
} 
else if (isset($cat)) 
{ 
    $sql = "SELECT * FROM books WHERE genre = '$cat' "; 

} 

if(!is_null($genre)){ 

    $sql.="AND genre = $genre"; 
} 
else if (isset($mouse)) 
{  
    $sql = "SELECT * FROM books WHERE year = '$mouse' ";  
}  

if(!is_null($year)){ 
    $sql.="AND year = $year"; 
}  
else if (isset($goat)) 
{ 
    $sql = "SELECT * FROM books WHERE publisher = '$goat' ";  
} 
if(!is_null($publisher)){ 

    $sql.="AND publisher = $publisher"; 
}  

$myData = mysql_query($sql,$con); 

echo"<table border=3> 

<tr> 
<th>id</th> 
<th>author</th> 
<th>title</th> 
<th>publisher</th> 
<th>year</th> 
<th>genre</th> 
<th>sold</th> 
</tr>"; 

while($record = mysql_fetch_array($myData)){ 
    echo "<tr>"; 
    echo "<td>" . $record['id'] . "</td>"; 
    echo "<td>" . $record['author'] . "</td>"; 
    echo "<td>" . $record['title'] . "</td>"; 
    echo "<td>" . $record['publisher'] . "</td>"; 
    echo "<td>" . $record['year'] . "</td>"; 
    echo "<td>" . $record['genre'] . "</td>"; 
    echo "<td>" . $record['sold'] . "</td>"; 

    echo "<tr />"; 
} 
echo "</table>"; 



mysql_close($con); 



?> 
note: all four are working individually<br /> 
    not working when combined<br /> 


</form> 
</body> 
</html> 
+2

每次你使用【了'mysql_'(http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) 數據庫在新的代碼擴展 ** [小貓在世界某處扼殺](http://2.bp.blogspot.com/-zCT6jizimfI/UjJ5UTb_BeI/AAAAAAAACgg/AS6XCd6aNdg/s1600/luna_getting_strangled.jpg)**它已被棄用並已爲並且在PHP7中永遠消失了。 如果您只是學習PHP,請花些精力學習'PDO'或'mysqli'數據庫擴展。 [從這裏開始](http://php.net/manual/en/book.pdo.php) – RiggsFolly

+1

只要合理縮進代碼應該現在**就罵你**在您的錯誤。 – RiggsFolly

+0

嗨RiggsFolly,非常感謝您對PDO和mysqli的建議,對於PHP來說這是一個很好的建議。在您的編輯中,我一直在收到消息...解析錯誤:語法錯誤,意外的'='在C:\ xampp中\ htdocs \ stackedit.php在69行,任何幫助表示讚賞 – simmalbert

回答

1
$cond = "SELECT * FROM books where 1"; 

if (isset($bird)) 
{ 
    $cond .= "author = '$bird'"; 
} 
if(!is_null($author)){ 

$cond .= " AND author = $author"; 
} 

if (isset($cat)) 
{ 
    $cond .= " and genre = '$cat' "; 

} 

if(!is_null($genre)){ 

    $cond .= " AND genre = $genre"; 
} 

等等.....

$myData = mysql_query($sql,$con);

現在,我的建議是

  1. 請使用mysqli_*()
  2. 也採取預防措施,SQL注入。