PHP Select Box...after selection help needed (yii) - php

I am using a script that runs on the YII framework...
I have this select box that lets a user view content based on their country. But right now, when a user selects their country, after the selection, it just shows the country name...
And what I want is, after a user selected their country... it must still show the select box, but have the selected country at the top of the list.
I have tried so many things but I'm still new to this this.
<?php if ( $_country == '' ) { ?>
<select onchange="changeCountry(this)" name="country" id="country">
<?php if ( count ($c) != 0 ) { ?>
<?php if ( $_country == NULL ) ?>
<?php foreach ($c as $id => $val) { ?>
<option<?php if ($id == $countryId) {?> selected="selected"<?php } ?> value="<?php echo mbCoreFunctions::to_seo_ad_name ($val, $id) ?>"><?php echo $val; ?></option>
<?php } ?>
<?php } ?>
</select>
<?php } else { ?>
<span class="countryName"><?php echo $countryName; ?></span>
<?php } ?>

I didn't try but following should work
<select onchange="changeCountry(this)" name="country" id="country">
<?php foreach ($c as $id => $val) { ?>
<option<?php if ($id == $countryId) {?> selected="selected"<?php } ?> value="<?php echo mbCoreFunctions::to_seo_ad_name ($val, $id) ?>"><?php echo $val; ?></option>
<?php } ?>
</select>

Related

WordPress: How to order child pages in a select menu?

I have a select box, which allows you to navigate between parent pages and their children, they are given a specific order, in order to display them in a certain way on the website.
I believe that the line of code that interest you is perhaps this one
$children = get_pages("title_li=&child_of=" . $parent . "&echo=0");
The full code is below. You can see that the order of the pages on the site is different than the order of the pages in the select menu, that is because wordpress sorts per order, my pages are sorted alphabetically. How to sort them by order, so that what you see on the website matches the select box?
<?php
// determine parent of current page
if ($post->post_parent)
{
$ancestors = get_post_ancestors($post->ID);
$parent = $ancestors[count($ancestors) - 1];
}
else
{
$parent = $post->ID;
}
$children = get_pages("title_li=&child_of=" . $parent . "&echo=0");
?>
<div id="info-select-wrap" class="single-france-select">
<select id="info-select"class="fr-select" >
<?php
if (get_the_ID() == $parent->ID): ?>
<option value="<?php
echo get_the_permalink($parent->ID); ?>" selected>  <?php
echo get_the_title($parent->ID); ?></option>
<?php
else: ?>
<option value="<?php
echo get_the_permalink($parent); ?>">  <?php
echo get_the_title($parent); ?></option>
<?php
endif;
foreach($children as $child):
if (has_children($child))
{
if (get_the_ID() == $child->ID)
{ ?>
<option value="<?php
echo get_the_permalink($child->ID); ?>" selected>  <?php
echo get_the_title($child->ID); ?></option>
<?php
}
else
{ ?>
<option value="<?php
echo get_the_permalink($child->ID); ?>"> <?php
echo get_the_title($child->ID); ?></option>
<?php
}
}
else
{
if (get_the_ID() == $child->ID)
{ ?>
<option value="<?php
echo get_the_permalink($child->ID); ?>" selected>  <?php
echo get_the_title($child->ID); ?></option>
<?php
}
else
{ ?>
<option value="<?php
echo get_the_permalink($child->ID); ?>"> <?php
echo get_the_title($child->ID); ?></option>
<?php
}
}
endforeach; ?>
</select>
</div>
I tried
$children = get_pages("title_li=&child_of=" . $parent . "&echo=0&orderby='menu_order'&order='ASC'");
Didn't solve it.
Issue solved by adding sort_column=menu_order
$children = get_pages("title_li=&child_of=" . $parent . "&echo=0&sort_column=menu_order");
Just a quick note, &echo=0 is useless, you can remove it.

adding category and its subcategories in html select

i am trying to add father categories then its subcategories as options in select , so i did the following
<select class="form-control" name="select">
<?php foreach($father as $father) : ?>
<option value="<?php echo $father->id; ?>">
*Category: <?php echo $father->name." :-"; ?>
</option><?php foreach($child as $child) : ?><?php if($child->category_id==$father->id){?>
<option value="<?php echo $child->id; ?>">
-Sub-Category: <?php echo $child->name; ?>
</option><?php } endforeach; ?><?php endforeach; ?>
</select>
here is my controller
public function addg()
{
$this->load->model('catagories_model');
$data['userdata'] = $this->session->all_userdata();
$data['father'] = $this->catagories_model->get_catagories();
$data['child'] = $this->catagories_model->get_catagories_child();
$this->load->view('catagories/grand/add', $data);
}
but it loops into the first father category and display its children and just displays the other father categories without going into the if statement what could be wrong ?
This line isn't doing anything:
<?php foreach($child as $child) : ?>
It should be:
<?php foreach($childs as $child) : ?>
Assuming $childs is the array where you're storing all the subcategories.

I need to select instead of echo/print [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 5 years ago.
Improve this question
I have 3 courses on my site, so when you click sign up you are going to the sign up page where I have one drop down menu and I need to show course which is selected. Now I did everything but I am using echo, and than I have problem because I have 2 same courses.
You will see in the code:
$myCourse = intval($_GET['course_id']);
if ($myCourse) { ?>
<select id='course' class='form-text'>
<?php
foreach ( $courses as $course ) {
if ( $myCourse == $course->id ):
?>
<option selected data-price="<?php print $course->price ?>"><?php print $course->post_name ?></option>
<?php
endif;
?>
<option data-price="<?php echo $course->price ?>"><?php echo $course->post_name ?></option>
<?php
}
?>
</select>
<?php
} else {
?>
<pre>
<select id='select-course' class='signup__form-text'>
<option selected disabled>-- Select Course --</option>
<?php
foreach ( $courses as $course ) {
?>
<option data-price="<?php echo $course->price ?>"><?php echo $course->post_name ?></option>
<?php
}
?>
</select>
<?php
}
return ob_get_clean();
SO on the spot where is "print" I need something to select that choice not to print it out. Because I echo my 3 courses later and now I add existing course.
So I need select instead of print.
Can someone give me some tip?
check this code
<select id='select-course' class='signup__form-text'>
<!-- If have id select it in drop down -->
<?php
foreach ( $courses as $course ) {
if ( $myCourse == $course->id ) { ?>
<option selected data-price="<?php echo $course->price ?>"><?php echo $course->post_name ?></option>
<?php } else { ?>
<option data-price="<?php echo $course->price ?>"><?php echo $course->post_name ?></option>
<?php } ?>
<?php } ?>
</select>
not tested
you can also use this code
<select id='select-course' class='signup__form-text'>
<?php
foreach ( $courses as $course ) { ?>
<option <?php if ( $myCourse == $course->id ) { ?> selected <?php } ?> data-price="<?php echo $course->price ?>"><?php echo $course->post_name ?></option>
<?php } ?>
</select>
also this is work
<select id='select-course' class='signup__form-text'>
<?php
foreach ($courses as $course) { ?>
<option <?php if ($myCourse == $course->id) {
echo 'selected="selected"';
} ?> data-price="<?php echo $course->price ?>"><?php echo $course->post_name ?></option>
<?php } ?>
</select>
Use ternary operators
<select>
<?php
foreach($courses as $course){
echo ($myCourse == $course->id ? "<option selected value='$course->price'</option>" : "<option value='$course->price'</option>"
}
?>
</select>

php foreach sort before results

i have searched the forums but am not able to solve this problem:
i have a selection which displays Manufacturers names.
this is working correctly, but all names are not in sort-order.
this is my code:
<select name="manufacturer_id" id="manufacturer_id" data-inline = "true" style="width: 8.4em;">
<option <?php if(!isset($brand)) { echo 'selected="yes"' ; } ?> ></option>
<?php foreach ($manufacturers as $manufacturer) { ?>
<?php if ($manufacturer['manufacturer_id'] == $manufacturer_id) { ?>
<option value="<?php echo $manufacturer['manufacturer_id']; ?>" selected="selected"><?php echo $manufacturer['name']; ?></option>
<?php } else { ?>
<option value="<?php echo $manufacturer['manufacturer_id']; ?>"><?php echo $manufacturer['name']; ?></option>
<?php } ?>
<?php } ?>
</select>
is there any way to sort the output? or can someone point me in the right direction?
thanks!
Your array is a 2-d array.... sort works on a 1-d array
Use
usort(
$manufacturers,
function($a, $b) {
return strcmp($a['name'], $b['name']);
}
)

Drop Down list in php (help)

Well, this is my first question in stackoverflow. I hope that you can help me!
I would like to make a select box or a drop down list, if you prefer
So, i have this php code:
<?php $i = 0; ?>
<?php $orders = osc_list_orders();
foreach($orders as $label => $params) {
$orderType = ($params['iOrderType'] == 'asc') ? '0' : '1'; ?>
<?php if(osc_search_order() == $params['sOrder'] && osc_search_order_type() == $orderType) { ?>
<a class="current" href="<?php echo osc_update_search_url($params); ?>"><?php echo $label; ?></a>
<?php } else { ?>
<?php echo $label; ?>
<?php } ?>
<?php if ($i != count($orders)-1) { ?>
<span>|</span>
<?php } ?>
<?php $i++; ?>
<?php } ?>
I have tried to do something like this:
function osc_list_orders_drop() {
$orders = osc_list_orders();
echo '<select name="order" id="order" ONCHANGE="location = this.options[this.selectedIndex].value;">';
foreach($orders as $label => $params){
$orderType = ($params['iOrderType'] == 'asc') ? '0' : '1';
echo '<option value="'.osc_update_search_url($params).'">';
echo $label;
echo'</option>';
}
echo'</select>';
}
But the first option is not stored, so when i select one option and then try to select the first one, the first one never works.
Can you help me?
Thx
Try adding a blank option tag in the select, it will allow the change to trigger.
function osc_list_orders_drop() {
$orders = osc_list_orders();
echo '<select name="order" id="order" ONCHANGE="location = this.options[this.selectedIndex].value;">';
echo '<option></option>';
foreach($orders as $label => $params){
$orderType = ($params['iOrderType'] == 'asc') ? '0' : '1';
echo '<option value="'.osc_update_search_url($params).'">';
echo $label;
echo'</option>';
}
echo'</select>';
}
A better option would be to add a selected="selected" to the current filter's option tag.

Categories