2013-02-25 107 views
-1

我需要將WHERE子句連接到鏈接。這裏是我的代碼:將WHERE子句連接到鏈接

<body> 
<?php 

function toiletPaper($input) { 
    // Clean input 
    return $input; 
} 


$username="USERNAME"; 
$password="PASSWORD"; 
$database="DATABASE"; 

mysql_connect(localhost,$username,$password); 
@mysql_select_db($database) or die("Unable to select database"); 
$query="SELECT * FROM searchacts"; 
$result=mysql_query($query); 

// process form when posted 
$query = "SELECT * FROM searchacts"; 
$options['PriceLow'] = array("desc" => "Price (Low to High)","query" => " ORDER BY price ASC"); 
$options['PriceHigh'] = array("desc" => "Price (High to Low)","query" => " ORDER BY price DESC"); 
$options['NameAZ'] = array("desc" => "Name (A-Z)","query" => " ORDER BY name ASC"); 
$options['NameZA'] = array("desc" => "Name (Z-A)","query" => " ORDER BY name DESC"); 

$query = "SELECT * FROM searchacts"; 
$filter['partybands'] = array("desc" => "Party Bands","query" => " WHERE category='Party Bands'"); 


// Important: function name is made up 
$cleanValue = toiletPaper($_REQUEST['value']); 
if (array_key_exists($cleanValue, $options)) { 
    $query .= $query.$options[$cleanValue]; 
} 
$result = mysql_query($query); 
$num = mysql_num_rows($result); 
echo "<a href='".$_SERVER['PHP_SELF']."'>All</a>"; 
foreach ($options as $key => $value) { 
    echo "<a href='".$_SERVER['PHP_SELF']."?value=".$key."'>".$value['desc']."</a>"; 

} 


?> 

<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post' name='form_filter' > 
    <select name="value"> 
     <option value="all">All</option> 
     <option value="PriceLow">Price (Low to High)</option> 
     <option value="PriceHigh">Price (High to Low)</option> 
     <option value="NameAZ">Name (A-Z)</option> 
     <option value="NameZA">Name (Z-A)</option> 
    </select> 
    <br /> 
    <input type='submit' value = 'Re-Order'> 
</form> 

<?php 
$i=0; 
while ($i < $num) { 

$image=mysql_result($result,$i,"image"); 
$name=mysql_result($result,$i,"name"); 
$category=mysql_result($result,$i,"category"); 
$description=mysql_result($result,$i,"description"); 
$stamps=mysql_result($result,$i,"stamps"); 
$stickmen=mysql_result($result,$i,"stickmen"); 
$price=mysql_result($result,$i,"price"); 
$view=mysql_result($result,$i,"view"); 
$actpagelink=mysql_result($result,$i,"actpagelink"); 


?> 


<a href="<?php echo $actpagelink; ?>" class="searchitem"> 
<div class="searchimage"><img src="<?php echo $image; ?>"/></div> 
<div class="searchtext"> 
    <div class="searchname"><?php echo $name; ?></div> 
    <div class="searchcategory"><?php echo $category; ?></div> 
    <div class="searchdescription"><?php echo $description; ?></div> 
</div> 
<div class="searchstamps"><img src="<?php echo $stamps; ?>" /></div> 
<div class="searchstickmen"><img src="<?php echo $stickmen; ?>" /></div> 
<div class="searchprice"><span class="pricefrom">from</span>&pound;<?php echo $price; ?></div> 

<div class="searchview"><img src="<?php echo $view; ?>" /></div> 


</a> 

<?php 
$i++; 
} 


mysql_close(); 
?> 


</body> 

所以,我有我的條款:

elseif($_POST['value'] == 'partybands') { 

      $query = "SELECT * FROM searchacts 
    WHERE category='Party Bands'"; 
     } 

,我需要連接到一個鏈接如。 <a href="">Party Bands</a>

我該怎麼做,因爲我會有相當多的where子句來過濾數據。

感謝

+1

你的問題對我來說還不清楚。你是否想要一種可以減少重複的方法? – 2013-02-25 23:18:01

+0

另請注意,從PHP 5.5.0開始,mysql_connect已棄用,並且將來會被刪除。相反,應該使用MySQLi或PDO_MySQL擴展。 – Manatax 2013-02-25 23:20:45

+0

對不起,我需要它,這樣當鏈接被點擊時,它會激活WHERE子句,因爲我會有很多其他的 – tech292 2013-02-25 23:22:06

回答

0

使用URL參數,並傳遞變量,然後使用這些變量來觸發你想要的where子句說什麼。

0

我建議使用關聯arrayin_array進行驗證。

另外,請確保您在使用之前清理輸入內容。

EDIT2:

<body> 
<?php 
function toiletPaper($input) { 
    // Clean input 
    return $input; 
} 

$username="USERNAME"; 
$password="PASSWORD"; 
$database="DATABASE"; 

mysqli_connect("localhost",$username,$password); 
@mysqli_select_db($database) or die("Unable to select database"); 

// process form when posted 
$query = "SELECT * FROM searchacts"; 
$options['partybands'] = array("desc" => "Party Bands","query" => " WHERE category='Party Bands'"); 
$options['PriceLow'] = array("desc" => "Price (Low to High)","query" => " ORDER BY price ASC"); 
$options['PriceHigh'] = array("desc" => "Price (High to Low)","query" => " ORDER BY price DESC"); 
$options['NameAZ'] = array("desc" => "Name (A-Z)","query" => " ORDER BY name ASC"); 
$options['NameZA'] = array("desc" => "Name (Z-A)","query" => " ORDER BY name DESC"); 

// Important: function name is made up 
$cleanValue = toiletPaper($_REQUEST['value']); 
if (array_key_exists($cleanValue, $options)) { 
    $query .= $query.$options[$cleanValue]; 
} 
$result = mysqli_query($query); 
$num = mysqli_num_rows($result); 
echo "<a href='".$_SERVER['PHP_SELF']."'>All</a>"; 
foreach ($options as $key => $value) { 
    echo "<a href='".$_SERVER['PHP_SELF']."?value=".$key."'>".$value['desc']."</a>"; 
} 
?> 
<br /> 
<?php 
$i=0; 
while ($i < $num) { 
    $image = mysqli_result($result,$i,"image"); 
    $name = mysqli_result($result,$i,"name"); 
    $category = mysqli_result($result,$i,"category"); 
    $description = mysqli_result($result,$i,"description"); 
    $stamps = mysqli_result($result,$i,"stamps"); 
    $stickmen = mysqli_result($result,$i,"stickmen"); 
    $price = mysqli_result($result,$i,"price"); 
    $view = mysqli_result($result,$i,"view"); 
    $actpagelink = mysqli_result($result,$i,"actpagelink"); 
?> 

<a href="<?php echo $actpagelink; ?>" class="searchitem"> 
    <div class="searchimage"><img src="<?php echo $image; ?>"/></div> 
    <div class="searchtext"> 
     <div class="searchname"><?php echo $name; ?></div> 
     <div class="searchcategory"><?php echo $category; ?></div> 
     <div class="searchdescription"><?php echo $description; ?></div> 
    </div> 
    <div class="searchstamps"><img src="<?php echo $stamps; ?>" /></div> 
    <div class="searchstickmen"><img src="<?php echo $stickmen; ?>" /></div> 
    <div class="searchprice"><span class="pricefrom">from</span>&pound;<?php echo $price; ?></div> 
    <div class="searchview"><img src="<?php echo $view; ?>" /></div> 
</a> 

<?php 
$i++; 
} 
mysql_close(); 
?> 
+0

或[array_key_exists](http://www.php.net/manual/en/function.array-key-exists.php) – Manatax 2013-02-25 23:26:59

+0

Edit2:未經測試...只是爲了給你一個關於如何做鏈接的想法 – Manatax 2013-02-26 19:08:27

+0

好的,我實際上想保持低 - 高,az等下拉菜單,並想過濾鏈接類別。好吧,我已經嘗試了上述方法,甚至沒有連接到數據庫了,我注意到你把它改成了mysqli,可能是你認爲的嗎?感謝您花時間幫助您!非常感謝 – tech292 2013-02-26 20:02:18

0

我猜測你想:

http://example.com/yourscript.php?value=partybands

但是發現還是不行...

這是因爲你正在尋找對於$_POST陣列中的變量value

$_POST['value'] == 'partybands' 

如果您希望能夠從任何POST搶值,或者讓你可以使用$ _REQUEST

$_REQUEST['value'] == 'partybands' 

您還需要修改的最頂層條件isset()

但要認真對待其他人在安全性和向前兼容性方面提出的警告。

不信任用戶數據。必須進行消毒。最好的辦法可能是通過PDO。

+0

他確實有post作爲form的方法,但是我同意REQUEST可用於測試目的。 – Manatax 2013-02-26 00:11:00

+0

@Manatax我接受這個問題意味着他希望得到這個工作的幫助:Party Bands。爲此,他可能想要一個GET。 – AllInOne 2013-02-26 14:50:11

+1

好點。我同意。 – Manatax 2013-02-26 18:35:44