passaggio dei singoli elementi elementi da json object a array

  • Creatore Discussione Creatore Discussione ans66
  • Data di inizio Data di inizio

ans66

Utente Attivo
27 Ago 2011
158
0
16
Ciao a tutti,

Ho tentato in tutte le maniere possibili di passare i singoli elementi di un oggetto json a un array senza riuscirvi:

Codice:
function Avanti() 
	{
  var dt=[];
  var ultrec=$( ".resizedTextbox2" ).val();
  var nr=parseInt($( ".resizedTextbox" ).val());
    
  var parag=nr;
  parag+=1;
    
  if (parag<=ultrec) {
  nr+=1;
  
  if (IsCerca===false) { 
  dt=CaricaDB(ut, psw);
  InTextbox(dt, nr-1); }
  else { InTextbox(dt, nr-1); }
  
                     }
  
  
  
  $( ".resizedTextbox" ).val(nr.toString());
  }


function CaricaDB(ut, psw ) 
	{
  
  var dt = [];
      
  $.ajax({
        type: 'POST',
        url: "conn.php",
        data: {
            ut: ut,
            psw: psw,
            nrR: '0'
        },
        dataType: "json",
        success: function (data) {
       
       for (i = 0; i < data.length; i += 1) 
       {
          
          dt[i] = [];
                             
         for (j = 0; j < data[i].length; j += 1) 
              {
                dt[i][j]=[];
                dt[i][j].push(data[i][j]);
              }
       }     
                                 },
        error: function() { alert("Record non trovato.php"); }
    });
    
    
    return dt;
  }


function InTextbox(dt, nrDt) 
	{

if(isNaN(nrDt)) nrDt=0;
$( ".resizedTextbox2" ).val(dt.length);

var app; 
var ComeR;

// Serie Supporti vuota e TipoRuota non vuota = Solo Ruota
if (dt[nrDt][5]=='' && dt[nrDt][18]!='') ComeR=1; // qui errore!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Serie Supporti non vuota e TipoRuota vuota = Solo Supporto
else if (dt[nrDt][5]!='' && dt[nrDt][18]=='') ComeR=2;
// Serie Supporti non vuota e TipoRuota non vuota = Ruota Montata
else if (dt[nrDt][5]!='' && dt[nrDt][18]!='') ComeR=3; 

if (dt[nrDt][2]==1) { app=2; } else { app=1; }

$("#codice").val(dt[nrDt][0]);
$("#descrizione").val(dt[nrDt][1]);
$("select#applicazione").val(app);
loadXMLDoc("Diametro","Diametro",app,ComeR,dt[nrDt][3]);
loadXMLDoc("Portata","Portata",app,ComeR,dt[nrDt][4]);
loadXMLDoc("SerieSupporti","SerieSup",app,ComeR,dt[nrDt][5]);
loadXMLDoc("TipoLamiera","Lamiera",app,ComeR,dt[nrDt][6]);
loadXMLDoc("TipoSupporto","Supporto",app,ComeR,dt[nrDt][7]);
$("#altezza").val(dt[nrDt][8]);
$("#disassamento").val(dt[nrDt][9]);
$("#dimpiastra").val(dt[nrDt][10]);
$("#intforo").val(dt[nrDt][11]);
$("#spespiastra").val(dt[nrDt][12]);
$("#largforca").val(dt[nrDt][13]);
$("#spesforca").val(dt[nrDt][14]);
$("#forocen").val(dt[nrDt][15]);
$("#foroasse").val(dt[nrDt][16]);
$("#freno").prop("checked", dt[nrDt][17]);
loadXMLDoc("TipoRuota","Ruota",app,ComeR,dt[nrDt][18]);
loadXMLDoc("volvenza","volvenza",app,ComeR,dt[nrDt][19]);
// converto TipoPavimenti per Verfica con Form
if (dt[nrDt][20]=='PavimentoPiastrelle') dt[nrDt][20]='Piastrelle/Tile';
else dt[nrDt][20]='Tutti i Pavimenti/All Floors'; 
loadXMLDoc("TipoPavimenti","Pavimenti",app,ComeR,dt[nrDt][20]);
$("#linkfoto").val(dt[nrDt][21]);
$("#linknote").val(dt[nrDt][22]);
$("#linkpdf").val(dt[nrDt][23]);
$("#linkdwg").val(dt[nrDt][24]);
$("#linkdis3").val(dt[nrDt][25]);
$("#linkdis4").val(dt[nrDt][26]);
$("#linkweb").val(dt[nrDt][27]);
 
return dt;  
  }

cosa sto sbagliando? L'array dt risulta nullo anche se con il correttore IE (F12) vedo l'oggetto array dt che include i dati.
 
purtroppo però non riesco a superare l'errato funzionamento quando voglio tornare al record selezionato (per codice) nel DataSet completo (query select from senza Where) e non DataSet ( query select from Where like %..%):

funzione errata Torna nel file tabellamod.js

Codice:
$(document).ready(function(){
var ut = $("#ut").val();
var psw = $("#ps").val();
var IsCerca=false;
var nrDt=0;
var Dataset=[]; 

$("#primo").click(function(){ Primo() });
$("#ultimo").click(function(){ Ultimo() });
$("#avanti").click(function(){ Avanti() });
$("#indietro").click(function(){ Indietro() });
$("#cerca").click(function(){ Cerca() });
$("#torna").click(function(){ Torna() });

$( "#myForm" ).submit(function( event ) {
  
  event.preventDefault();
})

function RitNr(cod) 
	{
    
    
    for (i = 0; i < Dataset.length; i++) {
    if(cod==Dataset[i][0]) { return i;}
                                         }
  }

function Torna() 
	{
    
    var cd = $('#codice').val();
            
    $('#torna').hide();
    $('#cerca').show();
    IsCerca=false;
    
    CaricaDB(ut, psw, '0' );   
    var nr;
    nrDt=RitNr(cd);
        
    InTextbox(Dataset);      
  }
  
function Cerca() 
	{
   
   IsCerca=true;
   $('#cerca').hide();
   $('#torna').show();
      
   var risp=prompt("Parola da cercare?","scegli:"); 
     
  if (risp==null || risp=="") alert("non hai digitato nulla!"); 
  else
  DatasetdaCerca=Dataset;
  $( ".resizedTextbox" ).val('1');
  
  nrDt="risp:"+risp;
  CaricaDB(ut, psw, "risp:"+risp);
   
  }

function Indietro() 
	{
  
  var nr=parseInt($( ".resizedTextbox" ).val());
  var parag=nr;
  parag-=1;
    
  if (parag>=1) {
  nr-=1;
   nrDt=nr-1;
   
  if (IsCerca===false) {
  CaricaDB(ut, psw, '0');
                       }
  else {
  InTextbox(Dataset);  
       }
   
                }
  
  $( ".resizedTextbox" ).val(nr.toString());
  }

function Avanti() 
	{
  
  var ultrec=$( ".resizedTextbox2" ).val();
  var nr=parseInt($( ".resizedTextbox" ).val());
    
  var parag=nr;
  parag+=1;
    
  if (parag<=ultrec) {
  nr+=1;
  nrDt=nr-1;
  
  if (IsCerca===false) { 
  CaricaDB(ut, psw, '0');
   
                       }
  else { InTextbox(Dataset); }
  
                     }
  
  
  
  $( ".resizedTextbox" ).val(nr.toString());
  }

function Primo() 
	{
  nrDt='0';
  if (IsCerca===false) {
  CaricaDB(ut, psw,'0');
                       }
  else {
  InTextbox(Dataset);
       }
  
  $( ".resizedTextbox" ).val('1');
  }

function Ultimo() 
	{
   var ultrec=parseInt($( ".resizedTextbox2" ).val());
   nrDt=ultrec-1;
   
   if (IsCerca===false) {
   CaricaDB(ut, psw,'0');
                        }
   else {
   InTextbox(Dataset);
         }
         
   $( ".resizedTextbox" ).val(ultrec); 
  }
  

function CaricaDB(ut, psw, nr ) 
	{
  
        
  $.ajax({
        type: 'POST',
        url: "conn.php",
        data: {
            ut: ut,
            psw: psw,
            nrR: nr
        },
        dataType: "json",
        success: function (data) {
       
       Dataset=[];
       Dataset=data;
       
       InTextbox(data) 
       //for (i = 0; i < data.length; i += 1) 
       //{
          
       //   dt[i] = [];
                             
       //  for (j = 0; j < data[i].length; j += 1) 
       //       {
       //         dt[i][j]=[];
       //         dt[i][j].push(data[i][j]);
       //       }
       
       
       //                         }     
                                 },
        error: function() { alert("Record non trovato.php"); }
    });
    
  }



function InTextbox(dt) 
	{

if(isNaN(nrDt)) nrDt=0;
$( ".resizedTextbox2" ).val(dt.length);

var app; 
var ComeR;

// Serie Supporti vuota e TipoRuota non vuota = Solo Ruota
if (dt[nrDt][5]=='' && dt[nrDt][18]!='') ComeR=1;
// Serie Supporti non vuota e TipoRuota vuota = Solo Supporto
else if (dt[nrDt][5]!='' && dt[nrDt][18]=='') ComeR=2;
// Serie Supporti non vuota e TipoRuota non vuota = Ruota Montata
else if (dt[nrDt][5]!='' && dt[nrDt][18]!='') ComeR=3; 

if (dt[nrDt][2]==1) { app=2; } else { app=1; }

$("#codice").val(dt[nrDt][0]);
$("#descrizione").val(dt[nrDt][1]);
$("select#applicazione").val(app);
loadXMLDoc("Diametro","Diametro",app,ComeR,dt[nrDt][3]);
loadXMLDoc("Portata","Portata",app,ComeR,dt[nrDt][4]);
loadXMLDoc("SerieSupporti","SerieSup",app,ComeR,dt[nrDt][5]);
loadXMLDoc("TipoLamiera","Lamiera",app,ComeR,dt[nrDt][6]);
loadXMLDoc("TipoSupporto","Supporto",app,ComeR,dt[nrDt][7]);
$("#altezza").val(dt[nrDt][8]);
$("#disassamento").val(dt[nrDt][9]);
$("#dimpiastra").val(dt[nrDt][10]);
$("#intforo").val(dt[nrDt][11]);
$("#spespiastra").val(dt[nrDt][12]);
$("#largforca").val(dt[nrDt][13]);
$("#spesforca").val(dt[nrDt][14]);
$("#forocen").val(dt[nrDt][15]);
$("#foroasse").val(dt[nrDt][16]);
$("#freno").prop("checked", dt[nrDt][17]);
loadXMLDoc("TipoRuota","Ruota",app,ComeR,dt[nrDt][18]);
loadXMLDoc("volvenza","volvenza",app,ComeR,dt[nrDt][19]);
// converto TipoPavimenti per Verfica con Form
if (dt[nrDt][20]=='PavimentoPiastrelle') dt[nrDt][20]='Piastrelle/Tile';
else dt[nrDt][20]='Tutti i Pavimenti/All Floors'; 
loadXMLDoc("TipoPavimenti","Pavimenti",app,ComeR,dt[nrDt][20]);
$("#linkfoto").val(dt[nrDt][21]);
$("#linknote").val(dt[nrDt][22]);
$("#linkpdf").val(dt[nrDt][23]);
$("#linkdwg").val(dt[nrDt][24]);
$("#linkdis3").val(dt[nrDt][25]);
$("#linkdis4").val(dt[nrDt][26]);
$("#linkweb").val(dt[nrDt][27]);
 
return dt;  
  }


  
                                      
function loadXMLDoc(form_tag, funzione, applic, comeR,inText)
	{
    
    
		var xURL = "characteristics.php?funzione="+funzione+"&id="+applic+"&id2="+comeR+"&inText="+inText;
    

		var attendere	= '<option value="-1">Attendere...</option>';

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

		GetData("select#"+form_tag, xURL);
		return;
	}

function GetData(form_tag, xURL)
	{
	
   var xmlhttp=false;

			if (!xmlhttp && typeof XMLHttpRequest!='undefined')
			{
				try { xmlhttp = new XMLHttpRequest(); }
				catch (e) { xmlhttp = false; }
			}
			if (!xmlhttp && window.createRequest)
			{
				try { xmlhttp = window.createRequest(); }
				catch (e) { xmlhttp = false; }
			}

			xmlhttp.onreadystatechange=function()
			{
				if (xmlhttp.readyState===4 && xmlhttp.status===200)
				{
					data = xmlhttp.responseText;
          SetValues(form_tag, data);
				}
			}
			xmlhttp.open("GET", xURL, true);
			xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
			xmlhttp.send(null);
      
      return	
    
	}
    
function SetValues(form_tag, data)
	{
      
      $(form_tag).removeAttr("disabled");

			var n1 = data.indexOf("<option");
      var n2 = data.indexOf("</select>");
      data = data.substring(n1, n2);
    
    $(form_tag).html(data);
    return
	}  
  
});

PHP:
  public function connDatabase($ut,$psw, $qualeR)
  { 

$db = "cercaruota";
$query='';
$darit='';
$NrR=0;

// ho aggiunto nello script "risp:" nella risposta Cerca perchè sia sempre non numeric
if (!is_numeric($qualeR)) { $qualeR=substr($qualeR,5);   $query = $this->MieQuery(3,$qualeR);  }  
else {

if ($qualeR > 0) { $query = $this->MieQuery(1); $NrR=$qualeR; }
else if ($qualeR == 0) { $query = $this->MieQuery(1); }
else if ($qualeR == -1) { $query = $this->MieQuery(-1); }


    }

$link = mysql_connect("localhost", $ut, $psw);    

    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
      { 
        $res = mysql_query($query,$link) or die(mysql_error()." ".$query);	
        
        while($row = mysql_fetch_assoc($res, MYSQL_NUM))
        $dataset[] = $row;
        return json_encode($dataset);
        
        //$i = 0;
        //while ($i <= 27) {
        
        //if (!empty($dataset[$NrR][$i])) $darit.= trim($dataset[$NrR][$i]).'***';
        //else $darit.=' ***';
        
        //$i++;
                
        //$nrR=mysql_num_rows ( $res ); 
        //$darit.=$nrR;
          
        //return $darit; 
        
        
               

      }
    }
    
     

  }


function MieQuery($qualiQuery, $risp='')
  {

$SelTrova="SELECT codice, descrizione, industriale, diametro, portata, seriesupporti, ";
$SelTrova.="tipolamiera, tiposupporto, altezza, disassamento, dimensionipiastra, interassiforo, ";
$SelTrova.="spessorepiastra,larghezzaforca,spessoreforca,forocentrale, foroasse, freno, tiporuota, ";
$SelTrova.="volvenza, tipopavimenti, linkfoto, linknote, linkpdf, linkdwg, linkdisegno3, linkdisegno4, ";
$SelTrova.="LinkWeb FROM tabellamod";  
//$SelTrova="Select trovaruota.codice, trovaruota.descrizione, trovaruota.industriale, ";
//$SelTrova=$SelTrova."diametro.diametroform, portata.portataform, seriesupporti.seriesupportiform, ";
//$SelTrova=$SelTrova."tipolamiera.lamieraform, tiposupporto.supportoform, dimensionesupporto.altezza, ";
//$SelTrova=$SelTrova."dimensionesupporto.disassamento, dimensionesupporto.dimensionipiastra, ";
//$SelTrova=$SelTrova."dimensionesupporto.interassiforo, dimensionesupporto.spessorepiastra, ";
//$SelTrova=$SelTrova."dimensionesupporto.larghezzaforca, dimensionesupporto.spessoreforca, ";
//$SelTrova=$SelTrova."dimensionesupporto.forocentrale, dimensionesupporto.foroasse, ";
//$SelTrova=$SelTrova."dimensionesupporto.freno, tiporuota.ruotaform, volvenza.volvenzaform, ";
//$SelTrova=$SelTrova."tipopavimenti.tipopavimenti, trovaruota.linkfoto, trovaruota.linknote, ";
//$SelTrova=$SelTrova."trovaruota.linkpdf, trovaruota.linkdwg, trovaruota.linkdisegno3, trovaruota.linkdisegno4,trovaruota.LinkWeb ";
//$SelTrova=$SelTrova."From trovaruota Inner Join diametro On trovaruota.diametroid = diametro.iddiametro Inner Join ";
//$SelTrova=$SelTrova."portata On trovaruota.portataid = portata.idportata Inner Join seriesupporti On ";
//$SelTrova=$SelTrova."trovaruota.seriesupportiid = seriesupporti.idseriesupporti Inner Join ";
//$SelTrova=$SelTrova."tipolamiera On trovaruota.tipolamieraid = tipolamiera.idtipolamiera Inner Join tipopavimenti ";
//$SelTrova=$SelTrova."On trovaruota.tipopavimentiid = tipopavimenti.idtipopavimenti Inner Join tiporuota On ";
//$SelTrova=$SelTrova."trovaruota.tiporuotaid = tiporuota.idtiporuota Inner Join tiposupporto On trovaruota.tiposupportoid ";
//$SelTrova=$SelTrova."= tiposupporto.idtiposupporto Inner Join volvenza On trovaruota.volvenzaid = volvenza.idvolvenza ";
//$SelTrova=$SelTrova."Inner Join dimensionesupporto On trovaruota.dimensionesupportoid = ";
//$SelTrova=$SelTrova."dimensionesupporto.iddimensionesupporto"; 



$SelCerca=$SelTrova;

//$SelTrova2=" Order By trovaruota.codice";
$SelTrova2=" Order By codice";

$SelTrova=$SelTrova.$SelTrova2;
$selLastRec= $SelTrova." Desc Limit 1";


$SelCount="SELECT count(*) FROM trovaruota";


$SelCerca.=" Where (codice Like '%".$risp."%') Or ";
$SelCerca.="(descrizione Like '%".$risp."%') Or (diametro Like '%".$risp."%') Or ";
$SelCerca.="(portata Like '%".$risp."%') Or (seriesupporti Like '%".$risp."%') Or ";
$SelCerca.="(tipolamiera Like '%".$risp."%') Or (tiposupporto Like '%".$risp."%') Or ";
$SelCerca.="(dimensionipiastra Like '%".$risp."%') Or (interassiforo Like '%".$risp."%') Or ";
$SelCerca.="(tiporuota Like '%".$risp."%') Or (volvenza Like '%".$risp."%') Or ";
$SelCerca.="(tipopavimenti Like '%".$risp."%')";
$SelCerca.=$SelTrova2;
  
  switch ($qualiQuery) {
    case 1:
        return $SelTrova;
        break;
    case 2:
        return $SelCount;
        break;
    case 3:
        return $SelCerca;
        break;
    case -1:
        return $selLastRec;
    default:
        return $SelTrova;
} 
  
  }

Dopo molti tentativi e dopo aver tentato differenti approcci sono ancora bloccato a questo punto.

Quello che vorrei ottenere:

a) Trovo più Record con ricerca Where like %..%
b) Mi fermo sul Record scelto
c) clicco torna
d)dovrei ritornare sullo stesso record nel DataSet Completo ( senza Where)

Grazie per l'aiuto
 
usando le tabelle di form sono qui, ci vorrebbe qualche elemento in più di cercaruota
ciao
Marino
ruote1.PNG
ruote2.PNG
 
Ciao Marino,

Grazie per la risposta. Di seguito puoi vedere la struttura della VIEW tabellamod:

struttura vista tabella mod.jpgstruttura vista tabella mod2.jpg

Ti ho inviato anche nella tua email tutta la cartella con script e php.

Fammi sapere se manca qualche cosa.

Ciao e Grazie
Antonio
 

Discussioni simili