• Home
  • Forum
  • Fare Web
  • Javascript
  • Ajax

comportamento anomalo con IE 9 e 10

  • Creatore Discussione Creatore Discussione ans66
  • Data di inizio Data di inizio 14 Ott 2014
Prec.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Succ.
Primo Prec. 2 di 6 Succ. Ultimo
A

ans66

Utente Attivo
27 Ago 2011
158
0
16
  • 21 Ott 2014
  • #21
marino51 ha scritto:
sto inserendo le modifiche Ajax nel codice postato negli scorsi giorni
nel contempo con ie11 ho provato il debug (F12) del codice html, ci sono alcuni tag mal posizionati
dovresti dare uno sguardo anche a loro
ciao
Marino
Clicca per allargare...

Grazie Marino,

Sarò in viaggio per un po' di giorni. Credo che mi porterò un po' di lavoro in viaggio, se posso.
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 22 Ott 2014
  • #22
allora per non farti mancare nulla, ti allego i files modificati e funzionanti,

tabella5.php
è stato ripulito del css e js confluiti in due file separati con lo stesso nome
è stato sistemato dei tag malposti o non chiusi
ho aggiunto il value=0 nelle select option con "cerca..."

tabella5.js
è stato modificato con ajax come post di criric e reso molto più semplice rispetto all'originale
la funzione contarecord lavora sulla tabella delle ruote direttamente SENZA JOIN E SENZA MODIFICARE LA STRUTTURA DEL DATABASE
ho solo sfruttato i value presenti nelle select (vedi aggiunte sopra)
ho mantenuto anche i testi nel caso servissero

select.class.php
lo hai già ridotto tu usando le view, ho modificato poco (solo ripulito)

characteristics.php
fa le veci delle tue "select" è ridotto a pochissime righe eseguito da ajax
viene chiamato passando anche il nome della funzione da eseguire
PHP:
url: "characteristics.php",
data: {
	funzione: 'Diametro',
	id	: applic,

elementscount.php
richiama la funzione che interroga la tabella principale per contare i record, chiamato come sopra

con win7pro e ie11 funziona bene non ho possibilità di fare altri test in questi giorni
se tu lo volessi provare ....
ciao
Marino

ps : BUON VIAGGIO

Vedi l'allegato cercaruota_m51.zip
 
Ultima modifica: 22 Ott 2014
A

ans66

Utente Attivo
27 Ago 2011
158
0
16
  • 22 Ott 2014
  • #23
davvero grazie tante a te e a criric ... siete dei grandi!
 
A

ans66

Utente Attivo
27 Ago 2011
158
0
16
  • 24 Ott 2014
  • #24
Ciao Marino,

Devo ammettere innanzitutto che ancor prima di verificare il funzionamento del codice da te modificato l'ho studiato a fondo e come mi aspettavo è risultato molto interessante dal punto di vista didattico soprattutto per un autodidatta come me che ha approcciato PHP da poco più di sei mesi e Ajax/Jquery da non più di 2/3:

Le righe di codice più illuminanti sono sicuramente:

PHP:
include_once 'select.class.php';
$opt = new SelectList();

if(empty($_POST)) $data = "0";
else
{
  extract($_POST, EXTR_OVERWRITE);

  $funzione = 'Show'.$funzione;

  $data = $opt->{$funzione}($lng);
}
echo $data;

che se ho inteso bene, servono ad estrarre le variabili POST con sovrascrittura ad ogni passaggio e a lanciare funzioni con nomi passati tramite variabili (...esempio che sicuramente non scorderò!)

Ho caricato sul server e ho potuto constatare che il popolamento delle select avveniva, per la prima volta, correttamente anche da IE 10 Windows 8.

Purtroppo le variabili ID passate dalle funzioni (esempio ShowDiametro) non erano utili per la la funzione contatore CalcolaNrRcAp.

Ti devo una spiegazione chiarificatrice relativa alla struttura dei due database a cui si rifanno le funzioni nel file select.class.php:

Database Form
Tabella Applicazione: campi -> idapplicazione
-> applicazione (Industriali o Collettività)
ComeRuota: campi -> idcomeRuota
-> comeRuota (SoloSupporto o SoloRuota o RuotaMontata)

Diametro: campi -> iddiametro
-> diametro
-> applicazioneid
-> comeRuotaid

L'unico scopo di questo database è quello di determinare il corretto popolamento delle select diametro, supporto, ecc. che dipendono dalla scelta di applicazione e comeRuota secondo una logica che io ho imposto nell'inserimento dei record nelle tabelle diametro, supporti, ecc.

Database Cercaruota

Tabelle: Diametro
Supporto
ecc.
e Trovaruota (che tu conosci e sulla quale ho preso spunto per creare la VIEW)

Tabella Diametro:
Campi : -> iddiametro
-> diametro
-> diametroform
(questo campo stringa è uguale a quello contenuto nella tabella Diametro del database Form)

Per questo motivo gli id da te passati (valori select non sono utili per il calcolo dei record e neanche per il risultato finale "listato delle ruote risultanti").

L'elemento da passare deve essere per forza il valore stringa ("64-80mm" - comune a Form.diametro.diametro e a Cercaruota.diametro.diametroform).

Spero davvero di essere stato chiaro. Ti mostro come ho modificato il codice (con il risultato positivo in locale - debug con IE F12 ma non su server- errore nel popolamento select):

passo idapplicazione e comeRuota ma valore text (stringa delle select)
Codice:
function ContaRecords() {
		
    // solo applic ecomeR passo valore
    var applic	= $("select#applicazione option:selected").attr('value');
		var comeR	= $("select#comeRuota option:selected").attr('value');
		
		var t_dmt	= $("select#Diametro option:selected").text();
		var t_suppt	= $("select#TipoSupporto option:selected").text(); 
		var t_lamier	= $("select#TipoLamiera option:selected").text();
		var t_vol	= $("select#volvenza option:selected").text(); 
		var t_Ruot	= $("select#TipoRuota option:selected").text();
		var t_por	= $("select#Portata option:selected").text();
		var t_seriesup	= $("select#SerieSupporti option:selected").text(); 
		var t_pavt	= $("select#TipoPavimenti option:selected").text(); 

		if(applic==0) {applic=1}; if(comeR==0) {comeR=3};

// alert("ContaRecords .. applicazione : "+applic+"  comeruota : "+comeR);

		$.ajax ({   
			type: "POST",
			url: "elementscount.php",
			data: {
				id		:applic,
				id2		:comeR,
				
				dmt		:t_dmt,
				suppt		:t_suppt,
				lamier		:t_lamier,
				vol		:t_vol,
				Ruot		:t_Ruot,
				por		:t_por,
				seriesup	:t_seriesup,
				pavt		:t_pavt
			},
			dataType: "html",
			success: function(data){
				$("#result").html(data);
			},
			error: function(){
				alert("malfunzionamento elementscount");
			}
		});
		return;
	}
});

purtroppo le INNERJOIN sono irrinunciabili (fatto salvo che tu non sia in grado di propormi una View fra campi di tabelle di due diversi database - cosa me non riuscita)
PHP:
public function CalcolaNrRcAp () 
  {
        
    $qry="SELECT count(*) FROM trovaruota Inner Join diametro On trovaruota.diametroid = diametro.iddiametro Inner Join ";
    $qry .="portata On trovaruota.portataid = portata.idportata Inner Join seriesupporti On trovaruota.seriesupportiid = ";
    $qry .="seriesupporti.idseriesupporti Inner Join tipolamiera On trovaruota.tipolamieraid = tipolamiera.idtipolamiera ";
    $qry .="Inner Join tipopavimenti On trovaruota.tipopavimentiid = tipopavimenti.idtipopavimenti Inner Join ";
    $qry .="tiporuota On trovaruota.tiporuotaid = tiporuota.idtiporuota Inner Join tiposupporto On ";
    $qry .="trovaruota.tiposupportoid = tiposupporto.idtiposupporto Inner Join volvenza On trovaruota.volvenzaid = ";
    $qry .="volvenza.idvolvenza WHERE industriale=";

    // 2, nella tabela applicazione del db Form, significa Industria, 1 significa Collettività, 0 che vuol dire non scelto
    // è Collettività per default per cui diverso da 2. 
    if ($_POST['id']<>2) 
    {  
      $qry.="0";
    } 

    if ($_POST['id']==2) 
    {  
      $qry.="1";
    }

    switch ($_POST['id2']) {
      case 0:
      case 3:
        // case 0: nessuna scelta per cui default  ruota montata - $qry non cambia
        // case 3: ruota montata per cui $qry non cambia  
        break;
      case 2: 
        // case 2: solo supporto $qry + tiporuota = 13 che vuol dire nessuna ruota
        $qry.=" AND tiporuotaid=13";
	$_POST['Ruot']=0;
        break;
      case 1:
        // case 1: solo ruota $qry + tiposupportoid = 16 che vuol dire nessun supporto
        $qry.=" AND tiposupportoid=16";
	$_POST['suppt']=0;
      break;
    }
    if ( strtolower($_POST['dmt']) =='attendere...' OR strtolower ($_POST['dmt']) =='scegli...' );
    else $qry.=" AND diametro.diametroform= '". trim($_POST['dmt'])."'";
    if ( strtolower($_POST['por']) =='attendere...' OR strtolower ($_POST['por']) =='scegli...');
    else $qry.=" AND portata.portataform='".trim($_POST['por'])."'";
    if (strtolower($_POST['seriesup']) =='attendere...' OR strtolower ($_POST['seriesup']) =='scegli...');
    else $qry.=" AND seriesupporti.seriesupportiform='".trim($_POST['seriesup'])."'";
    if (strtolower($_POST['lamier']) =='attendere...' OR strtolower ($_POST['lamier'])=='scegli...');
    else $qry.=" AND tipolamiera.lamieraform='".trim($_POST['lamier'])."'";
    // if (!empty($_POST['pavt']))		$qry.=" AND tipopavimentiid=".$_POST['pavt'];  non valuto tipopavimenti
    if (strtolower($_POST['Ruot']) =='attendere...' OR strtolower ($_POST['Ruot'])=='scegli...');
    else $qry.=" AND tiporuota.ruotaform='".trim($_POST['Ruot'])."'";
    if (strtolower($_POST['suppt']) =='attendere...' OR strtolower ($_POST['suppt'])=='scegli...');
    else $qry.=" AND tiposupporto.supportoform='".trim($_POST['suppt'])."'";
    if (strtolower($_POST['vol']) =='attendere...' OR strtolower ($_POST['vol'])=='scegli...');
    else $qry.=" AND volvenza.volvenzaform='".trim($_POST['vol'])."'";
    
    
    $dataset = array();
    $rit= $this->connDatabase($qry,false);
    while($row = mysql_fetch_assoc($rit, MYSQL_NUM))
      $dataset[] = $row;
    return $dataset[0][0]; 
  }

popolamento delle select subordinato a id applicazione e comeRuota dove viene inserita anche nel value il valore text (stringa) unico elemento comune ai due database:

PHP:
public function ShowDiametro($lng)
  {
    $options = $this->OptionZero($lng);

    $sql = "SELECT diametro FROM diametro "; 
    $sql.= "WHERE applicazioneid =".$_POST['id']." AND comeruotaid =".$_POST['id2']; 

    $res = $this->connDatabase($sql); 
    while($row = mysql_fetch_array($res))
      $options .= '<option value="' . $row['diametro'] . '">' . $row['diametro'] . '</option>';
    return $options;
  }

pronto ad inviarti la cartella con le mie modifiche se, ritieni il caso.

Nelle mie modifiche c'è qualche cosa che non va anche se non rilevato dal debugger di IE.
 
A

ans66

Utente Attivo
27 Ago 2011
158
0
16
  • 25 Ott 2014
  • #25
Ciao Marino,

Sto lavorando su questa Query per trovare una soluzione che mi dia gli id corretti:

Codice:
Select distinct cercaruota.diametro.iddiametro, cercaruota.diametro.diametroform
From
  cercaruota.diametro Inner Join
  diametro On cercaruota.diametro.diametroform = form.diametro.diametro

proverò a testarla direttamente sulle funzioni Diametro, supporto, ecc del codice da te corretto
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 25 Ott 2014
  • #26
se puoi mandarmi le tabelle dal db cercaruota, volevo farti una proposta che forse intravedo dalla query che hai postato

posso scriverti più tardi ... ora sono di corsa
ciao
Marino
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 25 Ott 2014
  • #27
mi manca un elemento che non traspare dalle situazioni che conosco,

un diametro qualunque (ma vale per tutte le tabelle), può essere presente nella tabella diametri del database cercaruota
più volte con id diversi ?
la mia aspettativa è che, nella tabella diametri vi siano solo 15 elementi, è corretto ?
ciao
Marino
 
A

ans66

Utente Attivo
27 Ago 2011
158
0
16
  • 25 Ott 2014
  • #28
Ciao Marino,

Nella tabella diametro del database cercaruota ci sono solo 15 elementi.

sia il campo diametro che il campo diametroform sono univoci.
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 26 Ott 2014
  • #29
che se ho inteso bene, servono ad estrarre le variabili POST con sovrascrittura ad ogni passaggio e a lanciare funzioni con nomi passati tramite variabili (...esempio che sicuramente non scorderò!)
Clicca per allargare...

si è corretto (considera anche "call_user_func")

Ho caricato sul server e ho potuto constatare che il popolamento delle select avveniva, per la prima volta, correttamente anche da IE 10 Windows 8.
Clicca per allargare...

probabilmente i tag fuori posto, sia della tabella sia della form

Purtroppo le variabili ID passate dalle funzioni (esempio ShowDiametro) non erano utili per la la funzione contatore CalcolaNrRcAp.
Clicca per allargare...

a questo proposito, vorrei proporti di aggiungere la colonna degli id reali nelle tabelle del database FORM,
lo spazio occupato sul disco si misura con una "manciata" di byres,
le select potrebbero essere popolate con l'id reale (tanto nessuno vede l'id, reale o non)
si ritornerebbe così all'interrogazione diretta della tabella trovaruota

la colonna aggiunta potrebbe essere aggiornata con un piccolo script

questa a mio parere è la strada più semplice e con la performance migliore (keep it simple !)
fammi sapere
ciao
Marino
 
Ultima modifica: 26 Ott 2014
A

ans66

Utente Attivo
27 Ago 2011
158
0
16
  • 26 Ott 2014
  • #30
assolutamente d'accordo ci stavo lavorando sopra...eravamo entrambi arrivati ad un conclusione analoga. Ti vorrei far vedere con un'immagine la soluzione a cui stavo pensando

Credo non sia necessario nessuno script in questo modo. Diametrocercaid: campo con indice
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 26 Ott 2014
  • #31
si, proprio così
se hai altro, posta
ciao
Marino
 
A

ans66

Utente Attivo
27 Ago 2011
158
0
16
  • 26 Ott 2014
  • #32
Ciao Marino,

Ho inserito in rete il risultato: http://www.cebora.it/ruote/pp1/database3mar/tabella5.php

Finalmente tutto funziona bene.

Un grazie davvero grande a te e criric!
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 26 Ott 2014
  • #33
controlla bene, la scelta delle caratteristiche non mi sembra funzioni. restituisce n.record 0
ciao
Marino
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 26 Ott 2014
  • #34
scusa rettifico, forse non conosco le ruote e le scelte che avevo fatto mi davano zero
con altre scelte funziona
ok ... bene
ciao
Marino
 
A

ans66

Utente Attivo
27 Ago 2011
158
0
16
  • 26 Ott 2014
  • #35
Ciao Marino,

Ho controllato tutto più volte prima di inserire nel server. Ho anche controllato tutti gli errori con IE (F12) e Firefox (Firebug).

Grazie di tutto. Ho imparato davvero molte cose nuove!
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 27 Ott 2014
  • #36
DocumentazioneCataloghi -> CercaRuota -> Impossibile trovare la pagina Web
qualche problema ?
ciao
Marino
 
A

ans66

Utente Attivo
27 Ago 2011
158
0
16
  • 27 Ott 2014
  • #37
marino51 ha scritto:
DocumentazioneCataloghi -> CercaRuota -> Impossibile trovare la pagina Web
qualche problema ?
ciao
Marino
Clicca per allargare...

Ciao Marino,

Sono di nuovo in viaggio per tutta la settimana. Il link che ti avevo mandato era temporaneo. Il link del sito dove si trova cercaruota è http://www.cebora.it/ruote/pp1/cercaruota.php.

Ciao Antonio
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 30 Ott 2014
  • #38
Vedi l'allegato tabella5_js.zip
ho impiegato un po' di tempo ma se ho capito bene, dovrebbe funzionare da IE5 in su e con gli altri browsers
purtroppo non riesco a fare prove in questo periodo, si tratta di sostituire il solo js
l'ho "asciugato" un poco per poter gestire meglio la funzione di passaggio dei dati
non è cambiato nulla, vedi solo la parte conta.... perché non so se l'hai modificata rispetto alla versione che ho io
fammi sapere come va, ciao
Marino
 
A

ans66

Utente Attivo
27 Ago 2011
158
0
16
  • 1 Nov 2014
  • #39
marino51 ha scritto:
ho impiegato un po' di tempo ma se ho capito bene, dovrebbe funzionare da IE5 in su e con gli altri browsers
purtroppo non riesco a fare prove in questo periodo, si tratta di sostituire il solo js
l'ho "asciugato" un poco
Clicca per allargare...

Ciao Marino,

Sto provando il nuovo file tabella5.js e ho notato alcuni problemi sul contatore (solo su IE 11 windows 8).

Per poterti meglio illustrare meglio il problema ho fatto in modo che su http://www.cebora.it/ruote/pp1/cercaruota.php potessi vedere la Query e non il risultato. Infatti qualche volta la Query non viene modificata al cambiamento di taluno Select soprattutto le ultime finali.

TABELLA5.JS (leggermente modificata togliendo alcuni valori che credo inutili per il contatore
Codice:
$(document).ready(function(){
	var scegli = '<option value="0">Scegli...</option>';
	var attendere = '<option value="0">Attendere...</option>';

	$("select#Diametro").html(scegli);
	$("select#Diametro").attr("disabled", "disabled");

	$("select#TipoSupporto").html(scegli);
	$("select#TipoSupporto").attr("disabled", "disabled");

	$("select#TipoLamiera").html(scegli);
	$("select#TipoLamiera").attr("disabled", "disabled");

	$("select#TipoPavimenti").html(scegli);
	$("select#TipoPavimenti").attr("disabled", "disabled");

	$("select#volvenza").html(scegli);
	$("select#volvenza").attr("disabled", "disabled");

	$("select#TipoRuota").html(scegli);
	$("select#TipoRuota").attr("disabled", "disabled");
	  
	$("select#Portata").html(scegli);
	$("select#Portata").attr("disabled", "disabled");

	$("select#SerieSupporti").html(scegli);
	$("select#SerieSupporti").attr("disabled", "disabled");


	$("select#applicazione").change(function(){ SelezionaTabelle(); });

	$("select#comeRuota").change(function(){ SelezionaTabelle(); });


	$("select#Diametro").change(function(){ ContaRecords() });

	$("select#TipoSupporto").change(function(){ ContaRecords() });

	$("select#TipoLamiera").change(function(){ ContaRecords() });

	$("select#volvenza").change(function(){ ContaRecords() });

	$("select#TipoRuota").change(function(){ ContaRecords() });

	$("select#Portata").change(function(){ ContaRecords() });

	$("select#SerieSupporti").change(function(){ ContaRecords() });


	function SelezionaTabelle() 
  {
    var applic = $("select#applicazione option:selected").attr('value');
		var comeR  = $("select#comeRuota option:selected").attr('value');
    

		// applicazione non scelto è di default Collettività
		// comeruota non scelta è di default Ruota montata
		if(applic==0) {applic=1}; if(comeR==0) {comeR=3};
    
    var lang = 'it';

		loadXMLDoc('select#Diametro', 'Diametro', applic, comeR, lang);
		loadXMLDoc('select#TipoSupporto', 'Supporto', applic, comeR, lang);
		loadXMLDoc('select#TipoLamiera', 'Lamiera', applic, comeR, lang);
		loadXMLDoc('select#TipoPavimenti', 'Pavimenti', applic, comeR, lang);
		loadXMLDoc('select#volvenza', 'Volvenza', applic, comeR, lang);
		loadXMLDoc('select#TipoRuota', 'Ruota', applic, comeR, lang);
		loadXMLDoc('select#Portata', 'Portata', applic, comeR, lang);
		loadXMLDoc('select#SerieSupporti', 'SerieSup', applic, comeR, lang);

		
		ContaRecords();

		return;
	}
  
 
  function loadXMLDoc(form_tag, funzione, applic, comeR, lang)
	{
		var xmlhttp;
    

		$(form_tag).html(attendere);
		$(form_tag).attr("disabled", "disabled");

		if (window.XMLHttpRequest)	{ xmlhttp=new XMLHttpRequest(); }
		else				{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }

		xmlhttp.onreadystatechange=function()
		{
			if (xmlhttp.readyState==4 && xmlhttp.status==200)
			{
				$(form_tag).removeAttr("disabled"); 
				$(form_tag).html(xmlhttp.responseText);
			}
		}
		xmlhttp.open("POST","characteristics.php",true);
		xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		xmlhttp.send
		(
			"funzione="	+ funzione
		+	"&id="		+ applic
		+	"&id2="		+ comeR
		+	"&lng="		+ lang
		);
	}

	function ContaRecords() {
		var applic	= $("select#applicazione option:selected").attr('value');
		var comeR	= $("select#comeRuota option:selected").attr('value');
		var v_dmt	= $("select#Diametro option:selected").attr('value');
		var v_suppt	= $("select#TipoSupporto option:selected").attr('value'); 
		var v_lamier	= $("select#TipoLamiera option:selected").attr('value');
		var v_vol	= $("select#volvenza option:selected").attr('value'); 
		var v_Ruot	= $("select#TipoRuota option:selected").attr('value');
		var v_por	= $("select#Portata option:selected").attr('value');
		var v_seriesup	= $("select#SerieSupporti option:selected").attr('value'); 
		var v_pavt	= $("select#TipoPavimenti option:selected").attr('value'); 

		//var t_applic	= $("select#applicazione option:selected").text();
		//var t_comeR 	= $("select#comeRuota option:selected").text();
		//var t_dmt	= $("select#Diametro option:selected").text();
		//var t_suppt	= $("select#TipoSupporto option:selected").text(); 
		//var t_lamier	= $("select#TipoLamiera option:selected").text();
		//var t_vol	= $("select#volvenza option:selected").text(); 
		//var t_Ruot	= $("select#TipoRuota option:selected").text();
		//var t_por	= $("select#Portata option:selected").text();
		//var t_seriesup	= $("select#SerieSupporti option:selected").text(); 
		//var t_pavt	= $("select#TipoPavimenti option:selected").text(); 

		if(applic==0) {applic=1}; if(comeR==0) {comeR=3};
    
    var xmlhttp;

		if (window.XMLHttpRequest)	{ xmlhttp=new XMLHttpRequest(); }
		else				{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }

		xmlhttp.onreadystatechange=function()
		{
			if (xmlhttp.readyState==4 && xmlhttp.status==200)
			{
				$("#result").html(xmlhttp.responseText);
			}
		}
		xmlhttp.open("POST","elementscount.php",true);
		xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		xmlhttp.send
		(
			"id="		+ applic
		+	"&id2="		+ comeR
		+	"&dmt="		+ v_dmt
		+	"&suppt="	+ v_suppt
		+	"&lamier="	+ v_lamier
		+	"&vol="		+ v_vol
		+	"&Ruot="	+ v_Ruot
		+	"&por="		+ v_por
		+	"&seriesup="	+ v_seriesup
		+	"&pavt="	+ v_pavt

		//+	"&tid="		+ t_applic
		//+	"&tid2="	+ t_comeR
		//+	"&tdmt="	+ t_dmt
		//+	"&tsuppt="	+ t_suppt
		//+	"&tlamier="	+ t_lamier
		//+	"&tvol="	+ t_vol
		//+	"&tRuot="	+ t_Ruot
		//+	"&tpor="	+ t_por
		//+	"&tseriesup="	+ t_seriesup
		//+	"&tpavt="	+ t_pavt
		);
  }
});

Select.class.php
PHP:
<?php
class SelectList
{
  public function CalcolaNrRcAp ()
  {
    $qry="SELECT count(*) FROM trovaruota WHERE industriale=";

    // 2, nella tabela applicazione del db Form, significa Industria, 1 significa Collettività, 0 che vuol dire non scelto
    // è Collettività per default per cui diverso da 2. 
    if ($_POST['id']<>2) 
    {  
      $qry.="0";
    } 

    if ($_POST['id']==2) 
    {  
      $qry.="1";
    }

    switch ($_POST['id2']) {
      case 0:
      case 3:
        // case 0: nessuna scelta per cui default  ruota montata - $qry non cambia
        // case 3: ruota montata per cui $qry non cambia  
        break;
      case 2: 
        // case 2: solo supporto $qry + tiporuota = 13 che vuol dire nessuna ruota
        $qry.=" AND tiporuotaid=13";
	$_POST['Ruot']=0;
        break;
      case 1:
        // case 1: solo ruota $qry + tiposupportoid = 16 che vuol dire nessun supporto
        $qry.=" AND tiposupportoid=16";
	$_POST['suppt']=0;
      break;
    }
    
    if (!empty($_POST['dmt']))		$qry.=" AND diametroid=".$_POST['dmt'];
    if (!empty($_POST['por']))		$qry.=" AND portataid=".$_POST['por'];
    if (!empty($_POST['seriesup']))	$qry.=" AND seriesupportiid=".$_POST['seriesup'];
    if (!empty($_POST['lamier']))	$qry.=" AND tipolamieraid=".$_POST['lamier'];
    if (!empty($_POST['pavt']))		$qry.=" AND tipopavimentiid=".$_POST['pavt'];
    if (!empty($_POST['Ruot']))		$qry.=" AND tiporuotaid=".$_POST['Ruot'];
    if (!empty($_POST['suppt']))	$qry.=" AND tiposupportoid=".$_POST['suppt'];
    if (!empty($_POST['vol']))		$qry.=" AND volvenzaid=".$_POST['vol'];

    $dataset = array();
    $rit= $this->connDatabase($qry,false);
    while($row = mysql_fetch_assoc($rit, MYSQL_NUM))
      $dataset[] = $row;
    return $dataset[0][0]; 
  }


  function connDatabase($query, $opt=true)
  {
    if($opt) { include "db_config.php"; }
    if(!$opt) { include "dbcerca_config.php"; }

    $link = mysql_connect($host, $user, $password);
    if (!$link)
      die('connessione a Mysql non riuscita!: ' . mysql_error());
    else 
    {
      $db_selected =mysql_select_db($db,$link);	//connessione a database
      if (!$db_selected)
        die('connessione al database non riuscita!: ' . mysql_error());
      else
      { 
        $result = mysql_query($query,$link) or die(mysql_error()." ".$query);	// passa query
        
        return $result;

      }
    } 
  }


  public function OptionZero($lng)
  {
    if ($lng=='it')	return '<option value="0">scegli...</option>';
    else		return '<option value="0">choose...</option>';
  }


  public function ShowApplicazioni($lng)
  {
    $options = $this->OptionZero($lng);

    $sql = "SELECT * FROM applicazione";

    $res = $this->connDatabase($sql);
    while($row = mysql_fetch_array($res))
      $options.= '<option value="' . $row['idapplicazione'] . '">' . $row['applicazione'] . '</option>';
    return $options;      			
  }
  
      
    
  public function ShowComeRuota($lng)
  {
    $options = $this->OptionZero($lng);

    $sql = "SELECT * FROM comeruota";

    $res = $this->connDatabase($sql);
    while($row = mysql_fetch_array($res))
      $options.= '<option value="' . $row['idcomeruota'] . '">' . $row['comeruota'] . '</option>';
    return $options;
  }
  
 

		
  public function ShowDiametro($lng)
  {
    $options = $this->OptionZero($lng);

    $sql = "SELECT diametrocercaid, diametro FROM diametro "; 
    $sql.= "WHERE applicazioneid =".$_POST['id']." AND comeruotaid =".$_POST['id2']; 

    $res = $this->connDatabase($sql); 
    while($row = mysql_fetch_array($res))
      $options .= '<option value="' . $row['diametrocercaid'] . '">' . $row['diametro'] . '</option>';
    return $options;
  }
  
  


  public function ShowSupporto($lng)
  {
    $options = $this->OptionZero($lng);

    $sql = "SELECT supportocercaid, supporto FROM supporto "; 
    $sql.= "WHERE applicazioneid =".$_POST['id']." AND comeruotaid =".$_POST['id2']; 

    $res = $this->connDatabase($sql); 
    while($row = mysql_fetch_array($res))
      $options .= '<option value="' . $row['supportocercaid'] . '">' . $row['supporto'] . '</option>';
    return $options;
  }
  
  

  public function ShowLamiera($lng)
  {
    $options = $this->OptionZero($lng);

    $sql = "SELECT lamieracercaid, lamiera FROM lamiera "; 
    $sql.= "WHERE applicazioneid =".$_POST['id']." AND comeruotaid =".$_POST['id2']; 

    $res = $this->connDatabase($sql); 
    while($row = mysql_fetch_array($res))
      $options .= '<option value="' . $row['lamieracercaid'] . '"> ' . $row['lamiera'] . ' </option>';
    return $options;
  }

  

  public function ShowPavimenti($lng)
  {
    $options = $this->OptionZero($lng);

    $sql = "SELECT pavimenticercaid, tipipavimenti FROM tipipavimenti "; 
    $sql.= "WHERE applicazioneid =".$_POST['id']." AND comeruotaid =".$_POST['id2'];
    $sql.= " order by pavimenticercaid"; 

    $res = $this->connDatabase($sql); 
    while($row = mysql_fetch_array($res))
      $options .= '<option value="' . $row['pavimenticercaid'] . '">' . $row['tipipavimenti'] . '</option>';
    return $options;
  }
  
  


  public function ShowVolvenza($lng)
  {
    $options = $this->OptionZero($lng);

    $sql = "SELECT volvenzacercaid, volvenza FROM volvenza ";
    $sql.= "WHERE applicazioneid =".$_POST['id']." AND comeruotaid =".$_POST['id2']; 

    $res = $this->connDatabase($sql); 
    while($row = mysql_fetch_array($res))
      $options .= '<option value="' . $row['volvenzacercaid'] . '">' . $row['volvenza'] . '</option>';
    return $options;
  }
  
  


  public function ShowRuota($lng)
  {
    $options = $this->OptionZero($lng);

    $sql = "SELECT ruotacercaid, tiporuota FROM tiporuota ";  
    $sql.= "WHERE applicazioneid =".$_POST['id']." AND comeruotaid =".$_POST['id2'];
    $sql.= " order by ruotacercaid"; 

    $res = $this->connDatabase($sql); 
    while($row = mysql_fetch_array($res))
      $options .= '<option value="' . $row['ruotacercaid'] . '">' . $row['tiporuota'] . '</option>';
    return $options;
  }
  
  


  public function ShowPortata($lng)
  {
    $options = $this->OptionZero($lng);

    $sql = "SELECT portacercaid, portata FROM portata "; 
    $sql.= "WHERE applicazioneid =".$_POST['id']." AND comeruotaid =".$_POST['id2']; 

    $res = $this->connDatabase($sql); 
    while($row = mysql_fetch_array($res))
      $options .= '<option value="' . $row['portacercaid'] . '">' . $row['portata'] . '</option>';
    return $options;
  }
  
  


  public function ShowSerieSup($lng)
  {
    $options = $this->OptionZero($lng);

    $sql = "SELECT seriesupporticercaid, seriesupporti FROM seriesupporti "; 
    $sql.= "WHERE applicazioneid =".$_POST['id']." AND comeruotaid =".$_POST['id2']; 

    $res = $this->connDatabase($sql); 
    while($row = mysql_fetch_array($res))
      $options .= '<option value="' . $row['seriesupporticercaid'] . '">' . $row['seriesupporti'] . '</option>';
    return $options;
  }
  
  
}
?>

elementscount.php
PHP:
<?php
include_once 'select.class.php';
$opt = new SelectList();

if(empty($_POST)) $data = "0";
else
{
  extract($_POST, EXTR_OVERWRITE);

  $data = $opt->CalcolaNrRcAp();
}
echo $data;
?>

Ho provato a capire il motivo del malfunzionamento del contatore sul solito IE ma buio completo! Tieni presente che alcune volte peraltro funziona bene...??
 
Ultima modifica: 1 Nov 2014

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 1 Nov 2014
  • #40
la scelta di usare Ajax, comporta che, le varie chiamate sono eseguite in modo asincrono rispetto alla sequenza del codice
ovvero il browser (credo tutti) lavora in multitasking e man mano che riceve le risposte (in ordine casuale) completa le parti, nel nostro caso, popola le select
se noti, nel log sotto riportato, la sequenza del codice non è rispettata
il conteggio è nel bel mezzo della lettura delle tabelle

il log lo registro dai due script chiamati da Ajax
ovvio che questo comportamento genera incongruenze nella risposta del contatore
bisogna trovare il modo di far eseguire il conteggio solo alla fine della lettura delle tabelle


il secondo problema è dovuto alla cache, ovvero non modificando l'oggetto chiamato,
il server risponde di usare le informazioni già in possesso del client da cui ... un poco si e un poco no

questo problema lo "risolvono" mettendo il time come parametro $_GET
ovvero, facendo capire al server che la richiesta è cambiata da cui,
prova a sostituire le due righe di codice (in js) con le seguenti
PHP:
xmlhttp.open("POST","characteristics.php?timestamp=" + new Date().getTime(),true);
xmlhttp.open("POST","elementscount.php?timestamp=" + new Date().getTime(),true);

per favore fammi sapere se almeno questo secondo problema risolve il conteggio scegliendo i singoli elementi
ciao
Marino
[01-Nov-2014 22:00:54 Europe/Rome]
[01-Nov-2014 22:00:54 Europe/Rome] ***** tabella5.php
---------------------------------> qui ho scelto Colletività -----
[01-Nov-2014 22:04:20 Europe/Rome]
[01-Nov-2014 22:04:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:04:20 Europe/Rome] ShowSupporto : 1 : 3 : it
[01-Nov-2014 22:04:20 Europe/Rome]
[01-Nov-2014 22:04:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:04:20 Europe/Rome] ShowDiametro : 1 : 3 : it
[01-Nov-2014 22:04:20 Europe/Rome]
[01-Nov-2014 22:04:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:04:20 Europe/Rome] ShowLamiera : 1 : 3 : it
[01-Nov-2014 22:04:20 Europe/Rome]
[01-Nov-2014 22:04:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:04:20 Europe/Rome] ShowPavimenti : 1 : 3 : it
[01-Nov-2014 22:04:20 Europe/Rome]
[01-Nov-2014 22:04:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:04:20 Europe/Rome] ShowVolvenza : 1 : 3 : it
[01-Nov-2014 22:04:20 Europe/Rome]
[01-Nov-2014 22:04:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:04:20 Europe/Rome] ShowRuota : 1 : 3 : it
[01-Nov-2014 22:04:20 Europe/Rome]
[01-Nov-2014 22:04:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:04:20 Europe/Rome] ShowPortata : 1 : 3 : it
[01-Nov-2014 22:04:20 Europe/Rome]
[01-Nov-2014 22:04:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:04:20 Europe/Rome] ShowSerieSup : 1 : 3 : it
[01-Nov-2014 22:04:20 Europe/Rome]
[01-Nov-2014 22:04:20 Europe/Rome] ***** elementscount.php
[01-Nov-2014 22:04:20 Europe/Rome] record found : 0
---------------------------------> qui ho scelto Ruota Montata -----
[01-Nov-2014 22:05:20 Europe/Rome]
[01-Nov-2014 22:05:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:05:20 Europe/Rome] ShowDiametro : 1 : 3 : it
[01-Nov-2014 22:05:20 Europe/Rome]
[01-Nov-2014 22:05:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:05:20 Europe/Rome] ShowSerieSup : 1 : 3 : it
[01-Nov-2014 22:05:20 Europe/Rome]
[01-Nov-2014 22:05:20 Europe/Rome] ***** elementscount.php
[01-Nov-2014 22:05:20 Europe/Rome] record found : 0
[01-Nov-2014 22:05:20 Europe/Rome]
[01-Nov-2014 22:05:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:05:20 Europe/Rome] ShowSupporto : 1 : 3 : it
[01-Nov-2014 22:05:20 Europe/Rome]
[01-Nov-2014 22:05:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:05:20 Europe/Rome] ShowLamiera : 1 : 3 : it
[01-Nov-2014 22:05:20 Europe/Rome]
[01-Nov-2014 22:05:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:05:20 Europe/Rome] ShowPortata : 1 : 3 : it
[01-Nov-2014 22:05:20 Europe/Rome]
[01-Nov-2014 22:05:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:05:20 Europe/Rome] ShowPavimenti : 1 : 3 : it
[01-Nov-2014 22:05:20 Europe/Rome]
[01-Nov-2014 22:05:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:05:20 Europe/Rome] ShowRuota : 1 : 3 : it
[01-Nov-2014 22:05:20 Europe/Rome]
[01-Nov-2014 22:05:20 Europe/Rome] ***** characteristics.php
[01-Nov-2014 22:05:20 Europe/Rome] ShowVolvenza : 1 : 3 : it
Clicca per allargare...
 
Prec.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Succ.
Primo Prec. 2 di 6 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

Comportamento Anomalo PHP
  • max1974
  • 14 Mar 2020
  • PHP
Risposte
3
Visite
1K
PHP 17 Mar 2020
mr.x
M
C
[PHP] Controllo <select> comportamento anomalo
  • curzio.maria
  • 27 Mag 2019
  • PHP
Risposte
2
Visite
1K
PHP 28 Mag 2019
curzio.maria
C
L
Comportamento anomalo dei button type submit
  • Luca Compagnoni
  • 30 Set 2014
  • PHP
Risposte
1
Visite
1K
PHP 3 Ott 2014
filomeni
comportamento anomalo winxp sp3 risorse del computer
  • carla146
  • 8 Dic 2011
  • Windows e Software
Risposte
0
Visite
2K
Windows e Software 8 Dic 2011
carla146
E
Strano comportamento di 'use' in php
  • Eggolot
  • 6 Set 2019
  • PHP
Risposte
2
Visite
1K
PHP 9 Set 2019
Eggolot
E
S
[HTML] Comportamento di due elementi block level flottanti
  • sass
  • 3 Ago 2017
  • HTML e CSS
Risposte
2
Visite
1K
HTML e CSS 10 Ago 2017
sass
S
strano comportamento del posizionamento su google
  • jonnino2004
  • 23 Giu 2017
  • SEO e Posizionamento
Risposte
5
Visite
2K
SEO e Posizionamento 16 Lug 2017
seosmart
A
[PHP] Strano comportamento Form
  • Alex@1983
  • 28 Mag 2017
  • PHP
Risposte
1
Visite
1K
PHP 29 Mag 2017
mr.x
M
S
Comportamento strano php/html...
  • stefanoxjx
  • 7 Mar 2017
  • PHP
Risposte
10
Visite
2K
PHP 7 Mar 2017
stefanoxjx
S
A
Strano comportamento dello slash / al fondo dell'URL
  • andreto
  • 14 Apr 2016
  • HTML e CSS
Risposte
1
Visite
1K
HTML e CSS 14 Apr 2016
andreto
A
B
gestione eventi con addEventListener,comportamento strano dell'handle
  • blows83
  • 15 Gen 2016
  • Javascript
Risposte
2
Visite
2K
Javascript 16 Gen 2016
blows83
B
Funzione di controllo su un form, comportamento inaspettato
  • gandalf1959
  • 23 Nov 2015
  • Javascript
Risposte
6
Visite
2K
Javascript 24 Nov 2015
gandalf1959
M
Comportamento strano di questo script per caricamento file sql in database
  • migo80
  • 30 Ott 2015
  • PHP
Risposte
7
Visite
1K
PHP 31 Ott 2015
The-Night
T
C
strano comportamento file css
  • carlob
  • 11 Feb 2015
  • HTML e CSS
Risposte
2
Visite
1K
HTML e CSS 18 Feb 2015
coguaro
C
M
Strano comportamento pagina
  • Maxtaf
  • 2 Feb 2015
  • HTML e CSS
Risposte
4
Visite
1K
HTML e CSS 4 Feb 2015
Maxtaf
M
A
modificare comportamento 'position' in stile CSS
  • Andrea Bondi
  • 2 Dic 2013
  • Javascript
Risposte
0
Visite
2K
Javascript 2 Dic 2013
Andrea Bondi
A
A
strano comportamento di $_FILES nel controllo
  • aganju
  • 12 Feb 2013
  • PHP
Risposte
11
Visite
2K
PHP 12 Feb 2013
aganju
A
S
strano comportamento a:hover su immagine
  • silvia.c
  • 15 Nov 2012
  • HTML e CSS
Risposte
7
Visite
3K
HTML e CSS 21 Nov 2012
Vale2
Esistenza di file e cartella comportamento script
  • IImanuII
  • 17 Set 2012
  • PHP
Risposte
2
Visite
1K
PHP 17 Set 2012
IImanuII
V
Strano comportamento sessioni
  • Vicar
  • 15 Ott 2011
  • PHP
Risposte
6
Visite
1K
PHP 17 Ott 2011
Vicar
V
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • Javascript
  • Ajax
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?