Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PROGRESS BAR : CLASSE PHP4


Information sur la source

Catégorie :Graphique Classé sous : barre, progression, classe, timeout Niveau : Débutant Date de création : 10/08/2005 Date de mise à jour : 10/08/2005 23:23:19 Vu : 11 114

Note :
9,83 / 10 - par 6 personnes
9,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Cette classe est basée directement sur le code de "frop01" qui se trouve ici:
http://www.phpcs.com/code.aspx?id=32601

J'en ai juste fait une classe (et fait qques changement (timeout, ajout de texte, hide,..) car j'en avais besoin, et donc..ça peut servir..

je l'ai testé sous Firefox, je pense qu'elle doit fonctionne sous IE..

 

Source

  • //la classe (fichier class_progressbar.inc)
  • <?php
  • class ProgressBar{
  • //----------------- parameters -----------------
  • // position parameters
  • var $top=60;
  • var $left=50;
  • var $width=200;
  • var $height=30;
  • //color parameters
  • var $border_color='#000000';
  • var $percent_color='#FFCC00';
  • var $txt_color='#000000';
  • var $background_color='#006699';
  • //size parameters;
  • var $percent_size=15;
  • var $txt_size=15;
  • //html parameter
  • //----------------- private functions -----------------
  • function Hide(){
  • echo '<script>';
  • echo 'document.getElementById("myprogressbar").style.display="none";';
  • echo "</script>";
  • }
  • //----------------- public functions -----------------
  • function setPosition($left,$top, $width, $height){
  • $this->top=$top;
  • $this->left=$left;
  • $this->width=$width;
  • $this->height=$height;
  • }
  • function setColors($border_color,$percent_color,$txt_color,$background_color){
  • $this->border_color=$border_color;
  • $this->percent_color=$percent_color;
  • $this->txt_color=$txt_color;
  • $this->background_color=$background_color;
  • }
  • function setSizes($percent_size, $txt_size){
  • $this->percent_size=$percent_size;
  • $this->txt_size=$txt_size;
  • }
  • function generateHTML(){
  • $html='<div id="myprogressbar" style="display:block;position:absolute;top:'.$this->top;
  • $html.=';left:'.$this->left;
  • $html.=';width:'.$this->width.'px;">';
  • //progress bar div
  • $html.='<div id="progrbar" style="position: relative; top: 0px';
  • $html.=';left: 1px';
  • $html.=';width:0px';
  • $html.=';height:'.$this->height.'px';
  • $html.=';background-color:'.$this->background_color.';z-index:0;"></div>';
  • //percent div
  • $html.='<div id="percent" style="position:relative;top:-'.($this->height+1).'px';
  • $html.=';left: 0px';
  • $html.=';width: 100%';
  • $html.=';height:'.$this->height.'px;border:1px solid '.$this->border_color.';font-family:Tahoma;font-weight:bold';
  • $html.=';font-size:'.$this->percent_size.'px;color:'.$this->percent_color.';z-index:1;text-align:center;">0%</div>';
  • //text div
  • $txttop=$this->top+1+$this->height+1;
  • $html.='<div id="progrbartxt" style="position:relative;top:-'.($this->height).'px';
  • $html.=';left:0px';
  • $html.=';width: 100%';
  • $html.=';text-align:center';
  • $html.=';font-size:'.$this->txt_size.'px;color:'.$this->txt_color.';z-index:1;text-align:center;">loading</div>';
  • $html.='</div>';
  • return $html;
  • }
  • function SetTimeOut($timeout){
  • set_time_limit($timeout); //need safe mode off !
  • }
  • function SetPercent($percent, $text=""){
  • echo '<script>';
  • echo 'document.getElementById("percent").innerHTML="'.$percent.'%";';
  • echo 'document.getElementById("progrbar").style.width="'.($percent*2).'";';
  • if (!empty($text))
  • {
  • echo 'document.getElementById("progrbartxt").innerHTML="'.$text.'";';
  • }
  • echo '</script>';
  • flush();
  • }
  • function End($hide=true){
  • echo '<script>';
  • echo 'document.getElementById("percent").innerHTML="100%";';
  • echo 'document.getElementById("progrbar").style.width="200";\n';
  • echo 'document.getElementById("progrbartxt").innerHTML="loaded !";';
  • echo '</script>';
  • flush();
  • if (!empty($hide))
  • $this->Hide();
  • }
  • }
  • ?>
  • //la page de test
  • <html>
  • <body>
  • <?php
  • include ('class_progressbar.inc');
  • $pb=new ProgressBar;
  • //optional
  • $pb->setPosition(200, 50, 200, 20); //optionnal (default value are defined)
  • $pb->setColors('#000000','#FFCC00','#FF0000','#006699'); ////optionnal (default value are defined)
  • $pb->setSizes(15, 18);
  • $pb->setTimeout(30);
  • //generate html
  • echo $pb->generateHTML();
  • //simulate a "time consuming" task
  • for ($i=0;$i<=100;$i++)
  • {
  • $pb->setPercent($i,'loading message');
  • for ($j=0;$j<=100000;$j++) {$p=1;}
  • $p=1;
  • }
  • //end the progress bar (and hide it when finished)
  • $pb->End(); //or $pb->End(false) to avoid hidding progress bar
  • ?>
  • <div style="positon:relative">your document is now loaded !</div>
  • </body>
  • </html>
//la classe (fichier class_progressbar.inc)
<?php

class ProgressBar{

//----------------- parameters -----------------
	// position parameters
	var $top=60;
	var $left=50;
	var $width=200;
	var $height=30;

	//color parameters
	var $border_color='#000000';
	var $percent_color='#FFCC00';
	var $txt_color='#000000';
	var $background_color='#006699';
	
	//size parameters;
	var $percent_size=15;
	var $txt_size=15;

	//html parameter

//----------------- private functions -----------------
	function Hide(){
		echo '<script>';
		echo 'document.getElementById("myprogressbar").style.display="none";';
		echo "</script>";
	}

//----------------- public functions -----------------
	function setPosition($left,$top, $width, $height){
		$this->top=$top;
		$this->left=$left;
		$this->width=$width;
		$this->height=$height;		
	}

	function setColors($border_color,$percent_color,$txt_color,$background_color){
		$this->border_color=$border_color;
		$this->percent_color=$percent_color;
		$this->txt_color=$txt_color;
		$this->background_color=$background_color;
	}

	function setSizes($percent_size, $txt_size){
		$this->percent_size=$percent_size;
		$this->txt_size=$txt_size;
	}
	
	function generateHTML(){
		$html='<div id="myprogressbar" style="display:block;position:absolute;top:'.$this->top;
		$html.=';left:'.$this->left;
		$html.=';width:'.$this->width.'px;">';

		//progress bar div
		$html.='<div id="progrbar" style="position: relative; top: 0px';
		$html.=';left: 1px';
		$html.=';width:0px';
		$html.=';height:'.$this->height.'px';
		$html.=';background-color:'.$this->background_color.';z-index:0;"></div>';

		//percent div		
		$html.='<div id="percent" style="position:relative;top:-'.($this->height+1).'px';
		$html.=';left: 0px';
		$html.=';width: 100%';
		$html.=';height:'.$this->height.'px;border:1px solid '.$this->border_color.';font-family:Tahoma;font-weight:bold';
		$html.=';font-size:'.$this->percent_size.'px;color:'.$this->percent_color.';z-index:1;text-align:center;">0%</div>';
		
		//text div
		$txttop=$this->top+1+$this->height+1;
		$html.='<div id="progrbartxt" style="position:relative;top:-'.($this->height).'px';
		$html.=';left:0px';
		$html.=';width: 100%';
		$html.=';text-align:center';
		$html.=';font-size:'.$this->txt_size.'px;color:'.$this->txt_color.';z-index:1;text-align:center;">loading</div>';
		
		$html.='</div>';		
		return $html;
	}

	function SetTimeOut($timeout){
		set_time_limit($timeout); //need safe mode off !
	}
	
	function SetPercent($percent, $text=""){
		echo '<script>';
		echo 'document.getElementById("percent").innerHTML="'.$percent.'%";';
		echo 'document.getElementById("progrbar").style.width="'.($percent*2).'";';
		if (!empty($text))
		{
			echo 'document.getElementById("progrbartxt").innerHTML="'.$text.'";';
		}
		echo '</script>';
		flush();
	}	

	function End($hide=true){
		echo '<script>';
		echo 'document.getElementById("percent").innerHTML="100%";';
		echo 'document.getElementById("progrbar").style.width="200";\n';
		echo 'document.getElementById("progrbartxt").innerHTML="loaded !";';
		echo '</script>';
		flush();
		if (!empty($hide))
			$this->Hide();		
	}

}
?>

//la page de test
<html>
<body>
<?php
 include ('class_progressbar.inc');
$pb=new ProgressBar;

//optional
$pb->setPosition(200, 50, 200, 20); //optionnal (default value are defined)
$pb->setColors('#000000','#FFCC00','#FF0000','#006699'); ////optionnal (default value are defined)
$pb->setSizes(15, 18);
$pb->setTimeout(30);

//generate html
echo $pb->generateHTML();

//simulate a "time consuming" task
for ($i=0;$i<=100;$i++)
{
	$pb->setPercent($i,'loading message');
	for ($j=0;$j<=100000;$j++) {$p=1;}
		$p=1;
}
//end the progress bar (and hide it when finished)
$pb->End(); //or $pb->End(false) to avoid hidding progress bar
?>
<div style="positon:relative">your document is now loaded !</div>
</body>
</html>

Conclusion

- des erreurs javascript sont générées... je les corrigerai ASAP.
 

Historique

10 août 2005 23:23:19 :
- erreure de manip :)

Commentaires et avis

signaler à un administrateur
Commentaire de frop01 le 11/08/2005 12:19:20

Salut,

Très bon code ;) 10/10

Pour IE6 ca fonctionne bien sauf qu'il faut enlever le "\n" dans la troisième ligne de la fonction Hide pour que ca se termine bien.

@+

signaler à un administrateur
Commentaire de davwart le 11/08/2005 13:12:43

lol !
merci Mr Frop01 ;)

signaler à un administrateur
Commentaire de ctzenfr le 22/10/2005 13:15:57

Bonjour,

D'abord respect et barvo pour ce script.
Pour info :
Test avec IE 6.0 - Firefox 1.0.7 - Mozilla 1.6 - Opera 7.54
Fonctionnement parfait (une fois enlevé le "\n") en doctype <html>
Par contre en doctype html 4.x ou xhtml 1.x
IE et Opera, variables de positionnement pas prises en compte,
Firefox et Mozilla, même chose + pas de remplissage de la progressbar.
Voilà. Vu mes compétences de débutant, ma contribution s'arrêtera là et à un 10/10 bien sûr.

signaler à un administrateur
Commentaire de gorgorbay le 31/12/2005 16:46:01

dommage que free.fr soit en safe mode off

signaler à un administrateur
Commentaire de piep14 le 10/03/2006 11:51:44

Bonjour, j'aimerais savoir comment ceci fonctionne avec un formulaire d'upload de fichier ?
Merci de votre aide !

signaler à un administrateur
Commentaire de frop01 le 10/03/2006 12:25:33

Salut,

Voici deux scripts (en anglais):

http://www.devpro.it/upload_progress/
http://pdoru.from.ro/

signaler à un administrateur
Commentaire de amkp le 04/05/2006 18:32:48

Slt,

bravo pour votre travail frop01 et davwart !
cette classe fonctionne à merveille lorsque l'on utilise une boucle d'exemple "for ($i=0;$i<=100;$i++)"

par contre, lorsque l'on a, par exemple, un nombre de requetes à effectuer qui n'est pas égal à 100,
comment fait-on ?

j'ai bien essayé de remplacer le $i > 100 par le nombre de requetes retournée avec "mysql_num_rows"
mais celà ne m'affiche plus un pourcentage correct...

et si l'on a 1 seule mais longue requete ?

j'avoue ne pas saisir toutes les nuances de l'implémentation de cette classe
merci de votre aide

signaler à un administrateur
Commentaire de frop01 le 04/05/2006 21:00:13

Salut,

C'est toujours valable en utilisant un rapport (rapport = 100 / nbrequete )

tu incrémentes ton variable avec la valeur de rapport au lieu plus 1.
@+

signaler à un administrateur
Commentaire de amkp le 04/05/2006 23:50:50

désolé mais je ne saisi tjrs pas la nuance...

# //simulate a "time consuming" task
# for ($i=0;$i<=100;$i++)
# {
#     $pb->setPercent($i,'loading message');
#    
#        
# }

imaginons que j'ai un nombre de requete $nbr
et que je fasse une boucle comme ceci

$i = 0;

while ( $i < $nbr )
    {
    //traitement

    $pb->setPercent($i,'loading message');
    }

comment et ou intervient le rapport (rapport = 100 / nbrequete )?

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

barre de progression pendant l'upload [ par Linuss ] Bonjour &#224; tous, Alors voil&#224;, j'aimerai savoir comment faire ou s'il existe un script pour afficher une barre de progression pendant un uploa Barre de progression [ par nicolas66 ] Salut tlm,Je voulais savoir s'il était possible de faire apparaitre une barre de progression d'un téléchargement lors d'un envoi vers un serveur ftp ( Barre de progression upload fichier SIMPLE [ par pukekey ] Bonjour, Voila vous allez surement me dire que je suis un boulet mais je me lance : J'ai chercher pendant des heures un moyen de faire une barre de Barre de progression pour un upload de fichier [ par SeanyJ ] Bonjour, Alors voila je vais vous expliquer mon problème. J'ai créer un formulaire en PHP permettant l'envoi de gros fichier sur mon serveur (jusqu'a php/classe [ par yolino ] salut tout le monde,bon voila j'ai besoin d'un cours php POO bien détailler j'aimerai bien que quelqu'un me donne un site ou bien même un cours  en vo diagramme de classe pour générateur de documentation [ par lili345 ] Bonjour,Voila je dois créer un générateur de documentation en php pour mon projet de stage  et je dois faire une analyse UML.Mais le problème c'est qu développer une classe utilisateur [ par wafa45 ] la classe utilisateur est la classe qui est en relation avec tous les de l'application: pointage ,demande ,exception.... je n'ai pas réussi à les reli Générer code barre 2D PDF417 [ par moumoune11 ] Bonjour. je suis en licence proffessionnelle Traitement des données et internet. je dois réaliser un projet tutoré qui consiste à générer un code barr


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC Magic

Entre 429€ et 429€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.