PHP : ajouter un menu deroulant pour modifier une variable en direct
Je dois introduire un menu déroulant qui modifie une variable dans une fonction et appelle cette fonction. Le logiciel original est https://github.com/Piwigo/piwigo-openstreetmap et un exemple de travail peut être trouvé dans http://photos.katrynou.fr/osmmap.php?v=2
La première info et modèle est appelé dans le fichier racine : https://github.com/Piwigo/piwigo-ope...er/osmmap2.php
Code:
1 2 3 4
|
$js_data = osm_get_items($page);
$js = osm_get_js($conf, $local_conf, $js_data);
osm_gen_template($conf, $js, $js_data, 'osm-map2.tpl', $template); |
Le template qui est appellé, https://github.com/Piwigo/piwigo-ope...e/osm-map2.tpl tient une bonne place pour un menu déroulant, je l'ai ajouté en conséquence :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
<div id="ribbon-map-wrapper" style="visibility:hidden; max-width: 0px;">
<div class="jcarousel-wrapper" id="jcarousel-wrapper" style="max-width: 0px;">
<div class="jcarousel">
<ul id="jcarousel-thumb">
</ul>
<select id="myDropDown">
<option value='' disabled selected>Changecategory</option>
<option value='35'>Cat35</option>
<option value='3333'>Cat3333</option>
<option value='66666'>Cat66666</option>
</select>
</div> |
Le code est appelé dans le template avec:
Code:
1 2 3
|
<script type="text/javascript">{$OSMJS}</script> |
et ce code est appelé depuis https://github.com/Piwigo/piwigo-ope...ctions_map.php qui remplit le modèle.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
function osm_gen_template($conf, $js, $js_data, $tmpl, $template)
{
$linkname = isset($conf['osm_conf']['left_menu']['link']) ? $conf['osm_conf']['left_menu']['link'] : l10n('OSWorldMap');
$template->set_filename('map', dirname(__FILE__). '/../template/' . $tmpl);
$template->assign(
array(
'CONTENT_ENCODING' => get_pwg_charset(),
'OSM_PATH' => embellish_url(get_gallery_home_url().OSM_PATH),
'GALLERY_TITLE' => $linkname .' - '. $conf['gallery_title'],
'HOME' => make_index_url(),
'HOME_PREV' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : get_absolute_root_url(),
'HOME_NAME' => l10n("Home"),
'HOME_PREV_NAME' => l10n("Previous"),
'TOTAL' => sprintf( l10n('ITEMS'), count($js_data) ),
'OSMJS' => $js,
'MYROOT_URL' => get_absolute_root_url(),
'default_baselayer' => $conf['osm_conf']['map']['baselayer'],
)
); |
Plus précisément, j'ai ajouté un opérande "else" dans la fonction osm_get_items qui récupère toutes les photos de la catégorie 35*:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
function osm_get_items($page)
{
// Limit search by category, by tag, by smartalbum
$LIMIT_SEARCH="";
$INNER_JOIN="";
if (isset($page['section']))
{
if ($page['section'] === 'categories' and isset($page['category']) and isset($page['category']['id']) )
{
$LIMIT_SEARCH = "FIND_IN_SET(".$page['category']['id'].", c.uppercats) AND ";
$INNER_JOIN = "INNER JOIN ".CATEGORIES_TABLE." AS c ON ic.category_id = c.id";
}
if ($page['section'] === 'tags' and isset($page['tags']) and isset($page['tags'][0]['id']) )
{
$items = get_image_ids_for_tags( array_reduce( $page['tags'], 'osm_get_page_tag_id' ) );
if ( !empty($items) )
{
$LIMIT_SEARCH = "ic.image_id IN (".implode(',', $items).") AND ";
}
}
if ($page['section'] === 'tags' and isset($page['category']) and isset($page['category']['id']) )
{
$LIMIT_SEARCH = "FIND_IN_SET(".$page['category']['id'].", c.uppercats) AND ";
$INNER_JOIN = "INNER JOIN ".CATEGORIES_TABLE." AS c ON ic.category_id = c.id";
}
} else
{
$LIMIT_SEARCH = "FIND_IN_SET('35', c.uppercats) AND ";
$INNER_JOIN = "INNER JOIN ".CATEGORIES_TABLE." AS c ON ic.category_id = c.id";
} |
Mais je dois autoriser l'utilisateur à choisir une catégorie dans cette liste déroulante, que find_in_set utilise la variable choisie dans la liste déroulante. Je sais avec certitude que la variable de la liste déroulante doit être placée dans le "else" de la fonction osm_get_items au lieu de '35' qui charge réellement la catégorie 35 mais j'ai besoin de savoir comment définir une telle variable et le déclencheur pour changer la variable dans le menu déroulant
C'est délicat pour moi, même de l'expliquer. J'affinerai peut-être ma question à l'avenir si quelque chose n'est pas clair, mais tout est sur ces fichiers...
J'essayais d'inclure cela comme une tentative, mais je ne sais pas où; je l'ai mis dans osmmap2.php et j'obtiens l'erreur 500
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
$(document).ready(function(){
$('#myDropDown').change(function(){
//Selected value
var inputValue = $(this).val();
alert("value in js "+inputValue);
//Ajax for calling php function
$.post('submit.php', { dropdownValue: inputValue }, function(data){
alert('ajax completed. Response: '+data);
//do after submission operation in DOM
});
});
}); |
Pouvez-vous m'aider ?