PROGRESSBAR (BARRE DE PROGRESSION AVEC AFFICHAGE DU POURCENTAGE EN COURS)

NeoZer0 Messages postés 9 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 20 juin 2006 - 9 juil. 2005 à 16:03
fcarpon Messages postés 1 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 4 juillet 2011 - 4 juil. 2011 à 17:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/32601-progressbar-barre-de-progression-avec-affichage-du-pourcentage-en-cours

fcarpon Messages postés 1 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 4 juillet 2011
4 juil. 2011 à 17:58
Oui c'est vrai je confirme on voit seulement le 100 %. Pour y remédier il faut transformer flush(); en flush(); ob_flush();flush(); ob_flush();. Oui plusieurs fois comme le site ce-dessous le mentionne :
http://forum.alsacreations.com/topic-23-49725-1-Une-barre-de-progression-en-PHP-et-CSS-sans-utiliser-JS.html
galoisette33 Messages postés 1 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 8 octobre 2010
8 oct. 2010 à 15:56
Slt tout le monde. J'ai le meme probleme que toi ORAISER. La barre s'affiche qu'a la fin et n'affiche donc que les 100%. Ce qui met en cause toute l'utilite de ce code.
A mon avis, ca doit venir de la version de php (Code fait en 2005 !!!).
cs_demenvil Messages postés 38 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 mai 2009
19 mai 2010 à 01:26
Salut est-ce que cette source peut être utilisée pour un formulaire d'upload de gros fichier? COmme des film ou autres?
Merci.
Oraiser Messages postés 1 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 27 avril 2010
27 avril 2010 à 10:30
J'ai un peti soucis avec ce code le problème est que la barre ne s'affiche qu'à la fin et donc n'affiche que les 100% cela vient il de moi où il y a des cas similaire
ishsarfat Messages postés 1 Date d'inscription lundi 17 octobre 2005 Statut Membre Dernière intervention 24 mars 2009
24 mars 2009 à 00:13
Bonjour,

Ce code m'a l'air de très bonne facture, cependant j'obtiens une erreur:

Warning: fopen(c:/writeFR.swf) [function.fopen]: failed to open stream: No such file or directory in test.php on line 15

La commande du script est celle-ci:

$fichier_local = 'c:/'.basename($fichier_distant);

La barre de progression fonctionne bien, mais elle se bloque à 94%.

Quelqu'un aurait il une solution ? Merci d'avance
Ultimata Messages postés 1 Date d'inscription jeudi 31 août 2006 Statut Membre Dernière intervention 6 février 2009
6 févr. 2009 à 01:33
Merci pour ce script très simple et plutot... Génial :D

J'ai une question, je souhaite ajouté une ptite fonction permetant de décrire l'action en cours (par exemple, 1) Injection SQL, 2) Création des config, 3) ..., et que sa affiche cette tache en cours (ce qui donnerais encore plus de dynamisme :D)
Sinik2008 Messages postés 1 Date d'inscription vendredi 7 novembre 2008 Statut Membre Dernière intervention 7 novembre 2008
7 nov. 2008 à 19:03
Salut frop01, juste pour te féliciter et t'encourager. c'est tout benef ce script. a chacun de l'adapter à son contexte. encore merci
jeepibmx Messages postés 1 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 4 juillet 2008
4 juil. 2008 à 20:29
Bonjour, je vous écris à propos de la barre de progression que vous avez développez. J'aurais une ou deux petites questions. J'essaie d'envoyer un très petit fichier (2899bytes) et la barre stop à 63%. Si j'augmente la taille du fichier, tout fonctionne #1. Avez-vous une solution à me proposer? Merci beaucoup !
mathemitec Messages postés 2 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 20 juin 2008
7 juin 2008 à 00:04
Merci, voila !
snk007 Messages postés 2 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 3 avril 2008
18 nov. 2007 à 22:27
slt je voudrai intégré la progressbar a mon site d'upload de fichier (pc->serveur(free.fr)).
alors voici mon code php : http://up4turkiller3.free.fr/site.txt
sur ce fichier texte se trouve le code exacte que j'utilise actuellement,
Il y a 2 fichier : index.php, upload.php3
ce code ne viens pas de moi j'ai juste fait en sorte que l'utilisateur choisise le dossier d'upload.
merci de m'aider a bientot
_toutfou Messages postés 5 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 8 mars 2008
2 nov. 2007 à 12:27
Salut l'amis,

un grand merci pour ce petit bout de code, qui me sert grandement dans mon aplication.

En plus ca marche du premier coup !!

Merci encore.

Seb
vincseize Messages postés 113 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 28 mars 2010
17 juil. 2007 à 01:48
Et moi qui me bat avec des tableau multidimensionnel ....

enfin un script, copier coller, et cela marche ds la seconde ....

Merci Merci , Merci
furthsnake Messages postés 1 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 26 juin 2007
26 juin 2007 à 12:16
Une des meilleurs sources que j'ai trouvé sur le net... Chapeau

Par contre, comment l'adapter à un formulaire d'upload (move_uploaded_file) ???
alakhnor Messages postés 2 Date d'inscription dimanche 4 mars 2007 Statut Membre Dernière intervention 5 mai 2007
5 mai 2007 à 20:43
Ce serait parfait si cela faisait un reset du timeout. Rien de prévu ? ^^
zamooo Messages postés 1 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 18 avril 2007
18 avril 2007 à 13:17
vraiment bien ton code; simple et efficace.
Je l'utilise pour faire un retour utilisateur sur des insertions postgres énormes!!
10/10
stef1589 Messages postés 44 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 27 mars 2008
2 sept. 2006 à 15:06
est ce qu il serait possible de l inclure dans un upload ?
je suis tres debutant. Pouvez vous me donner un exemple
badconker2 Messages postés 3 Date d'inscription jeudi 4 août 2005 Statut Membre Dernière intervention 12 juin 2006
12 juin 2006 à 13:06
bon bah en faite ma solution marche très bien en local avec easy-php mais pas du tout sur un serveur distant qui n'arrive pas à ouvrir le fichier. Ce doit être un problème de droit. Je n'ai pas de solution pour le moment. :(
adrientaieb Messages postés 4 Date d'inscription dimanche 4 avril 2004 Statut Membre Dernière intervention 1 mars 2006
8 juin 2006 à 18:33
Merci d'avoir pris le temps de lire mon code et de m'avoir répondu.
Je vais tester ça sur mon site et je te tien au courant. j'espère que ça va marcher.
Bye.
badconker2 Messages postés 3 Date d'inscription jeudi 4 août 2005 Statut Membre Dernière intervention 12 juin 2006
7 juin 2006 à 14:58
arf, j'ai oublié de dire que j'avais un autre soucis : impossible d'arreter manuellement l'upload, même en appuyant sur le bouton arrêter du navigateur, l'upload continue.

Quelqu'un aurait une solution ?
badconker2 Messages postés 3 Date d'inscription jeudi 4 août 2005 Statut Membre Dernière intervention 12 juin 2006
7 juin 2006 à 14:44
Super source ! Je battaillais depuis plusieurs jours pour avoir le même résultat avec des scripts cgi, alors que c'est beaucoup plus simple en php.

Pour répondre à adrien :
J'avais le même problème que toi et j'ai essayé de trouvé une solution :

(Par contre j'aime pas trop cette solution, si quelqu'un en a une meilleure je suis preneur :))

<form action="fileupload.php" method="post">
Envoyer ce fichier :





Dans le dossier :


Photos

Vidéos

Code-sources, Textes

Autre

Racine



</form>

Ainsi avec ceci tu récupère le nom complet du fichier dans la variable $_POST['monfichier'].


Et après tu réutilise un des exemples de codes plus haut :

Initialize(0,0,200,30,'#000000','#5BB105','#516AA3'); // initialisation de la barre de progression

$fichier_distant = $_POST['monfichier']
echo $fichier_distant."
";
$fichier_local = $repASigner.basename($fichier_distant);
echo $fichier_local."
";
$fd = fopen($fichier_distant, 'rb');
if (!$fd) die('Impossible d\'ouvrir le fichier distant');
$fl = fopen($fichier_local, 'wb');
$long=filesize($fichier_distant);
echo $long."
";
$rapport=$long/100;
$m=0;
$i=1;
while (!feof($fd)) {
$pp=fgets($fd);
fputs($fl, $pp);
$m=$m+strlen($pp);
if ($m>$rapport) {
$m=0;$i++;
ProgressBar($i);
}
}
fclose($fd);
fclose($fl);

Pour HVELLA :

essaie en essayant ça :
function Initialize($gauche,$haut,$largeur,$hauteur,$bord_col,$txt_col,$bg_col)
{
$tailletxt=$hauteur-10;
echo '
';

echo '
0%
';



echo'
';

}
cs_hvella Messages postés 14 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 31 mai 2006
25 mai 2006 à 17:58
@ frop01, merci pour ce code, sympa la bar.
Pour ma part elle met utile, mais je n'arrive pas a la placer dans une les coordonées de ta barre sont absolues par rapport a la page ouverte.moi ma table est centrée du coup ca tombe pas au bon edroit.

c surement un probleme avec les div que je gere pas..

Voici l'exemple en gros
<?php

echo '
<table align=center>
----

telechargement,
----
';
include ('progressbar.php');
Initialize(12,50,200,30,'#000000','#FFCC00','#006699');

ProgressBar(0);
//effectue une fonction
ProgressBar(50);
//effectue une fonction
ProgressBar(100);
//effectue une fonction
echo '
';
?>

J'aimerai savoir comment ta barre peut rester dans le cadre défini ??
Merci d'avance ! A+
adrientaieb Messages postés 4 Date d'inscription dimanche 4 avril 2004 Statut Membre Dernière intervention 1 mars 2006
27 avril 2006 à 00:31
Salut à tous, je suis en train de faire un site sur lequel on peut uploader des fichiers sur un serveur mais le soucis c'est que quand on envoi son fichier sur le serveur, il n'y pas de barre de progression indiquant que le fichier est bien en train d'être uploadé de mon disc vers le serveur.

Est-ce que quelqu'un pourrait me dire comment utiliser le code source proposé par frop01 dans cet exemple ?

A partir d'un formulaire sur index.php, on envoi un fichier sur fileupload.php

---------------------
code de index.php
---------------------
Transfert de fichier

<form enctype="multipart/form-data" action="fileupload.php" method="post">
Envoyer ce fichier :




Dans le dossier :


Photos

Vidéos

Code-sources, Textes

Autre

Racine



</form>

---------------------
---------------------
code de fileupload.php
---------------------
<?php
if(isset($_REQUEST['dossier'])){
if($_REQUEST['dossier']!='Racine'){
$repertoireDestination = "repertoire/".$_REQUEST['dossier']."/";
}
else{
$repertoireDestination = "repertoire/";
}
}
else{
$repertoireDestination = "repertoire/";
}
$nomDestination = $_FILES["monfichier"]["name"];
$nomDestination = str_replace(" ", "_", $nomDestination);

$existe=false;
$real_dir = realpath($repertoireDestination);
$d=dir($real_dir);
while (false !($f $d->read() ) ) {
if( $f == $nomDestination ) {
$existe=true;
}
}

// Pour raison de sécurité nous ajouterons aux fichiers
// portant une extension .php .php3, l'extension .txt
if (eregi(".php", $nomDestination)) {
$nomDestination .= ".txt";
}
if (is_uploaded_file($_FILES["monfichier"]["tmp_name"]) && $existe==false) {
if (rename($_FILES["monfichier"]["tmp_name"],
$repertoireDestination.$nomDestination)) {
echo "Tout s'est très bien passé ! Le fichier a bien été transféré.

";
chmod ($repertoireDestination.$nomDestination, 0755);
} else {
echo "Le transfert du fichier a échoué".
" vérifiez l'existence du répertoire ".$repertoireDestination;
}
} else {
echo "Le fichier n'a pas été uploadé : trop gros ou déjà existant sous ce nom";
}
?>
------------------------------
------------------------------
phhav Messages postés 13 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 7 mai 2006
18 avril 2006 à 07:54
Allo. Je dois faire une page de upload du genre yousendit..

J'essai d'introduire le code de la barre de progression mais je ne suis pas capable. Je ne suis pas un pro! je commence en programmation.

J'utilise cettec ommande... move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile)
for ($i=0;$i<=100;$i++)
{
ProgressBar($i);
}


mais comme je pex lire, cela ne fonctionne pas. Est ce que quelqu'un peut me donner l'exemple l epls basic possible d'une page avec la barre de progression integré. Je pourrais me debrouiller par la suite

Merci a tous!!
bouffard Messages postés 51 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 mars 2006
29 mars 2006 à 15:46
Alors bravo,

Pour les photos, ce n'est pas une question d'affichage mais de chargement.
En utilisant ta progressbar dans ma boucle while qui lit ma BD je me suis rendu compte qu'elle se rendait à 100% une fois les notices affichées dans le page web, mais que les photos continuaient à ce charger dans la page. Donc je voie toutes mes notices avec leurs infos mais les images ne sont pas encore toutes chargées et afficher dans la page.

Ma question est comment faire pour utiliser ta progressbar dans le but de charger des notices et leurs photos (déposées dans un répertoire sur le serveur) sans avoir à utiliser d'autre code (javascript de préchargerment ou php)?

J'espère être assez clair.

Cordialement
_____________
Bouffard
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
28 mars 2006 à 23:20
lol.

Si tu regardes la page d'accueil du site que tu viens de citer, il ya le message suivant :

"Bienvenue :o)
Vous êtes dans le site personnel de Cyberscorp connu aussi sous le nom de Frop01.
Vous y trouverez tout mes codes sources, scripts, Tutorials ...."

Et oui et oui, Ce site est mon site perso et j'ai développé ce script et je l'ai mis ici et là ;)

Et pour ta petite question :
tu veux dire quoi par charger plusieurs photos ? si c'est pour les afficher uniquement ya des scripts sur phpcs (recherche galerie photo) que tu peux en tirer quelques lignes.

Bonne continuation.
bouffard Messages postés 51 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 mars 2006
28 mars 2006 à 19:47
Bonjour,

On retrouve ce code un peut partout sur certain site en php.
Donc celui-ci :
http://perso.wareteam.com/fonction_php_pour_afficher_une_progressbar_avec_pourcentage_encours_barre_de_progression.php

Alors qui copie sur qui ... En tout cas peut importe qui a fait le code c'est quand même bien.

Petite question que doit ton faire lorsqu'on doit charger plusieurs photos du serveur vers un client et qui sont référenciées dans une BD avec des renseignements utiles pour chacunes d'elles. Un peu comme une table d'usagers avec leurs photos "stoké" dans un répertoire.

Cordialement
__________________
Bouffard
cs_albert59 Messages postés 6 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 14 mai 2009
4 janv. 2006 à 19:57
bé désolé pour toi mais sa fonctionne chez bcp de personne
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
4 janv. 2006 à 19:07
toujours pareil ...
cs_albert59 Messages postés 6 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 14 mai 2009
4 janv. 2006 à 17:49
En effet je n'avais pas controler quelques modifications, désolé si quelqu'un veut bien tester avec que je balance la sauce merci
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
4 janv. 2006 à 16:04
Alberto59 ==|> J'ai été voir sur la page qur tu indique et je doit dire que ça ne mache pas. en dehors d'une succession d'erreur JS pas d'affichage de KB ... Cela dit j'aimerais bien voir le code ;)
cs_albert59 Messages postés 6 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 14 mai 2009
4 janv. 2006 à 14:39
PaTaTe,

Très bonne remarque d'ailleurs je me suis bien cassé les dents sur ce sujet.

Alors j'ai conçu un script qui n'affiche pas encore la progress bar, mais affiche le nombre de kb en cour d'upload ce qui est déjà pas mal.

Vous pouvez voir un exemple ici : http://www.net-heberge.com/progress_bar/test.html

Le script utilise une class php, un petit formulaire d'envoi et 2 fichier js pour le décomptage des kb déjà uploadé. Me reste à y intégrer une progress bar en js, mais le js et moi on es pas très copain encore
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
21 déc. 2005 à 15:20
Cette progressbar est interessante.

L'exemple donné est la reception d'un fichier par le client venant du serveur mais comment faire pour avoir la meme chose quand un client envoie un fichier sur le serveur. Comme j'ai quelques difficultés en PHP, j'aimerais un peu d'aide sur ce point.

Merci
oki972 Messages postés 35 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 11 octobre 2007
15 déc. 2005 à 15:05
Frop01 dis moi...
J'ai utilisé ta barre de progression dans le meme contexte que ton exemple iniital avec la copie de fichier bit par bit.. super en local sous EASY PHP 1.8 mais une fois sur mon serveur distant (linux)... rien .. le fichier est crée mais il ne grossit pas. J'ai tenté un echo de la ligne $pp=fgets($fd); j'ai rien non plus... As tu une idée du probleme ?
Cordialement
massacr Messages postés 233 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 4 janvier 2007
30 sept. 2005 à 18:07
On peut peut etre lister les répertoires avec javascript, et envoyer ca au script PHP via les XMLHTTPRequest. Je crois qu'il est possible de parcourir les disques du client en javascript, ou alors en ActiveX je ne sais plus.
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
30 sept. 2005 à 10:22
Bonnjour,

Le seul site (y en a forcément d'autres) que j'ai vu sur le net qui a son propre interface de download c'est IBM. Le téléchargement se fait par l'intermédiaire d'une fenêtre en applet java qui a pour mission de limiter le nombre de connexion par ip, cacher le répertoire d'où il vient et aussi limiter le taux de transfert.

Mais tout ca est possible avec php sauf un seul truc !! c'est comment créer une FolderBox (pour choisir le répertoire de destination et donc lire les disques du client) .

Je pense pas que php est suffisant dans ce cas la mais je bosse la dessus.

en attendant Grenard pour nous en dire plus :)
oki972 Messages postés 35 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 11 octobre 2007
30 sept. 2005 à 01:32
De ce que je sais une barre de progression pour un téléchargement d'un fichier depuis un serveur n'a pas beaucoup d'intéret vu qu'il s'agit là d'une fonction des natives des OS : windows comme linux ou autre. Pour ce qui est de la reprise d'un téléchargement... (meme principe) [Je précise selon moi].
De plus le téléchargement d'un fichier ne nécessite pas l'exécution d'un script, pour moi tu as le lien et quand tu cliques c'est une liaison directe... la page web ne travaille plus à l'inverse de l'upload ou de requetes où là tant qu'il y a a upload ou a exécuter (dans le cas des requetes) ben la page travaille.
Good luck !
Oki -> Je vous envoie le Soleil de martinique ! (#)
piedpierre Messages postés 29 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 20 février 2007
30 sept. 2005 à 00:44
Bonjour, je trouve cette source pas mal du tout, j'ai vu des exemples pour l'upload de fichiers distants de serveur à serveur qui marche bien, meme s'il faut bien ajouter px à chaque fin de mesures(width) sinon la progressbar n'affiche pas sa progression sur mozilla notament.
Ma question est la suivante : Est-il possible d'afficher cette progression pour un utilisateur utilisant un navigateur qui downloade un fichier présent sur le serveur ? et plus loin... reprendre un téléchargement interrompu ? En PHP, javascript. Merci pour vos réponses...
oki972 Messages postés 35 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 11 octobre 2007
28 sept. 2005 à 05:20
Salut !!
Alors j'ai parcouru un peu les commentaires ... je cherchais à savoir à quel point j'en étais dans l'exécution de requetes!
La je viens de faire un premier test :

$i=0;
$j=0;
$nbre_requetes = 10000000;
while ($i!=$nbre_requetes)
{
$req = "INSERT INTO `piouf` (`ID`) VALUES ('testons testons')";
mysql_query($req);
$i++;
$rapport = (100*$i)/$nbre_requetes;
if($rapport>$j) {
$j++;
ProgressBar($j);
}
}

J'ai été boire un café pendant ce temps, mais c'est niquel !
10/10 mon pote !!
kaaji Messages postés 2 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 24 août 2005
24 août 2005 à 12:11
En faite en online, le fichier a l'air de se télécharger seulement il n'est pas enregistrer. En gros la progress bar fonctionne correctement, maisune fois le téléchargement terminer, le fichier télécharger est introuvable sur le disque.

Je ne sais pas pourquoi mais quand je met comme chemin de destination c:/ j'obtien ce message d'erreur : supplied argument is not a valid stream resource. Mais pas quand mais c:

Si vous pouviez m'aider ^^
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
24 août 2005 à 11:46
JEAN05> OK !! Bonne continuation !

KAAJI > J'ai tester ca en local ca marche mais j'ai pas tester online sinon j'ai pas encore trouver la solution pour un DialogBox pour une séléction de dossier uniquement !! je pense que c'est faisable avec une applet Java !
kaaji Messages postés 2 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 24 août 2005
24 août 2005 à 10:43
Je voulais savoir si avec ton code, on peut télécharger un fichier via une url et enregistrer ce fichier sur le disque dur.

Merci !
cs_jean05 Messages postés 4 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 24 août 2005
24 août 2005 à 07:22
je ne prenais l'exemple de Netscape que pour comparer le fait que ça ne devrai marcher dans ce cas que si les balises <table> sont fermées, mais netscape... m'en fout. c'était juste pour savoir si IE avait le même comportement et comme j'ai mis la barre dans une table (structure obligatoire dans mon cas dûe par l'inclusion d'un en-tête et pied de page formants la table principale)j'epérais que quelqu'un me dise 'c'est pareille'... je testerais ça une autre fois, je dois enchainer sur autre chose...

il doit me manquer quelque chose car ça ne marche vraiment pas sous IE et pourtant tu me dis que ça marche... je vais tester en réseau local au boulot sur les différentes versions d'IE que je vais pouvoir trouver. le problème vient peut-etre de là.

je testerais avec les conseils de sdominici, puisque j'ai installé apache.

j'informerais du résultat, bonne continuation à tous !
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
23 août 2005 à 12:32
salut JEAN05,

Désolé, Je ne l'ai pas tester sur netscape! mais sur IE ca fonctionne bien!!

Essai d'utiliser la classe progressbar créer par mon collègue DAVWART et on verra bien ;)

http://www.phpcs.com/code.aspx?ID=33185

et tenez moi au courant !!
cs_jean05 Messages postés 4 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 24 août 2005
23 août 2005 à 10:28
hum... j'ai lu que Netscape n'affichait la page, même avec flush, que si les <table> étaient fermées... mais ce n'est pas le cas de IE n'est-ce pas ?
cs_jean05 Messages postés 4 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 24 août 2005
22 août 2005 à 18:01
dsl pour le double post, j'ai reçu un message d'erreur du site en prime...

PS : j'ai retouché le code pour que mon affichage soit quasi identique dans Mozilla et IE
PS2 : la barre et dans une cellule de tableau centrée, ce qui permet le résultat équivalent mais rempli la barre par le centre... variante simpatique ;)
cs_jean05 Messages postés 4 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 24 août 2005
22 août 2005 à 17:57
ce code est fantastique !! merci !! 10 !!

hem, par contre mon boss veut que ce soit 100% compatible IE, normal pour les utilisateurs, malheureusement ma page ne s'affiche qu'à la fin du chargement et stoppe à 95% si le fichier et trop petit, alors qu'avec mozilla tout ce passe à merveille... y'a-t-il une configuration particulière à imposer au browser ou un petit mot clef forçant l'affichage sous IE ??

le code :
--------------------
dans la page (dans un tableau) :

Initialize(0,0,200,30,'#000000','#5BB105','#516AA3'); // initialisation de la barre de progression

$fichier_distant = $_POST['fichier'];
echo $fichier_distant."
";
$fichier_local = $repASigner.basename($fichier_distant);
echo $fichier_local."
";
$fd = fopen($fichier_distant, 'rb');
if (!$fd) die('Impossible d\'ouvrir le fichier distant');
$fl = fopen($fichier_local, 'wb');
$long=filesize($fichier_distant);
echo $long."
";
$rapport=$long/100;
$m=0;
$i=1;
while (!feof($fd)) {
$pp=fgets($fd);
fputs($fl, $pp);
$m=$m+strlen($pp);
if ($m>$rapport) {
$m=0;$i++;
ProgressBar($i);
}
}
fclose($fd);
fclose($fl);

-------------------------------------
et le morceau inclus dans le header :

function Initialize($gauche,$haut,$largeur,$hauteur,$bord_col,$txt_col,$bg_col)
{
$tailletxt=$hauteur-10;
echo '
0%
';

echo '

';
}

function ProgressBar($indice)
{
echo "\n<script>";
echo "document.getElementById("pourcentage").innerHTML='";
if ($indice !== 100){
echo $indice,"%';";
}else{
echo "Terminé';";
}
echo "document.getElementById('progrbar').style.width=".($indice*2).";\n";
echo "</script>";
flush();
}

merci d'avance ;)
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
4 août 2005 à 11:40
Merci sdominici pour ces explications ;)
sdominici Messages postés 5 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 6 octobre 2005
4 août 2005 à 02:44
Coucou à tous,

concernant les barres de progression en PHP il y a aussi un très bon package PEAR, un petit lien vers http://pear.php.net/package/HTML_Progress et un autre vers les démos associées http://pear.laurent-laville.org/HTML_Progress/examples/


Juste un remarque pour ceux qui ne sont toujours pas convaincu par le fonctionnement et pour abonder dans le sens de Frop01.

Avec PHP et apache, il est possible de faire de la bufferisation, Apache effectivement n'envoi pas les pages octets par octets mais par paquets (de taille configurable) et PHP peut controler ce buffer.

Autrement dit le script PHP coté serveur va dire à Apache :
1 - Enclenche la bufferisation de sortie - fonction ob_start(),
2 - Prépare plein d'infos pour l'écran du client (l'en-tête HTML pour commencer, puis par exemple, le menu en cours, des infos récapitulative et autres choses simples diverses et variées => et légère !),
3 - Affiche ensuite une barre de progression (vide) reconnus dans la page par un identifiant Javascript,
4 - Envoi toutes ces infos au client pour que le navigateur les affichent - fonction ob_end_flush(),
5 - Enclenche de nouveau la bufferisation de sortie - fonction ob_start(),

Le script va alors faire l'étape de traitement (longue) qui justifie cette barre de progression et sur un intervalle donné va envoyer au buffer un code javascript qui permet de modifier la barre de progression (et permet eventuellement d'afficher d'autres informations) puis va répéter les étapes 4 et 5 autant de fois que nécessaire - jusqu'à affichage complet de la barre.

Voilà, j'espère ne avoir trop empieté sur les commentaires.
Ciao,
Serge.

PS : Frop01, très bien ton code !
massacr Messages postés 233 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 4 janvier 2007
28 juil. 2005 à 16:54
Pour ceux qui ne veulent pas tester avec un fichier, mettez sleep(1); dans la boucle.
Très bon code : 10
A++
juliiian Messages postés 4 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 27 août 2005 8
25 juil. 2005 à 23:07
Mon code est le tien, en fait. :)

$fichier_local = "upload/".basename($fichier_distant);
$fd = fopen($fichier_distant, 'rb');
if (!$fd)
die('Impossible d\'ouvrir le fichier distant');
$fl = fopen($fichier_local, 'wb');
$leng=filesize($fichier_distant);
$rapport=$leng/100;
$m=0;
$i=1;
while (!feof($fd))
{
$pp=fgets($fd);
fputs($fl, $pp);
$m=$m+strlen($pp);
if ($m>$rapport) {
$m=0;$i++;
ProgressBar($i);
}
}

fclose($fd);
fclose($fl);

?>

Qui upload un fichier en partant d'un disque dur vers un serveur dédié..
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
25 juil. 2005 à 23:02
Salut,

la fonction progressbar() doit être insérer dans la boucle où s'effectue la copie de fichier

Mais si tu utilises un code du genre :

move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile)
for ($i=0;$i<=100;$i++)
{
ProgressBar($i);
}

ca sert à rien car le barre ne commence à progresser que si le fichier est uploader d'où le mot uploadED au passé

il faut utilisé une méthode d'upload par copie en octet ou par ligne comme sité en haut par fputs et fgets

while (!feof($fd))
{
$pp=fgets($fd); 'lire un ligne
fputs($fl, $pp); 'écrire la ligne
$m=$m+strlen($pp); ' déterminer la taille de la ligne
if ($m>$rapport) {
$m=0;$i++;
ProgressBar($i); 'afficher la barre
}
}


Mets ton code pour avoir une idée !!

@+
juliiian Messages postés 4 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 27 août 2005 8
25 juil. 2005 à 19:38
*rerentre sur la pointe des pieds pour ne déranger personne, et va reveiller Frop01 dans son lit*

J'ai encore un petit problème avec le script d'exemple, jusque maintenant je m'en servais sans problème en local, et maintenant sur le net, et il y a à nouveau un petit problème : en fait "apparemment", le fichier est uploadé avant d'arriver sur la page comportant la barre de chargement, ce qui est naturellement embettant parceque le script perd tout son interêt, et mon petit test en local, quand j'ai voulu envoyer un fichier de 500 mo, la page de la progressbar a mis 3-4 minutes à se charger, et la progressbar a démarré ensuite et a commencé l'envois..

Donc j'ai une petite question : Cela vient-il du script a la base, ou de l'exemple, ou de moi, ou d'une divine malédiction qui a pris racine au dessus de ma tête ?(c'est paradoxale, ça..)
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
24 juil. 2005 à 23:38
Oh oui ;) même tout de suite si tu veux !!

pour le meilleur et pour le pire ;)
juliiian Messages postés 4 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 27 août 2005 8
24 juil. 2005 à 23:13
Ca marche, je t'aime. :)

PS : On se marie quand tu veux !
juliiian Messages postés 4 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 27 août 2005 8
24 juil. 2005 à 23:10
Coucou,

Le code était un copié collé de ton exemple, donc il comportait bien la variable $indice. :-/

Fatal error: Call to undefined function: progressbar() in c:\program files\easyphp1-8\www\barmetter\progress.php on line 24

Et j'ai dû supprimer la ligne initialize(...) a cause d'un message similaire du type :

Fatal error: Call to undefined function: initialize() in c:\program files\easyphp1-8\www\barmetter\progress.php on line 4

Ce doit venir de ma configuration de apache, tu aurais une idée ?

Bye bye
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
23 juil. 2005 à 15:56
Salut,

il manque la valeur en paramètre : progressbar($indice)

$indice étant une variable incrémenter dans une boucle.

@+
cs_Juliian Messages postés 1 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 23 juillet 2005
23 juil. 2005 à 15:06
Coucou,

A l'installation de ton script, j'obtiens cette erreur :

Fatal error: Call to undefined function: progressbar() in c:\program files\easyphp1-8\www\vh\load.php on line 27

Sur le coup, j'ai cru à une mauvaise configuration de mon php.ini, mais le problème se répète sur jexiste, qui a pourtant d'habitude une bonne config d'apache..

Peut-être pourrais tu m'éclairer ?
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
13 juil. 2005 à 15:50
Merci Grenard pour la note et surtout pour l'info ;)

Par contre le code ici reste très simple pour une utilisation simple!!
sinon je ferai des améliorations au fur et à mesure des mes développement (de mes besoins).

Je connais pas la technique Ajax mais je ferai une recherche la dessus!!
apparemment c'est parfait pour des application lourde ;)

** pour info : http://www.codes-sources.com/ajax.aspx
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
13 juil. 2005 à 14:20
Par contre la source devient salement amochée :P
J'ai une idée pour toi, tu devrais essayer de te tourner sur l'AJAX mais cela implique que lorsque tu interroges le serveur, celui-ci doit avoir un moyen de savoir où il est rendu (processus externe) ET le client (ajax) ne doit pas demander d'autres info lorsqu'il a fini :)
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
13 juil. 2005 à 14:16
Avec le code pour télécharger Eclipse (allez hop la pub). La progress bar ne va pas jusqu'à 100%... en fait moi j'ai pris libethereal.dll (20.2mo) et la progress s'arrête à 93%

Je n'avais jamais utilisé cette méthode pour envoyer des données constantes du serveur :) c cool quand même.

Moi j'te donne 10 pour contre-balancer
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
13 juil. 2005 à 13:33
Merci Oueb
cs_Oueb Messages postés 18 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 19 septembre 2008
13 juil. 2005 à 13:26
J'avais oublié ca .. 10/10 ;)
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
13 juil. 2005 à 13:10
Merci, Ca fait plaisir qu'il te soit util ;)

Je reste à votre disposition pour plus de précision !!
davwart Messages postés 855 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 28 juillet 2009 1
13 juil. 2005 à 10:59
oui !
ce qui m'enerve un peu..c'est que certains ont mal noté la source sous pretexte qu'ils ne la comprenaient pas (et n'ont pas pris ne serait ce que 3 min pour la tester..).
J'ai eu le meme pb avec une de mes sources Flash, me suis fait détruire.. lol

J'ai utilisé ta source pour faire l'affichage d'un gros tableau de données depuis mysql.
Un "count" mysql me donne mon nombre de données et me sert alors pour incrémenter la progress bar.
Ca marche super .
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
13 juil. 2005 à 10:52
Merci GRenard et DAVWART pour vos commentaires.

Cependant, j'ai pas voulu détaillé l'explication de la fonction flush() pour ne pas encombrer le code:

flush vide les buffers de sortie de PHP et tous ceux que PHP utilisait (CGI, un serveur web, etc.). Cette fonction envoit réellement toutes les données préparées vers l'utilsateur.

Certaines versions de Microsoft Internet Explorer ne commençeront l'affichage de la page qu'après avoir reçu 256 octets d'affichage. Cela vous obligera à envoyer des espaces supplémentaires pour afficher la page.


Merci pour la note devwart
davwart Messages postés 855 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 28 juillet 2009 1
12 juil. 2005 à 17:48
excellente source...
elle fonctionne (le probleme client/serveur est résolu par "flush").

j'ai juste ajouté un test d'indice: si il vaut 100, on efface le tout...
function Initialize($gauche,$haut,$largeur,$hauteur,$bord_col,$txt_col,$bg_col)
{
echo "
";
$tailletxt=$hauteur-10;
echo '
0%
';

echo '

';
echo "
";

}
function ProgressBar($indice)
{
if ($indice==100)
{
echo "\n<script>";
echo "document.getElementById('progmaster').style.display='none'";
echo "</script>";
}
echo "\n<script>";
echo "document.getElementById("pourcentage").innerHTML='".$indice."%';";
echo "document.getElementById('progrbar').style.width=".($indice*2).";\n";
echo "</script>";
flush(); // explication : http://www.manuelphp.com/php/function.flush.php
}


merci bien pour ta source ;)
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
11 juil. 2005 à 15:09
Exemple utilisé sur des pages contenant des Sondages payants ou gratuits.
C'est sur que c'est utilisé... et utile. Si j'le dis :P c'est que c'est vrai ;) ?
cs_Oueb Messages postés 18 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 19 septembre 2008
11 juil. 2005 à 12:53
Hum je le mettrais en ligne si tu veux avec un exemple inutile ?
Désolé pour le double post ... juste au moment de la déco des 24H .
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
11 juil. 2005 à 12:07
LaurentKOogar> Désolé j'ai pas d'exemple en ligne mais essais le code en localhost (EasyPHP ou autre)

Merci LaurentKOogar pour cette remarque! je ferai un exemple comparatif en ligne !!
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
11 juil. 2005 à 12:04
"1// Mettre le code Suivant pour un test dans le progressbar :"

pardon le premier exemple c'est pour tester SANS le progressbar
LaurentKOogar Messages postés 369 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 20 octobre 2013
11 juil. 2005 à 12:04
ouaip, pareil, pas convaincu :)
Tu as un exemple en ligne ?
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
11 juil. 2005 à 12:02
Je te remerci Oueb pour ton commentaire qui justifie l'utilité du code.

Voici un exemple concert :

On va simuler une copie de fichier volumineux d'un serveur distant à un disque local C:

dans mon cas une fichier .zip de 100Mo situé dans http://localhost/download

1// Mettre le code Suivant pour un test dans le progressbar :

<html>

<?php

$fichier_distant = "download/eclipse.zip";
$fichier_local = "c:/".basename($fichier_distant);
$fd = fopen($fichier_distant, 'rb');
if (!$fd)
die('Impossible d\'ouvrir le fichier distant');
$fl = fopen($fichier_local, 'wb');
$leng=filesize($fichier_distant);
$rapport=$leng/100;
$m=0;
$i=1;
while (!feof($fd))
{
$pp=fgets($fd);
fputs($fl, $pp);
$m=$m+strlen($pp);
if ($m>$rapport) {
$m=0;$i++;
}
}
fclose($fd);
fclose($fl);

?>

</html>
----------------------------------------------

regarder le malaise à ne pas savoir où en est le navigateur !! pas d'infos

ensuite essayer avec le code suivant :


<html>

<?php

include ("progressbar.php");

//Initialize(x,y,largeur,hauteur,'couleur bordure','couleur du pourcentage','couleur de la barre de progression');
Initialize(50,60,200,30,'#000000','#FFCC00','#006699'); // initialisation de la barre de progression

$fichier_distant = "download/eclipse.zip";
$fichier_local = "c:/".basename($fichier_distant);
$fd = fopen($fichier_distant, 'rb');
if (!$fd)
die('Impossible d\'ouvrir le fichier distant');
$fl = fopen($fichier_local, 'wb');
$leng=filesize($fichier_distant);
$rapport=$leng/100;
$m=0;
$i=1;
while (!feof($fd))
{
$pp=fgets($fd);
fputs($fl, $pp);
$m=$m+strlen($pp);
if ($m>$rapport) {
$m=0;$i++;
ProgressBar($i);
}
}

fclose($fd);
fclose($fl);

?>

</html>


et admirer l'état d'avancement.

@+
cs_Oueb Messages postés 18 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 19 septembre 2008
11 juil. 2005 à 11:40
Imagine, tu a un 50 aine de requetes sql a traiter a la suite, bah pres chaque requete tu increment le %tage de 2% ... ca avance, c'est long mais le visteur vois que ca avance ... moi ca me semble logique, enfin bon tu peux rester sceptique, meme si j'en ai pa l'utilité !
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
11 juil. 2005 à 10:35
Salut,

L'avantage de ce code, c'est qu'il ne recharge pas la page à chaque affichage mais il modifie uniquement le texte du pourcentage et le width de la barre dynamiquement par getElementById()

donc dans la boucle que le serveur traite, il envoi à chanque fois les nouvelles paramètres pour les DIV (sans recharger la page).

Je suis tout à fait à votre disposition pour plus d'informations jusqu'à ce que Lumesh soit convaincu ;)

Merci
lumesh Messages postés 564 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 7 novembre 2008
10 juil. 2005 à 10:45
oui ca peut etres une idee et encore que bon une grosse operation ralentit deja le chgargrment dune page ce qui en gros ne plait pas au visiteur donc ouaip pourquoi pas .... toutjours pas convaincu mais bon le principal est que tu en as l'utilité.
zeratul67 Messages postés 97 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 11 mai 2008
9 juil. 2005 à 22:13
Tentrative de réponse pour Lumesh : parfois, une grosse opération peut être effectuer en PHP en forcenant le rechargement de la même page, plusieurs fois (pour éviter de dépasser le temps d'exécution maximum autorisé sur un serveur par exemple). Dans ce cas, on peut afficher une progress bar, mise à jour entre chaque rechargement.
lumesh Messages postés 564 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 7 novembre 2008
9 juil. 2005 à 17:23
oui mais un truc ... le PHP est serveur/Side, le javascript est comment dire executé par ton naviguateur.
Tout ce qui est serveur/Side n'est pas encore vu par le naviguateur. Le PHP ne fait que créer du code HTML en fonction de conditions c'est tout. Donc en gros la progression d'une boucle en PHP ne se verra pas par ton naviguateur mais sera effectuée avant que la page soit affichée par celui-ci.

Par conscequent je ne comprend mais alors pas dutout de l'interet d'une telle source en PHP .... en javascript okay, peut etre, en ASP (pourquoi pas grace a l'interraction possible avec le naviguateur IE via le vbscript et le javascript) et encore mais la en PHP je doute sincerement !!!!

Enfin bon. Pas convaincu du tout.
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
9 juil. 2005 à 17:03
LoL !
tout simplement pour connaitre l'état d'avancement d'un tâche précise et que pour l'utilisateur ne s'ennuie pas et faire la fenetre par doute que le site est planté !!

Si par exemple tu es entrain de copier un fichier de 50 Mo d'un serveur distant à un dique local !! comment savoir l'état d'avancement ???
ou bien une longue et dure recherhce dans une base de données qui peut durer 1 minute comment savoir si ca marche ou pas ??

Ben il ya des milliers de bonnes raison d'utiliser ce script !!

Je suis pas un commercial mais J'espère t'avoir convaincu !! ;)
NeoZer0 Messages postés 9 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 20 juin 2006
9 juil. 2005 à 16:03
je cromprend pas trop l'interet?