[Jquery - php] Ottimizzazione script

Diego Aguiari

Nuovo Utente
23 Giu 2013
14
0
0
Salve,
mi sto cimentando nella programmazione php e jquery, volevo aggiungere una mia personale funzione ad un mio sito che sfrutta un CMS (osclass) abbastanza recente.

Lo script funziona, se pur ho avuto diverse difficoltà viste le mie scarse conoscenze, adesso volevo chiedere il parere agli esperti del settore per sapere se è ottimizzabile e/o troppo esoso in risorse.

Spiego velocemente cosa voglio ottenere con lo script:

Esiste un input field
Codice:
<input id="meta_componente" class="text ui-autocomplete-input" type="text" value="" name="meta[1]" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true"></input>
generato automaticamente dal CMS, sul quale viene eseguito del codice Jquery, scritto da me, il quale attiva una funzione Jquery, "autocomplete()", e mostra alcuni valori presi da un database.
Dopo aver fatto ciò, se l'utente seleziona un valore dall'autocomplete vengono presi altri valori dal database, inseriti in altri campi input, nascosti i campi input e mostrato una stampa di ciò che è stato preso a lato.

Ecco qui il codice, essendo un CMS ha alcuni hooks che mi permettono di eseguire un determinato codice ad un determinato momento.

Quello che segue è la prima parte di codice Jquery( non è completa), per testarla l'ho creata solo per un elemento, viene eseguita al caricamento della pagina.

Codice:
<?php function test() { ?>
<script type="text/javascript">
jQuery(document).ready(function($)
{
$('.meta_list').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"}; 
var selectVal= myobj[$('#catId :selected').val()];
var changed=0;
$('#itemimg').hide();
$('li[id^="lis"]').hide();
$('.item_dblist').hide();

$('#catId').live("change", function() { 
   selectVal = myobj[$('#catId :selected').val()];
   //$('li[id^="lis"]').hide();
   $('li[id^="lis"]').text(' ');
   $('#itemimg').attr("src", '');		
   //$('.item_dblist').hide();
   //$('#itemimg').hide(); 
   changed=1;
   });

$(document).on('focus.autocomplete','#meta_componente' , function(){
			$(this).autocomplete({ 	
				source: "http://tecnomercatino.it/oc-content/plugins/databasehd/codicephp.php?tab="+selectVal,
				minLength: 0,
				select: function (event, ui) 
				{				
					
					$('.meta_list').hide();
					$('input[id^="meta"]').attr('readonly', true);
					$('.item_dblist').show();
				
					if(selectVal=='cpu_tab')
					
					{
		
		
						$('input[id="meta_modello"]').val((ui.item.modello).replace(/-/g, " "));
						$('li[id="lis_modello"]').html("<b>Modello: </b>" +ui.item.modello);
						$('li[id="lis_modello"]').show();	
						$('input[id="meta_anno"]').val(ui.item.anno);
						$('li[id="lis_anno"]').html("<b>Anno: </b>" +ui.item.anno);
						$('li[id="lis_anno"]').show();	
						$('input[id="meta_produttore"]').val(ui.item.produttore);		
						$('li[id="lis_produttore"]').html("<b>Produttore: </b>" +ui.item.produttore);
						$('li[id="lis_produttore"]').show();	
						$('input[id="meta_arch"]').val(ui.item.arch);		
						$('li[id="lis_arch"]').html("<b>Architettura: </b>" +ui.item.arch);
						$('li[id="lis_arch"]').show();	
						$('input[id="meta_socket"]').val(ui.item.socket);		
						$('li[id="lis_socket"]').html("<b>Socket: </b>" +ui.item.socket);
						$('li[id="lis_socket"]').show();	
						$('input[id="meta_corenum"]').val(ui.item.corenum);		
						$('li[id="lis_corenum"]').html("<b>Numero Core: </b>" +ui.item.corenum);
						$('li[id="lis_corenum"]').show();	
						$('input[id="meta_threadnum"]').val(ui.item.threadsnum);	
						$('li[id="lis_threadnum"]').html("<b>Numero Threads: </b>" +ui.item.threadsnum);
						$('li[id="lis_threadnum"]').show();	
						$('input[id="meta_l2cache"]').val(ui.item.l2cache);		
						$('li[id="lis_l2cache"]').html("<b>Cache L2: </b>" +ui.item.l2cache);
						$('li[id="lis_l2cache"]').show();	
						$('input[id="meta_l3cache"]').val(ui.item.l3cache);		
						$('li[id="lis_l3cache"]').html("<b>Cache L3: </b>" +ui.item.l3cache);
						$('li[id="lis_l3cache"]').show();	
						$('input[id="meta_benchurl"]').val(ui.item.bench);
						$('input[id="meta_imgurl"]').val(ui.item.imgurl);
						
			
					}
					else $('li[id^="lis"]').val('');
		   
				}
			
			}); 
	


	});

 });
 
</script> 
<?php } ?>

La parte in php, quella richiamata dal source invece è questa:
Codice:
<?php
$mydb = new mysqli("db4free.net","tecnomercatino","carpediem1992", "hardware");
$text = $mydb->real_escape_string($_GET['term']);
$table="componenti";
$table2=$_GET["tab"];
$sqlquery ="SELECT * FROM $table as o, $table2 as c WHERE o.ID=c.componenti_ID AND (produttore LIKE '%$text%' OR nome LIKE '%$text%' )";
$result = $mydb->query($sqlquery);
$json = '[';
$first=true;
while($row = $result->fetch_assoc())

{
    if (!$first) { $json .=  ','; } else { $first = false; }
	if(strcasecmp($table2, 'cpu_tab')==0){	
    $json .= '{
				"id":"'.$row['ID'].'",
				"label":"'.$row['produttore'].' '.$row['nome'].' @ '.$row['clock'].'mhz",
				"modello":"'.$row['nome'].'",
				"anno":"'.$row['anno'].'",
				"produttore":"'.$row['produttore'].'",
				"arch":"'.$row['architettura'].'",
				"socket":"'.$row['socket'].'",
				"corenum":"'.$row['corenum'].'",
				"threadsnum":"'.$row['threadsnum'].'",
				"l2cache":"'.$row['l2cache'].'",
				"l3cache":"'.$row['l3cache'].'",
				"bench":"'.$row['bench'].'",
				"imgurl":"'.$row['img'].'"
				
				}';}
	else { 
	
	$json .= '{
	"id":"'.$row['ID'].'",
	"value":"'.$row['produttore'].' '.$row['nome'].'"
	}';}
}
$json .= ']';
echo $json;
?>

Infine ho un'ultima funzione Jquery, che gestisce la stampa nel caso in cui qualcosa al momento della validazione andasse storto e viene eseguita solo quando vengono costruiti i campi di input. Ed è questa:
Codice:
<?php function valor() {?>
<script type="text/javascript">
jQuery(document).ready(function($)
{
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"}; 
var selectVal= myobj[$('#catId :selected').val()];

if((selectVal=='cpu_tab')&&(($('input[id="meta_imgurl"]').val())!='')){
$('.meta_list').hide();			
$('.item_dblist').show();
$('li[id="lis_anno"]').html("<b>Anno: </b>" +$('#meta_anno').val());
$('li[id="lis_anno"]').show();
$('li[id="lis_modello"]').html("<b>Modello: </b>" +$('#meta_modello').val());
$('li[id="lis_modello"]').show();
$('li[id="lis_produttore"]').html("<b>Produttore: </b>" +$('#meta_produttore').val());
$('li[id="lis_produttore"]').show();
$('li[id="lis_arch"]').html("<b>Architettura: </b>" +$('#meta_arch').val());
$('li[id="lis_arch"]').show();

console.log($('#meta_anno').val());
 }
 else { $('.item_dblist').hide();}
 
});
</script>
<?php } ?>

Per capire meglio il funzionamento potete recarvi qui: http://tecnomercatino.it/item/new

In categoria selezionate Processori [CPU]
In componente iniziate a scrivere "a", aspettate un po' [E' ancora hostato su un host free quindi è molto lento, soprattutto il database Mysql], si apre " l'autocomplete".
Selezionate AMD FX-6300
E si attiva la prima parte del codice.

Per vedere l'ultima parte dovete compilare anche il resto della pagina, tutto tranne titolo e descrizione, in modo da costringerlo ad un errore di validazione dei form.

Quindi inserite un prezzo, una regione, una provincia e una città, e una mail anche a casaccio ([email protected]), e premete pubblica, si attiva la seconda parte :)

Vi chiedo già scusa per questo pappone di codice che vi lascio, come detto all'inizio mi interesserebbe principalmente ottimizzarlo :)

Grazie in anticipo :D
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, ho dato una letta veloce e non mi pare che ci sia tanto da modificare, tra l'altro funziona quindi puo tranquillamente andare per me
molto lento da caricare il sito
Ti sposto cmq in jquery magari qulcuno si prende la briga di leggerlo meglio
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
P Funzione jQuery Ajax invio file a php jQuery 1
A php metodo post jquery non da mai errore jQuery 4
Tommy03 Variabile PHP dentro a JQuery PHP 3
L Problema jQuery validation AJAX (PHP 7) PHP 6
P Jquery event nel foreach php jQuery 3
A [Javascript] Ajax, Jquery e PHP Javascript 1
trattorino Mentions Auto Suggesting da jquery a php PHP 2
trattorino Estrarre Nome Utente jquery div php PHP 9
B PHP e JQUERY per scrivere codice html dinamicamente PHP 2
G [Javascript] jQuery PHP MySql - inserire variabile nel DataBase Javascript 8
Marcello.Fiore Paginazione jQuery - PHP jQuery 2
filomeni Autocomplete jquery con php/mysql Snippet Javascript 0
filomeni Barra per cookie law (jquery+php) Snippet Javascript 4
L Refresh include php con jquery problemi negli script dopo load jQuery 2
S Jquery load get php Javascript 1
M Codice jQuery in pagina PHP PHP 1
A velocizzare tempi di interrogazioni dati di un database tramite query lanciata da php e jquery jQuery 11
I Datagrid Jquery PHP, mi servirebbero alcune soluzioni... Insrimento immagine e filtro PHP 2
andrea.peo Autocomplete Jquery php mysql su più campi inpunts jQuery 8
A consiglio uso jquery php per mostrare parte di un form PHP 6
P php jquery ajax per modificare valore in un databe Ajax 1
G Come far passare un valore attraverso il metodo POST utiliazzando PHP a jQuery PHP 4
G Passare valore ad una variabile con jQuery e PHP PHP 1
J Paginazione PHP in jQuery UI Tabs jQuery 13
F [Offro collaborazione][Gratuito] Modifica script PHP,jQuery,GD Library Offerte e Richieste di Lavoro e/o Collaborazione 0
F Eseguire PHP in jQuery jQuery 3
L [RISOLTO]Pagina PHP jquery Mobile non funziona scroll nella pagina jQuery 3
I Richiamare funzione jquery all'invio del form php Javascript 6
S php problemi di funzione header usando la fuzione di jquery post PHP 4
G Php-mysql-jquery PHP 7
A Insegnanti di programmazione PHP / JAVASCRIPT / JQUERY Offerte e Richieste di Lavoro e/o Collaborazione 0
M Domande su validare i dati inseriti dagli utenti con jQuery e PHP Javascript 1
S Autocompletamente con jQuery, PHP e MySQL - Problema con le query PHP 7
P controllo dati form con jquery e php PHP 8
P Problema caricamento/sostituzione immagini galleria php-jquery jQuery 2
S jQuery + PHP: non mi funziona..... HELP!!! PHP 14
A Insegnanti di programmazione PHP / JAVASCRIPT / JQUERY Offerte e Richieste di Lavoro e/o Collaborazione 0
F Problema select dinamiche con php e jquery jQuery 1
A jquery calendar e php jQuery 0
A php in jquery PHP 4
S problemi jquery ajax chiamare una pagina php Ajax 5
voldemort jQuery: funzione nl2br come in PHP jQuery 2
M Mappa interattiva con jquery ajax e php. jQuery 0
N Select dinamica con utilizzo di php e JQuery jQuery 5
M Pagina PHP con gallery jQuery PHP 0
M select dinamiche con Jquery e php jQuery 9
M problema con select jquery e php PHP 0
M Come selezionare e deselezionare radiobutton con jquery jQuery 1
M Come validare textarea con jquery jQuery 0

Discussioni simili