【问题标题】:Results to pull out selected category from a gallery - php sql从图库中提取所选类别的结果 - php sql
【发布时间】:2019-08-06 18:33:09
【问题描述】:

我正在处理我的网站上有一个画廊页面,当登陆它时,它只显示所有类别,(我只是 SELECT * FROM tblImages,但是我现在添加了一个过滤器,我希望用户然后以便能够选择他们希望在图库中看到的摄影类别。

到目前为止我的代码(我的下拉列表):

<div class="grid-2">                
    <form action = "" method = "POST">
     <label>Competition Categories</label>
     <select name="catID">
     <option value="">Select</option>
     <option value="1">Black & White</option>
     <option value="2">Urban</option>
     <option value="3">Natural World</option>
     <option value="4">Anything Goes</option>
     <option value="5">Straight Out Of The Camera</option>
     <option value="6">Landscape</option>
     </select>
     </fieldset>
    <button name="view-cat" type="submit" type="button">View</button>
   </form>
</div>

我的画廊代码和我的查询首先显示所有图像:

<div class="row">
    <div class="grid-full">
        <h1><u>GALLERY</u></h1>                 
            <div class="masonry">
            <?php
            $query = "SELECT * FROM `tblImage`";
            $result = $conn -> query($query);
            while($row = $result -> fetch_assoc())
            {
            ?>

            <div class="item">
            <a href="<?php echo $row['fldFilePath']; ?>" data-lightbox="gallery" data-title="<?php echo $row['fldName']; ?>"><img alt src="<?php echo $row['fldFilePath']; ?>" class="ImgRound"></a>
            <button class="update-title-btn">Update</button>
            <button class="delete-img-btn">Delete</button>
            </div>

            <?php
            }
            ?>

您知道我将如何根据用户是否确实选择从下拉列表中选择某些内容来运行查询SELECT * FROM tblImage WHERE fldCatID =1; 吗?

谢谢

【问题讨论】:

    标签: php html sql phpmyadmin


    【解决方案1】:

    首先,您需要确保已设置类别 ID 并且是数字(以避免 SQL 注入):

    $catID = (isset($_POST['catID']) && is_numeric($_POST['catID'])) ? $_POST['catID'] : false;
    

    然后你可以运行查询:

    $query = "SELECT * FROM `tblImage`" . (($catID) ? " WHERE fldCatID $catID" : "");
    

    使用三元运算符(($catID) ? " WHERE fldCatID $catID" : "") 只会选择用户设置的类别。

    【讨论】:

    • 嗨@DanielG,您知道通过准备好的语句执行此操作的另一种方法吗?
    • 我试过这个,但它不喜欢我的变量:$catID = $_POST['catID']; $stmt = $conn->prepare ("SELECT * FROM tblImage WHERE fldCatID = ?"); $stmt->bind_param("i", $catID); $stmt->执行(); $result = $stmt->get_result();
    • Het @DanielG 感谢您的回复,我意识到上面的 if else 代码不起作用,因为当用户登陆页面时,catID 不会在页面加载时设置,所以我添加了a: if(isset($_POST['catID'])) { $catID = $_POST['catID']; }
    • @K.Haydock 答案中列出了等效代码,我只是选择了三元运算符而不是if 语句。使用您最喜欢的任何东西。
    • 谢谢@DanielG 我还没有遇到这些是新手,但我会去研究这些,再次感谢您的帮助! :-)
    【解决方案2】:

    你可以这样查询:

    <?php
    
    if(isset($_POST['view-cat']){
        $query = "SELECT * FROM `tblImage` WHERE fldCatID ='".$_POST['catID']."'";    
        $result = $conn -> query($query);
        while($row = $result -> fetch_assoc())
        { 
    

    ... the code will loop

        }
    }else{
    $query = "SELECT * FROM `tblImage` ";    
        $result = $conn->query($query);
        while($row = $result-> fetch_assoc())
        { 
    

    ... the code will loop if no selection

        }
    }
    

    【讨论】:

    • 嗨,谢谢。我可以问一下,当没有选择时,所有图像都会首先显示吗?
    • @K.Haydock if else >> if (there a selection) select * wehre and else select *
    • @AE-zahaby 所以它可以工作,但现在登陆页面时根本不显示任何图像,直到点击类别,如果没有选择显示全部,你是否可以显示你的意思,否则只显示“x”类别? :-)
    猜你喜欢
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    相关资源
    最近更新 更多