|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité régulier
![]() Inscription : avril 2005 Messages : 31 ![]() |
Bonjour à toutes et à tous ! Je suis nouvelle dans la section PHP et j'ai besoin de vos lanternes bien éclairées (parce que la mienne est en panne
Voici mon problème. Je cherche à mettre en place une jolie barre de progression pour un formulaire d'upload d'un fichier local sur un serveur FTP. Je sais qu'il existe bien des façons plus faciles à mettre en place que la mienne mais je suis sur le point d'y arriver (et j'ai mis du temps Voici le code d'upload : Code :
J'aimerai passer la variable $i à une fenêtre qui la récupère et qui me dessine la barre de progression correspondante : Code :
Mon problème, c'est que je ne sais pas comment lui envoyer ma variable $i ! Quelqu'un peut-il m'aider s'il vous plait ? Je vous en serai très reconnaissante |
||||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Bonjour,
Pour la lanterne, la solution est toute simple, changer la bougie (je suis pas encore passé à l'électricité ^_^) ... Ah, c'est pas ça la question ... Il serait plus simple d'ouvrir la Pop-up lors de l'envoi du formulaire ... Car il me semble qu'ouvrir une fenêtre via PHP est utopique ^_^. (ou pas, qui sait xD) Donc lors de l'envoi de ton fichier, tu met un action="tapagedetraitement.php" et ensuite tu met un onclick="dujavascript" qui va t'ouvrir une pop-up qui elle va chercher le fichier affichagedelabarredupload.php . Ceci n'est qu'une idée ^_^. |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : avril 2005 Messages : 31 ![]() |
Merci pour cette idée
Le truc, c'est que l'ouverture de la popup n'est pas un souci en soi. Je cherche un moyen de pouvoir envoyer ma variable $i à la popup. Comme l'histoire des paramètres ne fonctionne pas du tout, j'ai tenté d'écrire ce $i dans un fichier que lit la popup toutes les secondes. Sauf que la seule valeur qui s'affiche dans la popup est la dernière écrite dans le fichier. C'est bizarre quand même, non ? |
|
|
00
|
|
|
#4 | ||||
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Donc dans ceci n'est pas une réponse en soit, mais une idée à exploiter, éventuellement.
La fonction flush(); va forcer l'envoi des echo, print, etc ... AVANT que le cache du navigateur soit plein. Tu peux donc faire une fonction du style : Code :
Maintenant une boucle de 100 ... ça passe en claquant des doigts, tu peux donc faire ceci : Code :
Voilà, c'est très brouillon, mais je pense que l'idée est là. Sinon tu peux utiliser l'AJAX. |
||||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : avril 2005 Messages : 31 ![]() |
Lol merci !
Bon petit dej...de mon côté, je me penche sur les connexions asynchrones... |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() |
Parce qu'on peut pas passer un paramètre à une popup????
|
|
|
00
|
|
|
#7 | |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Citation:
|
|
|
|
00
|
|
|
#8 | |
|
Membre régulier
![]() |
Citation:
|
|
|
|
00
|
|
|
#9 | |
|
Invité régulier
![]() Inscription : avril 2005 Messages : 31 ![]() |
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Oups ^_^, ceci va stoper ton script pendant ... 1000 secondes, normal que tu trouves que ça tourne dans le vide ^_^.
|
|
|
00
|
|
|
#11 |
|
Membre régulier
![]() |
J'crois que je bug lol...! T'arrive à ouvrir ta popup, et ce que tu veux c'est pas passer une variable à ta popup, mais passer une variable plusieurs fois de suite? C'est ça ou j'retourne dormir?
|
|
|
00
|
|
|
#12 | ||
|
Invité régulier
![]() Inscription : avril 2005 Messages : 31 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#13 | ||||
|
Invité régulier
![]() Inscription : avril 2005 Messages : 31 ![]() |
Bon j'ai tenté ta méthode SpiritOfDoc mais il ne se passe absolument rien...pourtant il me semble que j'ai bien adapté:
Code :
Code :
|
||||
|
|
00
|
|
|
#14 |
|
Membre chevronné
![]() Développeur Web Inscription : décembre 2004 Messages : 636 ![]() |
Aïe ! ça sent l'usine à gaz ton truc ...
Bon, je vais essayer de t'aider un peu, car j'ai déja fait ce genre de trucs en javascript. Voici la marche à suivre : - 1) tu créé un script php qui calcule l'etat d'avancement de la tache d'upload, et qui renvoie uniquement cette valeur, de préférence structurée en XML - 2) dans ta popup tu créé un script javascript qui va interroger toutes les x secondes le script php ci dessus avec un xmlHTTPRequest et récupere la valeur de la progression - 3) toujours, en javascript, une fois que tu as récuperé la valeur, tu mets à jour la barre de progression En résumé, c'est bien de l'AJAX qu'il faut faire, mais contrairement à ce que tu semble croire, il n'y a rien à installer pour faire de l'AJAX :si tu te contentes de choses simples, tous les navigateurs dignes de ce nom fournissent aujourd'hui une implémentation de xmlHTTPRequest Je te conseille d'aller voir ce tuto d'introduction qui te donnera les bases d'AJAX
__________________
Ne cliquez pas sur ce lien |
|
|
00
|
|
|
#15 | |||
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
J'ai fais un test tout simple pour voir si ce que j'avais penser fonctionne ^_^ :
Code :
Maintenant je pense que la solution est vraiment pas loin ^_^ Le problème après, c'est ceci : Citation:
|
|||
|
|
00
|
|
|
#16 |
|
Membre régulier
![]() |
Le seveur bride le temps d'execution d'un script. Faut changer le time_limit dans le php.ini je crois!
|
|
|
00
|
|
|
#17 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
C'est en effet une solution ... malheureusement au détriment du temps d'exécution général ...
|
|
|
00
|
|
|
#18 |
|
Membre régulier
![]() |
Et faut avoir la possibilité de le changer!
-> set_time_limit(0); Sinon je ne vois pas d'autre moyen de contourner le problème en php! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com