Salve,
sono quasi arrivato alle battute finali del mio progetto, ed è venuta l'ora dell'ottimizzazione del codice.
Il codice si compone di due parti una php e una jquery:
Jquery:
Codice PHP:
<script type="text/javascript">
jQuery(document).ready(function($)
{
$('#auto').hide();
$('li[id^="lis"]').hide();
myobj = {"116":"monitors_tab","100":"cpu_tab","113":"mouse_tab","114":"mousepad_tab","115":"keyboard_tab","102":"psu_tab","106":"case_tab","103":"dissipatori_tab","105":"exthd_tab","99":"inthd_tab","104":"masterizzatori_tab","107":"ram_tab","108":"aux_tab","109":"mobo_tab","110":"pci_tab","111":"vga_tab","101":"ssd_tab"};
$('#catId').change(function() {
var selectVal = myobj[$('#catId :selected').val()];
$('#comps').autocomplete(
{
source: "http://tecnomercatino.it/oc-content/plugins/databasehd/codicephp.php?tab="+selectVal,
minLength: 1,
select: function (event, ui) {
console.log("Selected: " + ui.item.modello);
$('input[id^=meta]').attr('readonly', true);
$('.meta_list').hide();
$('input[id^=meta]').css("background-color","#D1FF75");
if(selectVal=='cpu_tab'){
$('input[id="meta_modello"]').val((ui.item.modello).replace(/-/g, " "));
$('li[id="lis_modello"]').append(ui.item.modello);
$('li[id="lis_modello"]').show();
$('input[id="meta_anno"]').val(ui.item.anno);
$('li[id="lis_anno"]').append(ui.item.anno);
$('li[id="lis_anno"]').show();
$('input[id="meta_produttore"]').val(ui.item.produttore);
$('li[id="lis_produttore"]').append(ui.item.produttore);
$('li[id="lis_produttore"]').show();
$('input[id="meta_arch"]').val(ui.item.arch);
$('li[id="lis_arch"]').append(ui.item.arch);
$('li[id="lis_arch"]').show();
$('input[id="meta_socket"]').val(ui.item.socket);
$('li[id="lis_socket"]').append(ui.item.socket);
$('li[id="lis_socket"]').show();
$('input[id="meta_corenum"]').val(ui.item.corenum);
$('li[id="lis_corenum"]').append(ui.item.corenum);
$('li[id="lis_corenum"]').show();
$('input[id="meta_threadnum"]').val(ui.item.threadsnum);
$('input[id="meta_l2cache"]').val(ui.item.l2cache);
$('input[id="meta_l3cache"]').val(ui.item.l3cache);
$('input[id="meta_benchurl"]').val(ui.item.bench);
$('input[id="meta_imgurl"]').val(ui.item.imgurl);
$('.itemimg').css('background-image', 'url(' + ui.item.imgurl + ')');
}
}
});
$('#auto').show();
});
});
</script>
E quella php molto semplice:
Codice PHP:
<?php
function ins_database_hd() { ?>
<div id="auto">
<label><?php echo "Componente:"; ?></label>
<input type="text" id="comps" />
</div>
<?php } ?>
<?php
function display_results() { ?>
<ul class="item_dblist">
<li id="lis_modello">[b]Modello: [/b]
<li id="lis_produttore">[b]Produttore: [/b]
<li id="lis_arch">[b]Architettura: [/b]
<li id="lis_socket">[b]Socket: [/b]
<li id="lis_corenum">[b]Numero Core: [/b]
[/list]
<?php } ?>
Tralasciando la prima parte, quella in cui viene eseguito "$('#comps').autocomplete" che di fatto fa una query sul database e ritorna un insieme di valori, utilizzati per creare un effetto "autocomplete" per l'appunto.
La cosa che mi preoccupa un po' è invece la seconda parte a partire da "if(selectVal=='cpu_tab')" non vorrei che quella parte di codice sia troppo pesante da far digerire, di fatto fa una serie di stampe e assegna dei valori quindi complessità costante, tuttavia mi convince poco, soprattutto considerando che a database e codice completo saranno diverse pagine di codice .-.
Inoltre io utilizzo i metodi show() e hide() per nascondere e mostrare all'occorrenza gli oggetti, infatti la logica è la seguente se un oggetto esiste nel database allora nascondo i campi di input e mostro la stampa dei valori del database, se non esiste non nascondo i campi e lascio all'utente la possibilità di inserire i proprio valori, faccio la stessa cosa per mostrare e nascondere la stampa dei valori del database
Grazie in anticipo