Bonjour,
je suis entrain de devenir fou, mais c'est probablement parce que je suis débutant
Voici mon problème (je l'ai déjà exposé sur le forum php/formulaire mais je m'aperçoit qu'il s'agit bien d'un problème javascript...) :
lorsque j'essaie de valider un formulaire d'upload de fichier, je voudrai , si il y a une erreur, que celle-ci s'affiche dans la même page que le formulaire, dessous et en rouge.
Mais en attendant de recevoir ces informations, je souhaite afficher un message qui demande à l'utilisateur de patienter. Voici comment j'ai créer mon fichier du formulaire test.php :
et voici le fichier de traitement upload.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 <?php if($_POST) { require("upload.php"); } ?> <script language="JavaScript"> <!-- window.onload = function() { document.getElementById("id_div_message_wait").style.display = "none"; document.getElementById("id_button_submit").disabled = ""; document.getElementById("id_button_submit").onclick = function () { document.getElementById("id_div_message_wait").style.display = ""; document.getElementById("id_button_submit").disabled = "disabled"; document.getElementById("id_div_message_returned").innerHTML = ""; } }; --> </script> <form method="POST" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="70000000"> Fichier : <input type="file" name="avatar"> <input type="submit" name="envoyer" id="id_button_submit" value="Envoyer le fichier"> </form> <div id="id_div_message_wait" style="color:red; font-size:9pt; display:none;"> <br /> Veuillez patienter, traitement en cours... <br /> <img id="id_img_upload" src="../general/img/chargeur.gif" /> </div> <?php if( isset($message_upload) && $message_upload != 1) { ?> <div id="id_div_message_returned" style="color:red; font-size:8pt;"> <br /> <?php echo $message_upload; unset($message_upload); ?> </div> <?php } ?>
Ce code fonctionne sous FF, autrement dit, que lorsque je clique sur le bouton de soumission, le message de patienter s'affiche et que dès le traitement terminer, ça s'en va pour laisser place au message d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 <?php sleep(1); $message_upload = 1; $dossier = 'upload/'; $fichier = basename($_FILES['avatar']['name']); $taille_maxi = 100000; $taille = filesize($_FILES['avatar']['tmp_name']); $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.txt'); $extension = strrchr($_FILES['avatar']['name'], '.'); //Début des vérifications de sécurité... if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau { $message_upload = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...'; } if($taille>$taille_maxi) { $message_upload= 'Le fichier est trop gros...'; } if(!isset($message_upload)) //S'il n'y a pas d'erreur, on upload { //On formate le nom du fichier ici... $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... { $message_upload= 'Upload effectué avec succès !'; } else //Sinon (la fonction renvoie FALSE). { $message_upload= 'Echec de l\'upload !'; } } ?>
Mais ça ne marche pas sous IE!!!! c'est à dire, qu'il reste bloqué sur le message "Veuillez patienter, traitement en cours", et je ne vois vraiment pas pourquoi ?!?
Ah oui, et permettez moi de préciser : lorsque je commentairise cette ligne dans mon fichier test.php
Et bien ca marche presque, mais bizzarement l'animation .gif ne bouge plus... par contre ca affiche bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2//document.getElementById("id_button_submit").disabled = "disabled";
1. veuillez patienter...
2. et ensuite le message de retour du formulaire
Voici donc mon problème, si quelqu'un a une idée parce que la... je suis un peu larguer!!
Merci.
Partager