comportamento anomalo con IE 9 e 10

ans66

Utente Attivo
27 Ago 2011
158
0
16
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

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.204
207
63
Lombardia
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:

ans66

Utente Attivo
27 Ago 2011
158
0
16
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.
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
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.204
207
63
Lombardia
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.204
207
63
Lombardia
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
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
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.204
207
63
Lombardia
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ò!)

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.

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.

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:

ans66

Utente Attivo
27 Ago 2011
158
0
16
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 modifica su form.jpgtabella diametro cercaruota.jpg

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

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
controlla bene, la scelta delle caratteristiche non mi sembra funzioni. restituisce n.record 0
ciao
Marino
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
scusa rettifico, forse non conosco le ruote e le scelte che avevo fatto mi davano zero
con altre scelte funziona
ok ... bene
ciao
Marino
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
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.204
207
63
Lombardia
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
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
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

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:

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
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
 
Discussioni simili
Autore Titolo Forum Risposte Data
max1974 Comportamento Anomalo PHP PHP 3
C [PHP] Controllo <select> comportamento anomalo PHP 2
L Comportamento anomalo dei button type submit PHP 1
carla146 comportamento anomalo winxp sp3 risorse del computer Windows e Software 0
E Strano comportamento di 'use' in php PHP 2
S [HTML] Comportamento di due elementi block level flottanti HTML e CSS 2
jonnino2004 strano comportamento del posizionamento su google SEO e Posizionamento 5
A [PHP] Strano comportamento Form PHP 1
S Comportamento strano php/html... PHP 10
A Strano comportamento dello slash / al fondo dell'URL HTML e CSS 1
B gestione eventi con addEventListener,comportamento strano dell'handle Javascript 2
gandalf1959 Funzione di controllo su un form, comportamento inaspettato Javascript 6
M Comportamento strano di questo script per caricamento file sql in database PHP 7
C strano comportamento file css HTML e CSS 2
M Strano comportamento pagina HTML e CSS 4
A modificare comportamento 'position' in stile CSS Javascript 0
A strano comportamento di $_FILES nel controllo PHP 11
S strano comportamento a:hover su immagine HTML e CSS 7
IImanuII Esistenza di file e cartella comportamento script PHP 2
V Strano comportamento sessioni PHP 6
M mappa google e comportamento variabili... Javascript 0
J strano comportamento di due codici apparentemente identici..... PHP 1
SolidSnake4 strano comportamento script Ajax 6
A Differenza comportamento tra click mouse e pressione tasto invio Visual Basic 0
L comportamento con Actionscript Flash 0
T comportamento per collaborazione Discussioni Varie 0
S comportamento strano delle sessioni PHP 0
A diverso comportamento fra server locahost ed in rete Apache 1
PoLe Strano comportamento del PC Sicurezza e Virus 4
S Strano comportamento di 'Subscribed Threads' Supporto Mr.Webmaster 2
R Problemi anomalo insermento in db PHP 9
otto9due Error anomalo durante invio dati $.ajax Ajax 20
MrClog comortamento anomalo dei DIV HTML e CSS 19
Y problema anomalo con window.location.href Javascript 2
A incremento anomalo di una variabile in un file .txt PHP 12
N un "if" anomalo... PHP 11
P Anomalo: non mi carica il player Flash 8
F access ricerca record con apostrofo. MS Access 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
C Come ricreare questo calcolatore di prezzi a step con woocommerce? WordPress 0
C Segnalo barra laterale di navigazione ASSENTE con Chrome Comunicazioni dallo Staff 5
G Guadagna dalla Vendita di Articoli Sponsorizzati con GuestPostMax.com! Guadagnare col Sito 0
P Hosting multidominio con Plesk Hosting 0
L Soluzione con INNER JOIN Database 0
S passare un valore da un form a un file .php con metodo post PHP 4
A Redirect 301 genera url statico con variabili Web Server 0
T problemi con dati menu a tendina HTML e CSS 2
T Query con date MS Access 1
F Url dinamiche da cambiare con categoria, subcategoria e title PHP 2
L Aiuto con DataGridView Visual Basic 1

Discussioni simili