how can i create 2 dynamic dropdown from one table in database? - javascript

Can someone help me on how to link up 2 dropdown list which data came from the same table in the database, is it possible to do this way because I can only find a solution which there must be 2 table in the database to link up those two. this is how should it work, 1st, the user choose the department and the 2nd dropdown will show only the people that assigned from that particular department.
database table has id,name,department.
the department works already but the 2nd dropdown didnt work to filter from the department. Can someone help me to know what is wrong with this?
index.php
<?php
$query ="SELECT DISTINCT company from hrar";
$results = $db_handle->runQuery($query);
?>
<script>
function getName(val) {
$.ajax({
type: "POST",
url: "getName.php",
data:'department='+val,
success: function(data){
$("#nameList").html(data);
}
});
}
function selectDepartment(val) {
$("#search-box").val(val);
$("#suggesstion-box").hide();
}
</script>
<label>Department:</label><br/>
<select name="country" id="country-list" class="demoInputBox" onChange="getName(this.value);">
<option value="">Select Department</option>
<?php
foreach($results as $country) {
?>
<option value="<?php echo $country["id"]; ?>"><?php echo $country["company"]; ?></option>
<?php
}
?>
</select>
</div>
<div class="row">
<label>Name:</label><br/>
<select name="state" id="nameList" class="demoInputBox">
<option value="">Select Name</option>
</select>
//below is the getName.php
if(!empty($_POST["company"])) {
$query ="SELECT DISTINCT name from hrar = '" . $_POST["company"] . "'";
$results = $db_handle->runQuery($query);
?>
<option value="">Select Name</option>
<?php
foreach($results as $name) {
?>
<option value="<?php echo $name["id"]; ?>"><?php echo $name["name"]; ?></option>
<?php
}
}
?>

Try this.
<select name="filter" id="filter" onchange="this.form.submit();">
<option value="name">Select Name</option>
<?php
$sql = "SELECT DISTINCT name FROM hr";
$result = mysqli_query($conn,$sql);
while ($row = mysqli_fetch_array($result))
{
echo "<option value='". $row['name'] ."'>" .$row['name'] ."</option>";
}
?>
</select>

Related

OnChange with javascript/ajax result, also with a php foreach loop

I have this interesting setup that I hope someone can help me fix. I've searched and found some solutions but nothing that comes close to what I'm trying to achieve, so nothing really lead me in a direction that could get me to a solution for what I'm doing
I have a dropdown of litters. You select a litter, onchange happens, it gets the available pick spots from the database, then echos out the results with another foreach to another dropdown menu
The problem is, these dropdown menus are inside of a foreach loop (for each client available to the site user). So the first client works as expected, but because it has the same ID, the second client's dropdowns don't do anything since it's still on the same page
Hopefully someone has some insight on how to make this work :(
Here's the dropdown:
<select class="form-control mb-3" name="the_chosen_litter" id="litter" required>
<option disabled selected>First, Choose A Litter...</option>
<?php
foreach($labradoodle_two as $litter_waitlist_form){
?>
<option id="<?php echo $litter_waitlist_form['litter_id']; ?>" value="<?php echo $litter_waitlist_form['litter_id']; ?>" style="<?php if($litter_waitlist_form['status']=='LITTER CLOSED'){ echo 'color:red;'; }else{ echo 'color:green;'; } ?>" >
<?php echo $litter_waitlist_form['litter_names']; ?>
</option>
<?php } ?>
</select>
<select class="form-control mb-3" name="buyer_pick_gender" id="pick_list" required> <!-- uses jquery to fill in this field -->
<option disabled selected>Litter Selection Required...</option>
</select>
Here's the javascript/ajax:
$(document).ready(function() {
$("#litter").on("change", function() {
var litterID = document.getElementById("litter").value;
$.post('secure/litter_list_dropdown.php', { littersubmit: litterID }, function(result) {
$('#pick_list').html(result);
}
);
});
});
And for reference, here's my "litter_list_dropdown" code that pulls from the database and echos out the available "pick spots":
<?php
session_start();
include '../../database/dbh.class.php';
$litter_id = $_REQUEST['littersubmit'];
$femalespickedquery = $dbpdo->query("SELECT * FROM pick_assignment WHERE litter_id=? AND gender_id=?",$litter_id,"1")->fetchAll();
$malespickedquery = $dbpdo->query("SELECT * FROM pick_assignment WHERE litter_id=? AND gender_id=?",$litter_id,"2")->fetchAll();
?>
<option disabled="disabled" selected="selected">Choose A Pick</option>
<?php foreach ($femalespickedquery as $pick){
$picktaken=$pick['user_id'];
$pickcustom=$pick['custom_name'];
$pickposition=$pick['pick_id'];
$suffix=ordinal($pickposition);
?>
<option value="<?php echo $pickposition.' 1'; ?>" <?php if($picktaken!="0" OR $pickcustom==true){ echo "disabled"; } ?>>
<?php echo "FEMALE - " .$pickposition.$suffix. " Pick"; if($picktaken!="0" OR $pickcustom==true){ echo " *RESERVED*"; }?>
</option>
<?php } ?>
<?php
foreach ($malespickedquery as $pick){
$picktaken=$pick['user_id'];
$pickcustom=$pick['custom_name'];
$pickposition=$pick['pick_id'];
$suffix=ordinal($pickposition);
?>
<option value=<?php echo $pickposition.' 2'; ?>" <?php if($picktaken!="0" OR $pickcustom==true){ echo "disabled"; } ?>>
<?php echo "MALE - " .$pickposition.$suffix. " Pick"; if($picktaken!="0" OR $pickcustom==true){ echo " *RESERVED*"; }?>
</option>
<?php } ?>

How to hide select options when there is no data

I'm building a drop-down list with options containing data from a database and want to hide options which have zero data.
I have tried an if statement using continue but failing to catch the live data values from the database.
<select name='Database' title="Choose from database">
<option value="">All</option>
<?php foreach($database as $row):
if ($row['topic'] == 0) {
continue;
}
else {
?>
<option value="<?= $row['topic']; ?>"
<?php if ($row['topic'] == $_SESSION['prosess']){echo "
selected";}?>>
<?= $row['topic']; ?>
<?php }?>
</option>
<?php endforeach; ?>
</select>
Is there any clever javascript-, php-, etc. code that can deactivate/hide options from a database which are empty.
Add this in your css:
select option:empty {
display:none
}
I think you should try this.
<select name='Database' title="Choose from database">
<option value="">All</option>
<?php
if(count($database) > 0)
{
foreach($database as $row)
{
?>
<option value="<?= $row['topic']; ?>"
<?php if ($row['topic'] == $_SESSION['prosess']){echo "
selected";}?>>
<?= $row['topic']; ?>
<?php }?>
</option>
<?php
}
}
?>
</select>
Hope it helpful for you.

how to avoid repetition of values in dropdown list while updating in php

I want to update "profile of a user" in php. There is a repetition of one value for two times in dropdown list. for example i take language value='Punjabi' from database but there is also a value placed in dropdown with name of 'Punjabi'.
The issue is simply that there is a repetition of value which i don't want.
<?php $result=mysqli_query($conn, "select * from profile where id=$firstPerson");
while($queryArray=mysqli_fetch_array($result)){ ?>
<select name="language" id="language" >
<option value='<?php echo $queryArray["language"];?> '> <?php echo $queryArray["language"]; ?></option>
//for example, the value from database is "Punjabi"
<option value="Hindi">Hindi</option>
<option value="Punjabi">Punjabi</option>
<option value="Urdu">Urdu</option>
</select>
<?php } ?>
when a value='Punjabi' from database is selected in dropdown list, the dropdown should not show the value='Punjabi' that is already placed in dropdown.
Remember: i have more than 1000 values in my dropdown(html) list.
screenshot
Instead of creating a new option according to the user data, Check if existing options are equal to user data:
<select name="language" id="language" >
<option value="Punjabi" <?php if ($queryArray["language"]=="Punjabi"){echo 'selected="selected"'} ?>>Punjabi</option>
<option value="Hindi" <?php if ($queryArray["language"]=="Hindi"){echo 'selected="selected"'} ?>>Hindi</option>
<option value="Urdu" <?php if ($queryArray["language"]=="Urdu"){echo 'selected="selected"'} ?>>Urdu</option>
</select>
If there are large number of options and you don't want to hard code these conditions, you can remove the second option using javascript on DOM ready:
$(document).ready(function(){
$('option[value="<?php echo $queryArray["language"] ?>"]').eq(1).remove();
})
skip the loop when value is equal to Punjabi, Urdu and Hindi.
<?php $result=mysqli_query($conn, "select * from profile where id=$firstPerson");
while($queryArray=mysqli_fetch_array($result)){ ?>
<select name="language" id="language" >
<?php if($queryArray["language"]!="Punjabi" && $queryArray["language"]!="Urdu" &&
$queryArray["language"]!="Hindi") { ?>
<option value="Hindi">Hindi</option>
<option value="Punjabi">Punjabi</option>
<option value="Urdu">Urdu</option>
<?php } ?>
I think you are doing it wrong way the correct way would be having a table which stored all the languages along with values
using selected attribute to achieve your objective
<?php
$result=mysqli_query($conn, "select * from profile where id=$firstPerson");
$queryArray1=mysqli_fetch_array($result);
$langOfUser=$queryArray1["language"];
?>
<select name="language" id="language" >
<?php $result=mysqli_query($conn, "select * from langtab");
while($queryArray=mysqli_fetch_array($result)){ ?>
<option value='<?php echo $queryArray["languageValue"];?> ' <?php if($langOfUser== $queryArray["languageValue"]){ echo 'selected';}?>> <?php echo $queryArray["languageName"]; ?></option>
<?php } ?>
</select>
You have to use if condition to display values in select option.
<select name="language" id="language" >
<?php $result=mysqli_query($conn, "select * from profile where id=$firstPerson");
while($queryArray=mysqli_fetch_array($result)){
if($queryArray["language"]!="Punjabi") {
$opval = "<option value=" . $queryArray["language"] . ">". $queryArray["language"]. " </option> "
echo $opval;
}
?>
<option value="Punjabi">Punjabi</option>
<option value="Hindi">Hindi</option>
<option value="Urdu">Urdu</option>
</select>
So your problem is that you have html hardcoded options and database options. You need to merge them into one on that website.
So you can use some javascript
elements = [1, 2, 9, 15].join(',')
$.post('post.php', {elements: elements})
But you can fill your elements like this is you don´t want to write it by hand
$("#id select").each(function()
{
allOptionsInSelect.push($(this).val());
});
Than on php side you can do
$elements = $_POST['elements'];
$elements = explode(',', $elements);
And now you have html hardcoded select on server side. Now you need to check if it doesn´t already exist when you are printing from database
You can do that like this
if(in_array(value_from_database, $elements) {
// It is so skip
} else {
// It is not, so print it
}
You can use if elseif this way.
<select name="language" id="language" >
<option value='<?php echo $queryArray["language"];?>'><?php echo $queryArray["language"]; ?></option>
<?php if ($queryArray["language"] == "Hindi") { ?>
<option value="Punjabi">Punjabi</option>
<option value="Urdu">Urdu</option>
<?php } elseif ($queryArray["language"] == "Urdu") { ?>
<option value="Punjabi">Punjabi</option>
<option value="Hindi">Hindi</option>
<?php } elseif ($queryArray["language"] == "Punjabi") { ?>
<option value="Urdu">Urdu</option>
<option value="Hindi">Hindi</option>
<?php } ?>

How can I store the value of 'series' as a session variable?

Heading
how i get the selected value of city_id from drop down list and store in a session??
`
<form action="dynamic.php" method="post">
<select name="city" >
<option value="">Select City</option>
<?php
$sql="select * from city ORDER BY city_name";
$result=mysqli_query($con,$sql);
while($row=mysqli_fetch_array($result)){
?>
<option value="<?php echo $row["city_id"];?>"><?php echo $row["city_name"];?></option>
<?php
}
?>
</select>
</form>
<?php
session_start();
if(!empty($_POST['city'])){
$_SESSION['city'] = $_POST['city'];
}
?>
You will need to session_start();
Then
$_SESSION['city'] = 'somecity';
you need use this in each page that you use the var:
session_start();
then you can add this
$_SESSION["myvar"] = "something"

Retrieving data from databse using the dropdown selected list in php and mysql

I have texbox and dropdown list which is populated from mysql database. I want to retrieve data from database and wants to display in textbox using dropdown selected list, without refreshing the page. Here is my code and Thanks in Advance.
<select name="select1" class="form-control" id="dropdownlist1">
<option id="0">-- Select the Company --</option>
<?php
require("dbcon.php");
$getallcompanies = mysql_query("SELECT * FROM ifcandetails6");
while($viewallcompanies = mysql_fetch_array($getallcompanies)){
?>
<option id="<?php echo $viewallcompanies['tcuid']; ?>"><?php echo $viewallcompanies['tcname'] ?></option>
<?php
}
?>
</select>
Input Textbox:
<input type="text" id="field1" value="<?php echo $viewallcompanies['tccontact']?>" disabled/>
Separate things out like this:
<?php
require("dbcon.php");
$query = mysql_query("SELECT tcuid, tcname, tccontact FROM ifcandetails6");
while($row = mysql_fetch_array($query)){
$contacts[] = $row['tccontact'];
$companies[] = $row;
}
?>
<select name="select1" class="form-control" id="dropdownlist1">
<option id="0">-- Select the Company --</option>
<?php foreach($companies as $company) { ?>
<option id="<?= $company['tcuid']; ?>"><?= $company['tcname'] ?></option>
<?php } ?>
</select>
<?php foreach($contacts as $contact) { ?>
<input type="text" id="field1" value="<?= $contact['tccontact']?>"/>
<?php } ?>

Categories

Resources