progressbar con conteggio record da una chiamata Ajax

ans66

Utente Attivo
27 Ago 2011
158
0
16
Tramite una chiamata Ajax ad una classe php avviene la storicizzazione dei record (al primo gennaio del nuovo anno) come mostro di seguito. Avrei bisogno di creare una progressbar con conteggio dei record storicizzati

Codice:
function Storicizza() {

DatiDB(); // dove ci sono server, password e user

sql="SELECT * FROM (entusc) WHERE EXTRACT(YEAR FROM entusc.Data)= '"+currentYear+"'";

var funzione="NrOfDateReq";
var xURL = "characteristicsInsert.php?funzione="+funzione+"&sql="+sql+"&server="+server+"&user="+user+"&passw="+passw;

GetData("Date", xURL, "");
	
return

} 

function StoricizzaRecord() {
DatiDB();
annoprec=parseInt(currentYear)-1;
annoprecStr=annoprec.toString();
ini_set('max_execution_time', 300); //300 seconds = 5 minutes

sql="SELECT * FROM (entusc) WHERE EXTRACT(YEAR FROM entusc.Data)= '"+annoprecStr+"'";

var funzione="Storicizza";
var xURL = "characteristicsInsert.php?funzione="+funzione+"&sql="+sql+"&server="+server+"&user="+user+"&passw="+passw;

GetData("Stor", xURL, "");
	
return

}

function GetData(form_tag, xURL, mes)
	{
		  mes = mes || "";
      
			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, mes);
				}
			}
			xmlhttp.open("GET", xURL, true);
			xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
			xmlhttp.send(null);
		
		return
	}

di seguito la Select Class con la funzione Storicizza:

PHP:
<?php 

class SelectList
{
public function NrOfDateReq ($sql, $server, $user , $passw) {
  
  $res = $this->connDatabase($sql, $server, $user , $passw);
  
  $numRows=mysql_num_rows ($res);
  
  return $numRows;
  
  }
  
  public function Storicizza ($sql, $server, $user , $passw) {
  
  $array = array();
  $res = $this->connDatabase($sql, $server, $user , $passw, false);
    
     while($row = mysql_fetch_array($res))
        {
         $array[] = $row;
        }
   $risp= $this->DelIns($array, $server, $user , $passw);    // bidimensionale
   return $risp;
  }
  
  function DelIns($array, $server, $user , $passw)
  {
     
   for ($x = 0; $x <count($array); $x++) {
   
   if (strpos ($array[$x][3],"'")==false ) {$cat=$array[$x][3];} else {$cat=str_replace("'","''",$array[$x][3]);}
   if (strpos ($array[$x][4],"'")==false ) {$sog=$array[$x][4];} else {$sog=str_replace("'","''",$array[$x][4]);}
   if (strpos ($array[$x][5],"'")==false ) {$doveAc=$array[$x][5];} 
  else{$doveAc=str_replace("'","''",$array[$x][5]);}
   
   $sql = "DELETE FROM entusc  WHERE IdEntUsc=".$array[$x][0]; 
   $res = $this->connDatabase($sql, $server, $user , $passw); // cancello da entusc
   $sql2="INSERT INTO entusc_stor (Data, Valore, Categoria, Soggetto, DoveAcquistato) ";
   $sql2.="VALUES ('".$array[$x][1]."',".$array[$x][2].",'".$cat."','".$sog."','".$doveAc."')"; 
   $res2 = $this->connDatabase($sql2, $server, $user , $passw); // inserisco in entusc_stor
   
   }
   
   return count($array);
  }
 
  function connDatabase($query,$server, $user , $passw, $opt=true)
  {

    $link = mysql_connect($server, $user, $passw);
    if (!$link)
      die('connessione a Mysql non riuscita!: ' . mysql_error());
    else 
    {
      $db_selected =mysql_select_db("gestentusc",$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);	
        return $result;

      }
    } 
  }

}

Grazie per l'aiuto.
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
Dopo tanto tempo ho trovato ed elaborato una soluzione che mi aggrada (anche se non c'è un vero e proprio conteggio dei record perchè e.lengthComputable=false ma solo un log dei byte caricati e un tag progress che simula avanzamento):


Codice:
jQuery(document).ready(function($){

var valore=10;

$('body').append( '<div id="myDialog"><label for="file">Avanzamento %:&emsp;&emsp;&emsp;&emsp;</label><progress id="barra" value="'+valore+'" max="100"></progress><br><br><textarea id="areatxt" style="overflow:auto;resize:none" draggable="false"  cols="50" readonly class="event-log"></textarea></div>');

myDlg= $("#myDialog").dialog({
        height: 250,
        width:500,
        modal: true,
        closeOnEscape: false,
        draggable: false,
        resizable: false,
        autoOpen:false,
        position: {
                    my: "center",
                    at: "center",
                    of: $("body"),
                    within: $("body")
                        } ,
        open: function(event, ui) {  $(".ui-dialog-titlebar-close").hide(); },
        close: function (event, ui) {
            $(this).dialog('close');
        }
    }).prev(".ui-dialog-titlebar").css("background","#D0D0D0");



loadXMLTesti();

function loadXMLTesti(xURL)
    {
   
    var funzione='entusStor';
    var user=user;
    var passw=pssw;
    var server="localhost";
    // due file php dove sono contenute select
    var xURL = "characteristics.php?funzione="+funzione+"&server="+server+"&user="+user+"&passw="+passw;
    var tagform="selstor";
    GetData2(tagform, xURL);
    return
    }


function GetData2(form_tag, xURL, mes)
{
const xhrButtonSuccess = document.querySelector('.xhr.success');
const xhrButtonError = document.querySelector('.xhr.error');
const xhrButtonAbort = document.querySelector('.xhr.abort');
const log = document.querySelector('.event-log');
const xhr = new XMLHttpRequest();

mes = mes || "";


function handleEvent(e) {
   
    // loop caricamento record - apro dialog solo una volta
    if (valore==10) {$("#myDialog").dialog("open");}
    log.textContent = log.textContent + `${e.type}: ${e.loaded} bytes transferred\n`;
    valore=valore+10;
   
   
    $("#barra").val(valore);
   
    if (xhr.readyState===4 && xhr.status===200)  {
    $("#myDialog").dialog( "option" , "title" ,"Operazione completata!");
    $("#barra").val(100);  
    var text = $("#areatxt").val();  
    var lines = text.split(/\r|\r\n|\n/);
    var count = lines.length;
    $('#areatxt').attr('rows', count-1);
    data = xhr.responseText;
   
    // per popup Soggetti
          if (form_tag=="sog") return data;
    // Lancia SetVaues
          SetValues(form_tag, data, mes);
         
    setTimeout(function(){ $("#myDialog").dialog("close"); }, 5000);  
    return
   
    }
       
}

function addListeners(xhr) {
    xhr.addEventListener('loadstart', handleEvent);
    xhr.addEventListener('load', handleEvent);
    xhr.addEventListener('loadend', handleEvent);
    xhr.addEventListener('progress', handleEvent);
    xhr.addEventListener('error', handleEvent);
    xhr.addEventListener('abort', handleEvent);
   
}



function runXHR(url) {
    log.textContent = '';

    //const xhr = new XMLHttpRequest();
    addListeners(xhr);
    xhr.open("GET", url);
    xhr.send();
    return xhr;
}


runXHR(xURL);

}


           
function SetValues(form_tag, data, mes)
    {
      mes = mes || "";  


}


});
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
E Progressbar estrazione dati da tabella mySQL Ajax 9
ivarello Progressbar e dati background .NET Framework 1
L ProgressBar - problema caricamento Flash 3
A Problema Progressbar-albumfoto Flash 0
G Menù a tendina di ricerca con query PHP 1
T fatture con voci fattura in php PHP 0
A Tabella con bottoni per aggiornamento record PHP 6
M Come selezionare e deselezionare radiobutton con jquery jQuery 1
MarcoGrazia Calcolo fra due date con esclusione delle feste PHP 7
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
M Inviare un file su un server remoto con JavaScript Javascript 0
L problema con query select PHP 2
M Come validare textarea con jquery jQuery 0
M Problemi con la stampa dei valori in php PHP 1
A Regex per isolare link interni con rel noopener PHP 0
L Problemi con il login PHP 2
F Creare elementi html con javascript Javascript 2
R Problema query con ricerca id numerico PHP 2
R [C#] Quali dipendenze occorrono su progetto "Setup" con Access Database? .NET Framework 0
F Problema con risposta PHP 0
A Sottoquery con group by per mese MySQL 0
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A Quale NVR con ingressi bnc ? IP Cam e Videosorveglianza 1
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
T Film interattivo con linguaggi web Programmazione 7
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
Barierta Testo a comparsa con passaggio del mouse Javascript 13
M Estrarre valore con SELECT COUNT PHP 0
G VBA OpenForm con WhereCondition + LIKE su campi differenti MS Access 5
sara3 Offresi articolista con esperienza Offerte e Richieste di Lavoro e/o Collaborazione 2
L Problema RAM con Tomcat 8 Apache 0
S connesso, internet non disponibile ( con extebder tp-link850) Reti LAN e Wireless 0
L Menù con switch case C/C++ 1
Cosina Upload multiplo con invio allegati per email PHP 0
Cosina Upload multiplo con archiviazione in cartella PHP 16
B ciclare file xml con PHP PHP 1
napuleone problema con sort e asort PHP 4
F Group By con Alias condizionale MySQL 1
R [C#] Scrivere un post in grassetto con Selenium su FB Mobile .NET Framework 0
T cms con visualizzazione mind map Content Management System (CMS) 0
D Landing page con Wp Content Management System (CMS) 0
Z problemi con foreach insert into PHP 10
napuleone Con le date il codice da di matto o forse non è così Javascript 6
napuleone Con le date mi da di matto o forse è proprio così jQuery 1
R Aiuto con le query MS Access 2
Z Problema con INT MySQL PHP 1
B javascript per problemi con pdf e Safari Javascript 0

Discussioni simili