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 : 10 263

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 ( Quand on parle de Classe [ par Tomcube ] C'est une question très vaste,On parle de plus en plus de programmation objet. Qui dit programmation objet dit classe. D'ailleurs, c'est fou le nombre Cacher la barre d'outils IE et Nescape sous site php [ par wishy ] Salut à tous,Je suis tout nouveau...Je souhaiterais soumettre à la votre science un petit problème (pour vous...mais énorme pour moi).Mon site est en problème de classe [ par guixyz ] Hello! Voila je suis en train d'apprendre a me servir des classes en php. Et j'en ai fait une pour gérer mes formulaires Donc j'ai ma classe, une fcti Pb avec classe en php, Affichage [ par matou82 ] Je voudrais savoir comment surcharger l'affichage d' echo ou print pour une classePour avoir:$obj = new Maclass;echo $obj;Cela affiche : "Object" Je s Gallerie par barre de defilement. [ par csosiris ] Bonjour, j'aimerais savoir comment creer une gallerie en ligne sur une barre de defilement horizontale. comment faire defiler du texte dans la barre du bas [ par ptiscripter ] salut, je voudrais savoir comment faire pour mettre du texte dans la barre quand quelqun vien sur mon site, un text defilant de preference :)http://me Classe et panier [ par romalafrite ] http://www.phpcs.com/code.aspx?ID=12931Quelqu'un peut me dire comment récupérer le contenu du panier une fois que la sélection a été faite ?visit inte Ne pas afficher complètement l'url d'une page dans la barre d'adresse [ par cz1702 ] Comment faire pour n'afficher que le nom du site sans afficher tout ce qui suit.Par exemple: afficher http://yahoo.fr/ et pas http://yahoo.fr/index.p


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,296 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é.