Barre de progression pendant l'opload d'un fichier
ach32
Messages postés
47
Date d'inscription
Statut
Membre
Dernière intervention
-
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
En faisant des recherches sur internet pour avoir un tutoriel qui me permettrait de faire une barre de progression pendant l'opload d'un fichier en php,
je suis tombé sur un qui donne un cercle en rotation. Mais malheuresement je n'arrive pas à l'adapter à mon code.
Ma requète ($insertion) consiste à charger les informations d'un fichier txt dans ma base de données mysql, et celà peut prendre plusieurs minutes en fonction du nombre de ligne de mon fichier txt.
Comment faire pour la barre de chargement tourne pendant que ma requète est en cours d'exécution ?
Voici le code HTML qui contient le cercle en rotation:
Voici le code css qui permet de faire tourner le cercle:
Voici le code qui contient la requète $insertion:
Je voudrais que le cercle tourne pendant que la requete $insertion charge les informations dans la base de données.
A l'aide s'il vous plait
En faisant des recherches sur internet pour avoir un tutoriel qui me permettrait de faire une barre de progression pendant l'opload d'un fichier en php,
je suis tombé sur un qui donne un cercle en rotation. Mais malheuresement je n'arrive pas à l'adapter à mon code.
Ma requète ($insertion) consiste à charger les informations d'un fichier txt dans ma base de données mysql, et celà peut prendre plusieurs minutes en fonction du nombre de ligne de mon fichier txt.
Comment faire pour la barre de chargement tourne pendant que ma requète est en cours d'exécution ?
Voici le code HTML qui contient le cercle en rotation:
<section class="section section-2"> <span class="loader loader-double"></span> Chargement du DIPE... </section>
Voici le code css qui permet de faire tourner le cercle:
body{ margin: 0; padding: 0; font-family: sans-serif;; font-size: 40px; color: #FFF; text-align: center; } .section{ background-color: #16a085; height: 500px; line-height: 500px; } .loader{ width: 50px; height: 50px; display: inline-block; vertical-align: middle; position: relative; } .loader-quart{ border-radius: 50px; border: 6px solid rgba(255,255,255, 0.4); } .loader-quart:after{ content: ''; position: absolute; top: -6px; left: -6px; bottom: -6px; right: -6px; border-radius: 50px; border: 6px solid transparent; border-top-color: #FFF; -webkit-animation: spin 1s linear infinite; animation:spin 1s linear 0s infinite; } @-webkit-keyframes spin{ 0%{ -webkit-transform: rotate(0deg); transform: rotate(0deg); }100%{ -webkit-transform: rotate(360deg); transform: rotate(360deg);} } @keyframes spin{ 0%{transform: rotate(0deg); } 100%{transform: rotate(360deg);} } .section-2{ background-color: #2980b9; } .loader-double{ border-radius: 50px; border: 6px solid transparent; border-top-color: #FFF; border-bottom-color:#FFF; -webkit-animation: spin 1s linear infinite; animation: spin 1s linear infinite; } .loader-double:after{ content: ''; position: absolute; top: 5px; left: 5px; bottom: 5px; right: 5px; border-radius: 50px; border: 6px solid transparent; border-top-color: #FFF; border-bottom-color: #FFF; opacity: 0.6; -webkit-animation: spin 1s linear infinite; animation:spin 1s linear infinite; }
Voici le code qui contient la requète $insertion:
$recup_id = mysql_query(" SELECT id_employeur FROM employeur WHERE login_empl = '$login' "); $data_id = mysql_fetch_assoc($recup_id); $id_employeur = $data_id['id_employeur']; $id_employeur = intval($id_employeur); if (isset($_POST['submit'])) { $fichier=$_FILES['fichier']['name']; move_uploaded_file($_FILES['fichier']['tmp_name'],"dipes/".$fichier); $fp = fopen('dipes/'.$fichier,'r'); //lecture du fichier if ($fp) { while (!feof($fp)){ //on parcourt toutes les lignes $ligne=fgets($fp); // lecture du contenu de la ligne $code=substr($ligne,0,3); $code = str_pad($code, 3, " ", STR_PAD_LEFT); $num_dipe = substr($ligne,3,6); $num_dipe = str_pad($num_dipe, 5, " ", STR_PAD_LEFT); $cle = substr($ligne,8,1); $cle = str_pad($cle, 1, " ", STR_PAD_LEFT); $contrib = substr($ligne,9,14); $contrib = str_pad($contrib, 14, " ", STR_PAD_LEFT); $mois = substr($ligne,23,2); $mois = str_pad($mois, 2, " ", STR_PAD_LEFT); $matri_empl = substr($ligne,25,11); $matri_empl = str_pad($matri_empl, 11, " ", STR_PAD_LEFT); $regime = substr($ligne,36,1); $regime = str_pad($regime, 1, " ", STR_PAD_LEFT); $annee = substr($ligne,37,4); $annee = str_pad($annee, 4, " ", STR_PAD_LEFT); $matri_ass = substr($ligne,41,11); $matri_ass = str_pad($matri_ass, 11, " ", STR_PAD_LEFT); $nbr_jr = substr($ligne,52,2); $nbr_jr = str_pad($nbr_jr, 2, " ", STR_PAD_LEFT); $sal_brut = substr($ligne,54,10); $sal_brut = str_pad($sal_brut, 10, " ", STR_PAD_LEFT); $sal_exep = substr($ligne,64,10); $sal_exep = str_pad($sal_exep, 10, " ", STR_PAD_LEFT); $sal_tax = substr($ligne,74,10); $sal_tax = str_pad($sal_tax, 10, " ", STR_PAD_LEFT); $sal_cot = substr($ligne,84,10); $sal_cot = str_pad($sal_cot, 10, " ", STR_PAD_LEFT); $sal_plaf = substr($ligne,94,10); $sal_plaf = str_pad($sal_plaf, 10, " ", STR_PAD_LEFT); $irpp = substr($ligne,104,8); $irpp = str_pad($irpp, 8, " ", STR_PAD_LEFT); $taxe_com = substr($ligne,112,6); $taxe_com = str_pad($taxe_com, 6, " ", STR_PAD_LEFT); $num_ligne = substr($ligne,118,2); $num_ligne = str_pad($num_ligne, 2, " ", STR_PAD_LEFT); $matri_int = substr($ligne,120,14); $matri_int = str_pad($matri_int, 14, " ", STR_PAD_LEFT); $noms = substr($ligne,134,60); $noms = str_pad($noms, 60, " ", STR_PAD_LEFT); $date = date('d/m/Y'); echo " <section class="section section-2"> <span class="loader loader-double"></span> Chargement du DIPE... </section> "; $insertion = mysql_query(" INSERT INTO tcompte_assure (id_employeur, codeenreg, noms,numdipe,clenumdipe,numero_contrib,moisdipe,anneedipe,matricule_empl,regime,numassure,nombrejour,salairebrut,salaireexeptionel,salairetaxable,salairecotcnps,salairecotplafonne,irpp,retenutaxecom,numligne,matriculeinterne,date_enreg) VALUES ($id_employeur, '$code', '$noms', '$num_dipe', '$cle', '$contrib', '$mois', '$annee', '$matri_empl', '$regime', '$matri_ass', '$nbr_jr', '$sal_brut', '$sal_exep', '$sal_tax', '$sal_cot', '$sal_plaf', '$irpp', '$taxe_com', '$num_ligne', '$matri_int', '$date') ") or die(mysql_error()) ; if ($insertion) { $nettoyage = mysql_query("DELETE FROM tcompte_assure WHERE moisdipe = '' AND anneedipe = '' "); ?> <script type="text/javascript"> window.location.href = "initialiser_dipe.php" ; </script> <?php }else{ ?> <script type="text/javascript"> window.location.href = "initialiser_dipe.php" ; </script> <?php } } } } ?>
Je voudrais que le cercle tourne pendant que la requete $insertion charge les informations dans la base de données.
A l'aide s'il vous plait
A voir également:
- Barre de progression pendant l'opload d'un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
1 réponse
Salut,
Le problème vient du fait qu'à la validation du formulaire, le navigateur va envoyer la requête POST avec les informations du formulaire et va attendre la fin du traitement PHP (donc attendre la fin de l'upload du fichier) pour afficher le résultat de cette page (en l’occurrence le loader et la redirection en js).
Une solution possible pour résoudre ce problème serait envoyer le formulaire en utilisant ajax, ceci permet de ne pas recharger la page envoyant le formulaire et on pourrait alors en javascript afficher loader en attendant que le traitement php du formulaire soit fini (il faudrait voir ton formulaire pour un exemple plus concret).
Bonne journée,
Le problème vient du fait qu'à la validation du formulaire, le navigateur va envoyer la requête POST avec les informations du formulaire et va attendre la fin du traitement PHP (donc attendre la fin de l'upload du fichier) pour afficher le résultat de cette page (en l’occurrence le loader et la redirection en js).
Une solution possible pour résoudre ce problème serait envoyer le formulaire en utilisant ajax, ceci permet de ne pas recharger la page envoyant le formulaire et on pourrait alors en javascript afficher loader en attendant que le traitement php du formulaire soit fini (il faudrait voir ton formulaire pour un exemple plus concret).
Bonne journée,