M2 non so come ringraziarti!!!!
Cerco di essere il più sintetico e chiaro possibile: ho ricostruito il percorso del codice eliminando tutte le righe inutili (secondo me)!
1) Qui abbiamo il richiamo quando viene premuto il bottone che crea la "menu":
onSaveMenu: function(){
[...]
this.sendCreateMenuRequest(this.createMenuFromInputData());
},
2) queste sono le funzioni richiamate dalla 1)
In "CreateMenu c'è la stringa di codice MySql dove secondo me (non mi lapidate!!!!) andrebbe inserito il codice AND OR per selezionare "by tags" applicando una funzione [(primo piatto OR dolce) AND (fettuccine OR tiramisu)] che darebbe in uscita tutti i primi piatti che contengono in uscita l'ingrediente fettuccine e tutti i dolci che contengono il tiramisu. Il proprietario della applicazione ha detto che a lui va bene così...
sendCreateMenuRequest:function(menu){
$.post( "ajax/ajaxHandler.php",{ rtype: "createMenu",uid: userId, data: menu }).done(function (data) {
[...]
},
createMenuFromInputData: function () {
var menu = {};
menu.name = $("#menuname").val();
menu.tagValues = this.getTagValues();
[...]
return menu;
},
function createMenu(){
$menu = $_POST['data'];
$menus = array();
$where = "WHERE q.id is not NULL ".getWhereClauseByTags($menu);
}
3) Queste sono le funzioni richiamate per estrarre i tags: viene creato un array monodimensionale che mette tutti i tags sullo stesso piano senza categorizzarli (però sul database i tags sono categorizzati, cioé ogni tag si sa se è un "numero" o un "ingrediente".
La modifica che andrebbe fatta qui è proprio quella di richiamare i tags, ma separarli per categorie (io volevo creare un paio di stringhe, ma effettivamente forse sarebbe sempre meglio un array multidimesionale)
getTagValues : function () {
var tagValues = [];
$('#questiontags option:selected').each(function(index,elem){
var tagValueId = $(elem).attr("id").replace("tv_id_","");
tagValues.push(tagValueId);
});
return tagValues;
},
function getWhereClauseByTags($menu)
{
$where = "";
if(sizeof($menu[tagValues])>0)
$where=" AND t.idvalue in (".implode(",", $menu[tagValues]).")";
return $where;
}
GRAZIE PER L'AIUTO M2!!!!
Qualsiasi aiuto è ben gradito, perché come ha detto Migliorabile, qui andrebbe riprogettato l'intero sistema dei tags, altrimenti gli utenti impazziscono. Però al momento io ci sto mettendo mano "per amicizia" e se alcune cose sono riuscite a sistemarle da solo, altre sono "inarrivabili" per me.