[PHP] Eliminare la Barra di caricamento file alla fine dell'esecuzione

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salve

ho trovato questo in rete

PHP:
<script type="text/javascript">
    $(document).ready(function() {
        var p = 10;
        s = setInterval(function() {
            $("#barra").css("width", p + "%");
            $("#percentuale").html(p + "%");
            p++;
            if (p > 100)
                clearInterval(s);
        }, 80);
    });
</script>
<?php
//...bla bla
echo'<div id="dx"><span>In Aggiornamento</span><span id="barra"><span id="percentuale"></span></div>';
?>

forse mi sto perdendo in un bicchier d'acqua perchè los cript funziona ma non riesco a far togliere l barra quando il file ha finito di caricarsi. la batta mi resta sempre lì.

inoltre sarebbe oro se risucissi a far durare la barra proprio il tempo necessario che los cript si carichi.

avevo pensato al refresh ma la barra è molto più veloce dello script quindi quando la barra termina il caricamento in realtà lo script sta ancora caricando.

Suggerimenti?
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
Per togliere la barra quando arriva al 100 basta che aggiungi
Codice:
$("#barra").hide();
nell'if.

Quindi diventa:
Codice:
if (p > 100) {
   clearInterval(s);
   $("#barra").hide();
}

Per farla durare come lo script hai 2 possibilità:
  • calcoli il tempo che impiega lo script e di conseguenza modifichi l'intervallo dell'incremento della barra
  • crei una funzione incrementabarra e la metti in 100 punti dello script
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
los cript potrebbe anche variare, di poco ma potrebbe, per farla durare quanto lo script puoi aiutarmia s crivere il js? perchè di js io mi limito a prendere qualcosa qua e là non ci capisco molto. Prima opoi dovrò mettermici asu a studiarmelo un pò.

grazie
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
Sostituisci tutto il codice js con questo:
Codice:
<script type="text/javascript">
var p = 0;
function incrementaBarra() {
    $("#barra").css("width", p + "%");
    $("#percentuale").html(p + "%");
    p++;
    if (p > 100) {
        $("#barra").hide();
    }
}
</script>

Poi, all'inizio del codice php, metti:
PHP:
ob_implicit_flush(true);
ob_end_flush();

e in 100 punti dello script php metti questo codice (ad intervalli regolari, per esempio se hai 100 righe mettilo ogni riga), che incrementa la barra di 1.
PHP:
echo "<script>incrementaBarra();</script>";

In questo modo la barra dura esattamente come il codice php.
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Per togliere la barra quando arriva al 100 basta che aggiungi
Codice:
$("#barra").hide();
nell'if.

Quindi diventa:
Codice:
if (p > 100) {
   clearInterval(s);
   $("#barra").hide();
}

Per farla durare come lo script hai 2 possibilità:
  • calcoli il tempo che impiega lo script e di conseguenza modifichi l'intervallo dell'incremento della barra
  • crei una funzione incrementabarra e la metti in 100 punti dello script

ciao allora mi fermo un attimo qua, aggiungendo questa stringga non solo mi nasconde la barra ma mi nasconde anche la tabella che visualizzo. ho soloa ggiunto quella riga (mi piace provare le cose una la volta)

per il mi nasc onde intendo che nonve do nemmeno caricarla ma solo erp una frazioen dis econdo
 
Ultima modifica:

Monital

Utente Attivo
15 Apr 2009
778
2
18
niente la barra non si vede

Codice:
<script type="text/javascript">
    $(document).ready(function() {
        var p =10;
        s = setInterval(function() {
            $("#barra").css("width", p + "%");
            $("#percentuale").html(p + "%");
            p++;
            if (p > 100)
                clearInterval(s);
                $("#barra").hide();
        }, 80);
    });
</script>

PHP:
echo'<div id="dx"><span>In Aggiornamento</span><span id="barra"><span id="percentuale"></span></span></div>';
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ah ok perfetto, come in php che se c'è più di un istruzione si deve mettere la graffa, okokok.
funziona però un ultima cortesia. la soluzione da te proposta per la durata della barra non è fattibile eprchè la mia è una ricerca dati su di un file json esterno quindi diventa complicata inserire ogni tot righe ..quindi mi acconterei di qeusto

dove inserisco il tempo di progressione. poniamo che voglio far durare la barra 20 secondi e poi nasconderla?

p.s. ma quell'80 alla fine dellos cript cos rappresenta?
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
L'80 rappresenta l'intervallo di tempo (in millisecondi) dell'incremento della barra.
Quindi se la vuoi fare durare 20 secondi, partendo dal 10% (come indicato da p), devi sostituire 80 con 222
Codice:
20 secondi (durata voluta) * 1000 (trasformi in millisecondi) / 90% (percentuale rimanente) = circa 222
 
  • Like
Reactions: Monital

pippuccio76

Utente Attivo
21 Lug 2013
27
1
3
Ma è possibile collegarla all'upload di un file ?

ho un formdata a cui faccio l'append del file più altri dati il file è :

Codice:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<form enctype="multipart/form-data" name='lavorazione' >
    <input type="file" name="uploadfile" id="uploadfile" /><br>
Nome:   <input type="text" name="nome" id=" nome1"value="" />   <br>
Cognome   <input type="text" name="cognome" id="cognome1" value="" />   <br>
   
     <button id="aggiungi" class='btn btn-info'>Aggiungi Lavorazione</button>
     <button type="button" name="crea" id="upload" class='btn btn-success'>Inserisci Lavorazioni</button>
</form>
<div id="barra"></div>
<div id="dx"><span>In Aggiornamento</span><span id="barra"><span id="percentuale"></span></span></div>

<div id="risultato"></div>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function() {


$("#dialog").hide(); 


$("#upload").click(function() {
         
     
       
       var file1 = lavorazione.uploadfile.value; 
       
       
       if(controlla_e_invia()){
         
           $('#upload').hide();
           $('#aggiungi').hide();
           
           $("#dialog").show(); 
           

          var p =10;
            s = setInterval(function() {
            $("#barra").css("width", p + "%");
            $("#percentuale").html(p + "%");
            p++;
            if (p > 100)
                clearInterval(s);
                $("#barra").hide();
            }, 80);
          //Creazione di un oggetto FormData…
           var datiForm = new FormData();
           
          //####################################
            // FILE 1 #
            //####################################
           
            //… aggiunta del file
            datiForm.append('file',$("#uploadfile")[0].files[0]);


            //… aggiunta del nome
            datiForm.append('nome',$("#nome1").val());


            //aggiunta cognome
            datiForm.append('cognome',$("#sel_scala_colori1").val());
           
             $.ajax({
            url: 'lavorazione_inserita.php',
            type: 'POST', //Le info testuali saranno passate in POST
            data: datiForm, //I dati, forniti sotto forma di oggetto FormData
            cache: false,
            processData: false, //Serve per NON far convertire l’oggetto
                     //FormData in una stringa, preservando il file
            contentType: false, //Serve per NON far inserire automaticamente
                     //un content type errato
               success: function(msg)
               {
                 $("#risultato").html(msg);
                 
               },
               error: function()
               {
                 alert("Chiamata fallita fformdata, si prega di riprovare...");
               }
           });
         
       }
               
       
    });
   
});
   
function controlla_e_invia(){
 
   var file1 = lavorazione.uploadfile.value; 
   var nome1 = lavorazione.nome.value; 
   var cognome = lavorazione.cognome.value; 
   


   
      if(file1==''){
          var message = 'Non hai selezionato il file 1' ;
          alert(message);
         return false;
      }
       if(nome1==''){
          var message = 'Non hai selezionato il nome 1' ;
          alert(message);
         return false;
      }
       if(cognome==''){
          var message = 'Non hai selezionato il cognome 1' ;
          alert(message);
         return false;
      }else{
            return true      
      }
}
</script>
</body>
</html>

il php fa solo echo del file ricevuto
 
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] Eliminare doppioni array e rinumerare le posizioni PHP 2
maxnegri Eliminare url index.php con variabili e reindirizzare alla home del sito PHP 7
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
C [PHP] eliminare elemento da un array multidimensionale PHP 9
trattorino [PHP] Eliminare piu frasi PHP 1
C [PHP] RISOLTO - Eliminare elementi duplicati da array multidimensionale PHP 1
asevenx [PHP] Eliminare record automaticamente dopo una certa data PHP 12
S Eliminare immagine tramite php PHP 14
S non riesco ad eliminare dei caratteri in PHP - Excel PHP 10
F eliminare post php / mysql PHP 5
F eliminare un record grazie a PHP PHP 11
V Eliminare dati da db mysql con php PHP 14
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3

Discussioni simili