-1

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句があるので、どうすればそれを行うことができますか。

ありがとう

4

3 に答える 3

0

URL パラメーターを使用して変数を渡し、それらの変数を使用して、where 句で伝えたいことをトリガーします。

于 2013-02-25T23:21:48.637 に答える
0

連想配列in_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();
?>
于 2013-02-25T23:23:29.790 に答える
0

私はあなたがしようとしていると推測しています:

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

しかし、それがうまくいかないことがわかりました...

valueこれは、$_POST配列内の変数を探しているためです。

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

POST または GET から値を取得できるようにしたい場合は、$_REQUEST を使用できます。

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

一番上の conditional も変更する必要がありますisset()

ただし、セキュリティと上位互換性に関して他の人がここで行った注意を真剣に受け止めてください。

ユーザーデータを信頼しないでください。消毒する必要があります。達成するための最良の方法は、おそらく PDO を使用することです。

于 2013-02-25T23:38:51.090 に答える