Upload image + formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Upload image + formulaire

probleme de chargement

par yola26 » 16 sept. 2005, 16:02

oulala

j'ai mis dans mon formulaire un champ upload et en dessous une liste déroulante permettant d'afficher le contenu du dossier ou sont uploader les images. Mais lorsque je clique sur envoi. Cela ne fonctionne pas ! Il faudrait qu'il envoie l'image dans le dossier à l'aide d'un javascript pour mettre à jour la liste déroulante sans recharger la page simplement en réactulisant la liste déroulante. je vous transmets le code :

Code : Tout sélectionner

<?php if(isset($erreur)){ echo '<p>', $erreur ,'</p>'; } ?> <form method="POST" action="xxx.php" enctype="multipart/form-data"> <table border="0" width="445" id="table1"> <tr> <td colspan="2"><font size="4" face="Verdana">Fiche Technique de l'utilisateur</font></td> </tr> <tr> <td width="125"><b><font face="Verdana" size="2">Utilisateur :</font></b></td> <td width="310"><select size="1" name="utilisateur"> <? for ($cpt = 0; $cpt < count($tab); $cpt++) { echo '<option value="'.$tab[$cpt]['prenom'].' '.$tab[$cpt]['nom'].'">'.$tab[$cpt]['prenom'].' '.$tab[$cpt]['nom'].'</option> '; } ?> </select></td> </tr> <tr> <td width="125"><b><font face="Verdana" size="2">titre :</font></b></td> <td width="310"><input type="text" name="titre" size="20"></td> </tr> <tr> <td width="125"><b><font face="Verdana" size="2">description :</font></b></td> <td width="310"><textarea rows="6" name="description" cols="35"></textarea></td> </tr> <?php if(isset($_FILES['photo'])) { // params unset($erreur); $extensions_ok = array('png', 'gif', 'jpg', 'jpeg'); $taille_max = 100000; $dest_dossier = 'c:/Apps/'; // vérifications if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) ) { $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !'; } elseif( file_exists($_FILES['photo']['tmp_name']) and filesize($_FILES['photo']['tmp_name']) > $taille_max) { $erreur = 'Votre fichier doit faire moins de 500Ko !'; } // copie du fichier if(!isset($erreur)) { $dest_fichier = basename($_FILES['photo']['name']); // formatage nom fichier // enlever les accents $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); // remplacer les caracteres autres que lettres, chiffres et point par _ $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier); // copie du fichier move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier); } } ?> <tr> <td width="115"><b><font size="2" face="Verdana">Envoi photo :</font></b></td> <td width="306" colspan="2"> <input type="hidden" name="MAX_FILE_SIZE" value="500000" /> <input type="file" name="photo" /><input type="submit" name="envoi" value="Envoi" /></td> </tr> <tr> <td width="115"><font face="Verdana" size="2"><b>Photo du chorègien :</b></font></td> <td width="105"><select size="1" name="inscription_avatar" onChange ="if (VersionNavigateur(3.0,4.0)) imgDepart1.src='avatar/avatar_base/' + form.inscription_avatar.options[form.inscription_avatar.selectedIndex].value + '.gif';"> <? $dossier = opendir ("avatar/avatar_base/"); $i = 0; while ($fichier = readdir ($dossier)) { if ($fichier != "." && $fichier != ".." && $fichier != "index.php" && $fichier != "avatar_base_temp") { $fichier = substr($fichier, 0, strlen($fichier)-4); if ($fichier == 'photo') { echo '<option value="'.$fichier.'" selected>'.$fichier.'</option>'; $fichier1 = $fichier; } else { echo '<option value="'.$fichier.'">'.$fichier.'</option>'; } $i = $i + 1; } } closedir ($dossier); ?>
Dois-je mettre 2 <form> l'un pour l'upload du fichier et l'un pour l'envoi du formulaire dans la base de donnée ? enfin comment puis-je faire

par yola26 » 15 sept. 2005, 19:31

pour ceux qui veulent lister un répertoire à l'aide d'un menu déroulant voici la solution :
    <?
           if ($dir = @opendir("."))
           {
               while (($file = readdir($dir)) !== false)
               {
                   if($file != ".." && $file != ".")
                   {
                       $filelist[] = $file;
                   }
               }
               closedir($dir);
           }
           ?>
<form>
           <select name="selected_dir" >
           <?php
           asort($filelist);
           while (list ($key, $val) = each ($filelist))
           {
               echo "<option>$val</option>";
           }
           ?>
            </select>
</form>

par yola26 » 15 sept. 2005, 19:13

le but est d'uploader un fichier à partir du formulaire à l'aide d'une commande php ou javascript afin de réactualiser la liste des fichiers présents dans le répertoire tout en gardant déjà les informations déjà rempli dans le formulaire puis enregistrer dans la base de donnée le champ nom, prenom, chemin d'accès de l'image. L'idée c'est de pouvoir tout faire sur la 1 iere page sans être obligé d'avoir 2 fichiers pour réaliser cette opération

par ouckileou » 15 sept. 2005, 19:01

pour parcourir un répertoire tout est dans la doc, avec un exemple :
http://fr3.php.net/readdir

par contre pour ton premier problème j'ai eu du mal à suivre donc...

par yola26 » 15 sept. 2005, 18:59

Je te remercie pour le lien, mais j'étais déjà aller regarder. j'ai compris comment uploader un fichier ce n'est pas vraiment le probleme c'est surtout d'afficher une liste déroulante contenant la liste des fichiers stockés dans un répertoire .

par Cyrano » 15 sept. 2005, 18:58

Pour te guider, il y a un tuto exprès pour ça sur le site

Upload image + formulaire

par yola26 » 15 sept. 2005, 18:53

De retour,

bonjour j'aimerai savoir la technique pour obtenir ceci :

Objectifs
stocker en base uniquement le nom du fichier, et avoir en variable de config le chemin absolu vers le répertoire de stockage.

En détails
J'ai mon formulaire avec des champs à remplir comme nom, titre, prénom et j'ai un champ pour uploader une image et un champ pour sélectionner dans une liste déroulante les images uploader dans un répertoire ! Mon but est d'arrivé à lorsque j'upload le fichier image et que j'ai rempli mes autres champs à uploader le ficher tout en gardant les données inscrites dans les champs et qu'il me réactualise la liste déroulante ou se trouve mon fichier uploadé . Puis après je n'ai plus qu'à cliquer sur envoyer !