[PHP] Chargement page

Chargement page [PHP] - PHP - Programmation

Marsh Posté le 18-03-2005 à 12:36:30    

Bonjour,
 
Je viens de réaliser un petit script d'upload en php. Lorsque la personne clic sur le bouton upload, mon système charge une page php, par exemple, up.php. Cette page contient une petite phrase pour l'utilisateur, du genre "Veuillez patienter...", et dans le bas de celle-cui se trouve le script d'upload.
 
Mon problème, c'est que ce msg utilisateur ne s'affichent qd quand le fichier est upload. Donc que le script php à fini.  
 
Je cherche donc un moyen de lancer ce script après l'affichage utilisateur.
 
merci


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 18-03-2005 à 12:36:30   

Reply

Marsh Posté le 18-03-2005 à 12:37:26    

Aucun moyen [:spamafote] Limite faisable en JS :(

Reply

Marsh Posté le 18-03-2005 à 13:17:38    

Aie :'(


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 18-03-2005 à 14:03:36    

Mon expérience dans le domaine :
Sous linux, si tu places un echo en début de page qui contient un long traitement , il va s'afficher , mais pas sous windows.
 
Par contre avec apache2, ca marche aussi sous windows.


Message édité par no_code le 18-03-2005 à 14:04:05
Reply

Marsh Posté le 18-03-2005 à 14:33:08    

Le serveur est sous linux, je mets qd dans l'echo ? des "  " ?


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 18-03-2005 à 15:30:15    

Fait voir ton code

Reply

Marsh Posté le 18-03-2005 à 15:49:29    

Code :
  1. <? session_start();
  2.    session_regenerate_id();
  3. ?>
  4. <table width="450" border="0" align="center">
  5.   <tr>
  6.     <td colspan="2">Transfert de votre fichier en cours ..... cela peut prendre plusieurs minutes </td>
  7.   </tr>
  8.   <tr>
  9.     <td>&nbsp;</td>
  10.     <td>&nbsp;</td>
  11.   </tr>
  12.   <tr>
  13.     <td colspan="2">Ne fermez surtout pas cette fen&ecirc;tre </td>
  14.   </tr>
  15.   <tr>
  16.     <td>&nbsp;</td>
  17.     <td>&nbsp;</td>
  18.   </tr>
  19. </table>
  20. <?
  21. include("transfert2.php" );
  22. ?>


Je voudrais que le include ne se fasse que quand la page se trouve être chargée.


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 18-03-2005 à 15:52:30    

hors sujet complet pour ce qui va suivre, mais faire un tableau avec des cellules vides gérée à coup de &nbsp; pour afficher 2 lignes centrées à l'utilisateur, lui demandant de patienter...
 
Spa un peu bourrin comme mise en page ???


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 18-03-2005 à 16:12:25    

Le problème c'est qu'il va attendre que l'upload soit fini pour afficher la page.
 
C'est dans la page du formulaire d'upload que tu dois faire quelque chose.
Le seul moyen "propre" que j'avais trouvé à l'époque pour l'upload de gros fichiers : sur le onsubmit du formulaire, j'ouvrais un popup (je sais c'est pas le top ;)) avec une barre d'activité. Et sur le onload de la page d'après je ferme le popup crée.

Reply

Marsh Posté le 18-03-2005 à 16:13:52    

Xav_ a écrit :

hors sujet complet pour ce qui va suivre, mais faire un tableau avec des cellules vides gérée à coup de &nbsp; pour afficher 2 lignes centrées à l'utilisateur, lui demandant de patienter...
 
Spa un peu bourrin comme mise en page ???


C'est hyper-bourrin et ultra-porc :jap:

Reply

Marsh Posté le 18-03-2005 à 16:13:52   

Reply

Marsh Posté le 18-03-2005 à 16:15:02    

C'est vrai que ca pourrait être une solution. Car en fait, c'est pour utiliser en intranet... donc j'ai des fichiers 500Mo... et faut que j'arrive a afficher un petit msg absolument.


Message édité par Le Veilleur le 18-03-2005 à 16:15:21

---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 18-03-2005 à 16:17:21    

Le Veilleur a écrit :

C'est vrai que ca pourrait être une solution. Car en fait, c'est pour utiliser en intranet... donc j'ai des fichiers 500Mo... et faut que j'arrive a afficher un petit msg absolument.


Donc je te conseille ma solution :D
 
Tu sauras te débrouiller pour faire la barre d'activité ?
 
Y a une feinte aussi pour la fermeture du popup dans la seconde page :D

Reply

Marsh Posté le 18-03-2005 à 16:21:32    

Heu, encore aucune idée. Mais si tu as un code dont je peux m'inspirer, je suis preneur.
 
merci


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 18-03-2005 à 16:28:55    

Je t'ai envoyé ça en MP ;)

Reply

Marsh Posté le 18-03-2005 à 17:39:17    

Un grand merci :)


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 21-03-2005 à 10:41:36    

Bah poste-ça ici, fait pas ta pince, fais profiter la communauté :D

Reply

Marsh Posté le 21-03-2005 à 11:06:23    

J'pense qu'avec les ob_start & ob_flush on peut s'en sortir aussi :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-03-2005 à 12:06:07    

esox_ch a écrit :

J'pense qu'avec les ob_start & ob_flush on peut s'en sortir aussi :D


Non car avant de s'exécuter le script PHP attend de recevoir toutes les données uploadées ;)

Reply

Marsh Posté le 21-03-2005 à 12:09:07    

progressBar.js

Code :
  1. var isDom = document.getElementById ? true : false;
  2. var isIE  = document.all ? true : false;
  3. var isNS4 = document.layers ? true : false;
  4. var cellCount = 15;
  5. var currentCell = 0;
  6. var popupWidth = 300;
  7. var popupHeight = 150;
  8. function startProgress() {
  9.         setInterval("updateProgress()", 400);
  10. }
  11. function updateProgress() {
  12.     for (i=0; i < cellCount; i++) {
  13.         hideCell(i);   
  14.     }
  15.     showCell(currentCell%cellCount);
  16.     currentCell++;
  17. }
  18. function setVisibility(pElement, pVisibility) {
  19.     if( pVisibility ) {
  20.         color = '#3366CC';
  21.     } else {
  22.         color = '#CCCCCC';
  23.     }
  24.     if (isDom) {
  25.         document.getElementById(pElement).style.background = color;
  26.     } else if (isIE) {
  27.         document.all[pElement].style.background = color;
  28.     } else if (isNS4) {
  29.         document.layers[pElement].style.background = color;
  30.     }
  31. }
  32. function showCell(pCell) {
  33.     setVisibility('progressCell'+pCell, true);
  34. }
  35. function hideCell(pCell) {
  36.     setVisibility('progressCell'+pCell, false);
  37. }
  38. function launchProgressPopup() {
  39.         LeftPosition = (window.screen.width-popupWidth)/2;
  40.         TopPosition  = (window.screen.height-popupHeight)/2;
  41.         window.open('progressPopup.php', 'progressPopup', 'top='+TopPosition+',screenY='+TopPosition+',left='+LeftPosition+',screenX='+TopPosition+',height='+popupHeight+',width='+popupWidth+',location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');
  42. }
  43. function closeProgressPopup() {
  44.         popup_w=window.open('#', 'progressPopup','width=1,height=1');
  45.         popup_w.close('progressPopup');
  46. }


 
progressPopup.php

Code :
  1. <html>
  2. <head>
  3. <title>Barre d'activité</title>
  4. <style type="text/css">
  5. <!--
  6. body {
  7.         background-color: #FFFFFF;
  8.         font-family: Verdana, Arial;
  9. }
  10. .progressBarBorder {
  11.         background-color: #E0E0E0;
  12.         width: 257px;
  13.         height: 24px;
  14.         position: relative;
  15.         left: 0px;
  16.         top: 0px;
  17. }
  18. .installationProgress {
  19.         width: 250px;
  20.         margin: 10px;
  21.         text-align: justify;
  22.         font-size: 10px;
  23.         font-weight: bold;
  24. }
  25. .cell {
  26.         width: 15px;
  27.         height: 20px;
  28.         background-color: #CCCCCC;
  29. }
  30. // -->
  31. </style>
  32. <script type="text/javascript" src="/js/progressBar.js"></script>
  33. </head>
  34. <body onload="startProgress()">
  35. <div id="progress">
  36. <table border="0" cellspacing="0" cellpadding="0">
  37. <tr>
  38.         <td>
  39.                 <div class="progressBarBorder">
  40.                         <div id="progressCell0" class="cell" style="position:absolute;top:2px;left:2px;">&nbsp;</div>
  41.                         <div id="progressCell1" class="cell" style="position:absolute;top:2px;left:19px;">&nbsp;</div>
  42.                         <div id="progressCell2" class="cell" style="position:absolute;top:2px;left:36px;">&nbsp;</div>
  43.                         <div id="progressCell3" class="cell" style="position:absolute;top:2px;left:53px;">&nbsp;</div>
  44.                         <div id="progressCell4" class="cell" style="position:absolute;top:2px;left:70px;">&nbsp;</div>
  45.                         <div id="progressCell5" class="cell" style="position:absolute;top:2px;left:87px;">&nbsp;</div>
  46.                         <div id="progressCell6" class="cell" style="position:absolute;top:2px;left:104px;">&nbsp;</div>
  47.                         <div id="progressCell7" class="cell" style="position:absolute;top:2px;left:121px;">&nbsp;</div>
  48.                         <div id="progressCell8" class="cell" style="position:absolute;top:2px;left:138px;">&nbsp;</div>
  49.                         <div id="progressCell9" class="cell" style="position:absolute;top:2px;left:155px;">&nbsp;</div>
  50.                         <div id="progressCell10" class="cell" style="position:absolute;top:2px;left:172px;">&nbsp;</div>
  51.                         <div id="progressCell11" class="cell" style="position:absolute;top:2px;left:189px;">&nbsp;</div>
  52.                         <div id="progressCell12" class="cell" style="position:absolute;top:2px;left:206px;">&nbsp;</div>
  53.                         <div id="progressCell13" class="cell" style="position:absolute;top:2px;left:223px;">&nbsp;</div>
  54.                         <div id="progressCell14" class="cell" style="position:absolute;top:2px;left:240px;">&nbsp;</div>
  55.                 </div>
  56.         </td>
  57. </tr>
  58. </table>
  59. <p class="installationProgress" id="installationProgress">
  60.         Cette fenêtre reste ouverte pendant toute la durée du transfert de vos fichiers. Elle sera fermée automatiquement à la fin du transfert.
  61. </p>
  62. </div>
  63. </body>
  64. </html>


 
Dans le onsumbit du formulaire de la page d'upload on met ça onsubmit="launchProgressPopup(); return true;"
 
Et dans le onload de ta page de traitement on met ça : onload="closeProgressPopup();"
 
Je suis ouvert à toute remarque ;)

Reply

Marsh Posté le 21-03-2005 à 12:11:55    

Mais alors la progressbar se remplit, puis se vide, puis se remplit à nouveau ? Quel différence par rapport à un bête gif animé ?

Reply

Marsh Posté le 21-03-2005 à 12:53:31    

Y en a pas :D
 
En fait ça permet de pouvoir personnaliser le graphisme de la barre sans devoir refaire le gif ;)

Reply

Marsh Posté le 21-03-2005 à 14:33:34    

Mouais, avec un gif, y'a beaucoup plus d'avantages : s'affiche sans JS et permet de spécifier l'attribut alt pour ceux qu'affichent pas les images ;)


Message édité par FlorentG le 21-03-2005 à 14:33:40
Reply

Marsh Posté le 21-03-2005 à 15:45:46    

FlorentG a écrit :

Mouais, avec un gif, y'a beaucoup plus d'avantages : s'affiche sans JS et permet de spécifier l'attribut alt pour ceux qu'affichent pas les images ;)


D'un autre côté si tu n'as pas JS, le popup de la barre d'activité ne s'est pas ouvert ;)


Message édité par ratibus le 21-03-2005 à 15:46:58
Reply

Marsh Posté le 21-03-2005 à 15:57:43    

Justement, il ne faut jamais de popup, ou alors fournir une alternative

Reply

Marsh Posté le 21-03-2005 à 16:02:51    

Dans ce cas présent, le popup est "optionnel".
Si JS n'est pas activé l'upload marche quand même ;)

Reply

Marsh Posté le 21-03-2005 à 16:04:00    

Ok :jap:

Reply

Marsh Posté le 21-03-2005 à 17:31:26    

Dans mon cas le popup ne pose aucun problème, car le but est d'être utilisé en intranet, sur un parc de machine identique sans pop up blocker et avec js activé.
 
Je l'ai d'ailleurs intégré ce matin à mon application. Et cela marche vraiment très bien.
 
merci :jap:


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed