8791 sujets

Développement web côté serveur, CMS

Bonjour à tous.

Je vous explique mon souci.
J'ai une page html "uploads00.html" qui est une page de site classique.
Cette page est chargée d'envoyer des fichiers dans un dossier du site.
Tout le code fonctionne bien.

Mon seul souci est "l'esthétique"...
J'aurais voulu :
1. rester sur la page uploads00.html, avec
2. en même temps que les uploads s'effectuent,
que, pour chaque fichier $srcfichier[$i],
des messages de suivi des opérations $etat[$i],
s'affichent dans cette page html
(dans la 3e colonne de chauqe ligne de la table);

Je n'y arrive pas...
Pourquoi ???
Comment y arriver ???
Merci d'avance pour votre aide.
Bon weekend à tous.



Voici "uploads00.html" :


      ...
      ...
      <form name="form1" method="post" action="php/upload.php" enctype="multipart/form-data">
        <table width="845" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td width="85" height="27">Fichier 01</td>
            <td width="635" height="27">
        <div class="fileinputs">
            <input type="file" id="file01" name="file01" class="file" onchange="getfile01();" > 
            <div class="fakefile"> 
            <input type="text" id="filevisible01" class="filevisible" size="75" style="vertical-align: middle">
            <img src="images/parcourir01_on.gif" width="127" height="20" style="vertical-align: middle"/></div>            </div></td>
            <td width="125"  height="27"><a href="<?php echo $etat[1]; ?>"></a></td>
          </tr>
          ...
          ...
          ...
          <tr>
            <td width="85" height="27">&nbsp;</td>
	    <td width="635"><INPUT border=0 src="images/envoyer_on.gif" type=image Value=submit align="middle"></td>
            <td width="125"  height="27"></td>
          </tr>
        </table>
      </form>
      ...
      ...




Voici "upload.php"


<?php
	...
	...
	...
	for ($i=0; $i < 10; $i++) {
		$etat[$i+1] = "En cours";
		...
		switch($srcfichier[$i]['error']) {
			case UPLOAD_ERR_OK:
				$etat[$i+1] = "Terminé avec succès !"; 
				break;
			case UPLOAD_ERR_INI_SIZE:
				$etat[$i+1] = "Trop volumineux ! (PHP)";
				break;
			case UPLOAD_ERR_FORM_SIZE:
				$etat[$i+1] = "Trop volumineux ! (FORM)";
				break;
			default:
				$etat[$i+1] = "Erreur générale !";
		}
	}
	...
	...
        Header("Location: ../uploads00.html");
?>

Modifié par jytest (16 Oct 2010 - 16:58)
Salut,

A vrai dire, ce que tu demandes me semble un peu complexe au vu du code actuel.
Si tu veux actualiser au fur a mesure l'état de tes upload, il te faudra passer par ajax.

Si tu veux seulement afficher le résultat de tes uploads une fois qu'il sont terminés, il te faudra au moins:
- passer ton fichier html en php,
- inclure le fichier upload.php au debut du fichier (si le formulaire a été validé),
- et ensuite afficher l'état de tes upload dans las cases de ton tableau.

autrement dit, il te faut rendre ton script (upload00) dynamique, en insérant des variables que tu initialises au début de ton script.

exemple:


<?php
// début du fichier
if(!empty($_POST)){ // si le formulaire a été validé

    // ... inclure le script upload.php qui définira la valeur de la variable:
    // $etat[1]='fichier uploadé';

}else{ // sinon on met les variables a vide
    $etat[1]='';
}
?>

// et dans ton formulaire, dans la 3eme colonne:

...
<td><?php echo $etat[1]; ?></td>
...
Je comprends rien.
C'est trop compliqué pour moi.
Peux-tu pousser un peu plus loin ton raisonnement ?