Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change SQL query in PHP in relation to what drop down menus the user selects

Tags:

html

sql

php

mysql

I am currently doing a project in school which involves using a form to query a database. This form has multiple drop down menus and I am unsure on how to query the database if the user does not fill out all of the drop down menus. For example if the user only wants to search for a certain job type and does not specify the industry.

INDEX.HTML

<html>
    <head>
    </head>
    <body>
        <form action="test.php" method="post">
            <select name="varjobtype">
                <option value="nullg" disabled selected hidden>Job Type</option>
                <option value="Part Time">Part Time</option>
                <option value="Full Time">Full Time</option>	
                <option value="Contract">Contract</option>
                <option value="Temporary">Temporary</option>
            </select>
            <select name="varindustry">
                <option value="null" disabled selected hidden>Industry</option>
                <option value="Accommodation and Food Services">Accommodation and Food Services</option>
                <option value="Retail">Retail</option>
            </select>
        </form>
    </body>
</html>

TEST.PHP

<html>
    <head>
    </head>
    <body>
        <?php 
        $jobtype = $_POST['varjobtype'];
        $industry = $_POST['varindustry'];

        $sql = "SELECT `Job ID`, Name, Employer FROM JobListings WHERE `Job Type`  = '$jobtype' AND `Industry` = '$industry' ";
        $result = $conn->query($sql);

        if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
        ?>
                <div id="<? echo $row['Job ID']; ?>" class="box">
                <?
    	        echo "Job ID: " . $row["Job ID"]. "<br>";     
                echo "Name: " . $row["Name"]. "<br>"; 
                echo "Employer: " . $row["Employer"]. "<br>";
        	    echo "</div>";
            }
        ?>            
        <?
        } else {
            echo "0 results";
        }
        $conn->close();
    ?>
    </body>
</html>

As of now the php outputs no results.How would you make it so even if the user selects one of the drop down menus then the SQL statement will still display the jobs. Is it possible to make it so that it displays all of the jobs if the user does not interact with any of the drop down menus?

like image 969
matthew6543 Avatar asked Feb 03 '26 11:02

matthew6543


1 Answers

try this:

$jobtype = isset($_POST['varjobtype']) ? $_POST['varjobtype'] : '';
$industry = isset($_POST['varindustry']) ? $_POST['varindustry'] :'';

$sql = "SELECT `Job ID`, Name, Employer FROM JobListings";

$where = array();

if ($jobtype) $where[] = "`Job Type`  = '".$jobtype."'";

if ($industry ) $where[] = "`Industry` = '".$industry."'";

if (!empty($where)) {
     $sql .= " where " . implode (" and ",$where);
}

$result = $conn->query($sql);
...
like image 105
Sofiane Achouba Avatar answered Feb 06 '26 00:02

Sofiane Achouba



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!