2016-05-13 2 views
0

Ich habe ein dynamisches Dropdown-Menü für 3 Spieltypen, das mit jquery und php codiert ist. Wenn für das Spieltyp-Dropdown Baseball ausgewählt ist, zeigt die entsprechende Liga nur Baseball-Ligen. Wenn Fußball ausgewählt ist, zeigt die entsprechende Liga nur Fußball-Ligen und so weiter. Dies wurde mit jQuery erreicht. Ich bin gezwungen, $ ("# game_type_id") zu verwenden. Change(); Damit für jeden Spieltyp ausgewählt wird, wird die entsprechende Liga angezeigt. Aber der Nachteil ist, was auch immer du im Liga-Drop-Down auswählst, nachdem die Seite die selbe Auswahl nie behalten hat, wegen der erzwungenen Ausführung von $ ("# game_type_id"). Change(). Aber wenn wir prüfen wollen, ob die Auswahl korrekt ist, kann ich ja sagen, dass sich der php-Link, zB game_type_id = 1 & q_lid = 64, ändert.Wie man Jquery codierte Dynamische Dropdown-Menüs in Harmonie mit PHP-GET-Variablen arbeiten lässt

Gibt es eine Möglichkeit, dies mit dem PHP-Code in Einklang zu bringen?

HTML (Smarty PHP Framework)

Game Type: 
<select id="game_type_id" name="game_type_id" style="width:100px;margin-bottom:5px; margin-top: 10px;margin-left: 5px;"> 
<option value="1" {if $game_type_id == 1}selected="selected" {/if}> Baseball</option> 
<option value="2" {if $game_type_id == 2}selected="selected" {/if}> Soccer </option> 
<option value="3" {if $game_type_id == 3}selected="selected" {/if}> Flexi </option> 
</select> 
League: 
<select name="q_lid" id="q_lid"> 
<option value="0">-- Select --</option> 
    {foreach from=$league_list item=league} 
    <option class="league_group league_group_{$league.game_type_id}" value="{$league.league_id}" {if $q_lid==$league.league_id} selected="selected" {/if}>{$league.league_short_name}</option> 
    {/foreach} 
</select> 
<select id="fl_ctg" name="fl_ctg"> 
<option value="0" > --Flex Category -- </option> 
{foreach $f_bet_type as $val} 
<option value="{$val.category_id}" {if $fl_ctg == $val.category_id}selected="selected"{/if}>{$val.category_full_name}</option> 
{/foreach} 
</select> 
<input type="submit" id="btn_search" name="btn_search" value="Search" style="cursor:pointer;width:50px;"/> 

Js Code

$(document).ready(function(){ 

$(function() { 
    $("#game_type_id").change(); 
}); 

var options = $("#q_lid").children(".league_group").clone(); 
//Game Type Dropdown 
$("#game_type_id").bind("change",function() { 
    var type = $(this).val(); 
    $("#q_lid").prop("disabled",false); 

    if(type == 3) 
     $("#fl_ctg").show(); 
    else 
    { 
     $("#fl_ctg").hide(); 
     $("#fl_ctg").val(0); 
    } 

    // select league according to game type 
    $(".league_group").prop('selected', false) 
     .remove(); 

    options.clone() 
     .filter('.league_group_'+this.value) 
     .appendTo('#q_lid') 
     .first() 
     .prop('selected', true); 
    $("#q_lid").change(); 
}); 
//League Dropdown 
$("#q_lid").bind("change",function() { 
    var gtype = $("#game_type_id").val(); 

    if(gtype==3) 
     $("#fl_ctg").show(); 
    else 
    { 
     $("#fl_ctg").hide(); 
     $("#fl_ctg").val(0); 
    } 
}); 

$('#btn_search').click(function() 
{ 
    var q_lid = $('#q_lid').val(); 
    var fl_ctg = $('#fl_ctg').val(); 
    var q_str = ''; 

    if(q_lid.length > 0){ 
     q_str += '&q_lid='+q_lid; 
    } 

    if(fl_ctg.length > 0){ 
     q_str += '&fl_ctg='+fl_ctg; 
    } 

    if(game_type_id.length > 0){ 
     q_str += '&game_type_id='+game_type_id; 
    } 
}); 

PHP-Code

if(isset($_GET['q_lid']) && !empty($_GET['q_lid'])){ 
    $q_lid = mysql_real_escape_string(trim($_GET['q_lid'])); 
} 

if(isset($_GET['fl_ctg']) && $_GET['fl_ctg']<>0) 
{ 
    $fl_ctg = mysql_real_escape_string(trim($_GET['fl_ctg'])); 
} 
$smarty->assign('q_lid',$q_lid); 
$smarty->assign('fl_ctg',$fl_ctg); 
$sql_team_orderby = "league_priority DESC"; 
$league_data = LeagueClass::getLeagueDetails('', '', '',$sql_team_orderby, ''); 
$smarty->assign('league_list', $league_data); 

$f_sql_category="SELECT * FROM category "; 
$f_category_result=Db::getInstance()->queryExecuteFull($f_sql_category, $array = true); 

$smarty->assign('f_bet_type', $f_category_result); 

Antwort

0

Man könnte dies mit nur PHP dynamisch tun

<?php 
    $game_type_id = $_GET['game_type_id']; // Game ID 
    $league_list = array('league1', 'league2', 'league3'); // The list of all leagues 
    $chosen_league = $_GET['league']; // whatever the league is 
?> 

Spielart > Baseball > Fußball > Flexi

Liga

<select name="q_lid" id="q_lid"> 
    <option <?php if ($chosen_league == '') echo 'selected' ?> value="" disabled>Select...</option> 
    <?php 
     // Output all the league list with the chosen one 
     foreach($league_list as $option) { 
      printf(
       "<option %s value='%s'>%s</option>\n", 
       $chosen_league == $option ? 'selected' : '', 
       $option, $option 
      ); 
     } 
    ?> 
</select> 
Verwandte Themen