[Acceptabilité] Upload une image et l'afficher

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 : [Acceptabilité] Upload une image et l'afficher

[Acceptabilité] Upload une image et l'afficher

par kitten13 » 12 juin 2009, 20:17

Bonjour et merci d'avance à tous ceux qui m'aideront.

J'ai un formulaire basic avec un champ input type file pour uploader une image. Au moment de la validation et du test des champ le formulaire et ré afficher si y'a une erreur et je perds la valeur du champ input type file logique donc.

Dans un souci d'acceptabilité et pour éviter de décourager l'internaute à renseigner de nouveaux le champ en question, je souhaite faire l'upload de l'image en même temps que le test et si le formulaire et ré afficher à cause d'une erreur alors afficher l'image envoyer précédemment et récupérer comme valeur le chemin de la photo dans le répertoire upload.

Pour illustrer ma question voici un formulaire www2.leboncoin.fr/ai/form/5, si vous renseigner seulement une photo et envoyer le formulaire va être renvoyer après le test mais la photo à était uploader.

Et voici mon formulaire simplifier pour éviter de vous noyez dans le code:

Code : Tout sélectionner

<?php if ($_POST['do'] == "post") // si envoi formulaire on fait une vérification { //ici les test des champs } if ($_POST['do'] == "post" && !$err) // Si pas d erreur on envoie le formualire { //l'envoi, l'insert dont la parti upload photo // Upload images if (count($_FILES['pic']['tmp_name'])) { $ipval = ipval(); $uploaderror = 0; $uploadcount = 0; foreach ($_FILES['pic']['tmp_name'] as $k=>$tmpfile) { if ($tmpfile) { $thisfile = array("name"=>$_FILES['pic']['name'][$k], "tmp_name"=>$_FILES['pic']['tmp_name'][$k], "size"=>$_FILES['pic']['size'][$k], "type"=>$_FILES['pic']['type'][$k], "error"=>$_FILES['pic']['error'][$k]); // Check size images if ($_FILES['pic']['size'][$k] > $pic_maxsize*1000) { $uploaderror++; } elseif (!isValidImage($thisfile)) { $uploaderror++; } else { $newfile = SaveUploadFile($thisfile, "{$path_escape}{$datadir[adpics]}",$_POST['adtitle'], TRUE, $images_max_width, $images_max_height); if($newfile) { $sql = "INSERT INTO $t_adpics SET adid = $adid, isevent = '$data[isevent]', picfile = '$newfile'"; mysql_query($sql); if (mysql_error()) { echo "<span class=\"error\">Error uploading $_FILES[pic][name]</span><br>"; $uploaderror++; } else { $uploadcount++; } } else { $uploaderror++; } } } elseif ($_FILES['pic']['name'][$k]) { $uploaderror++; } } if (!$in_admin && $uploadcount) { //echo "<p>$lang[PICTURES_UPLOADED]: $uploadcount</p>"; } if($uploaderror) { if($in_admin) $err .= "$uploaderror pictures could not be uploaded"; else echo "<p class=\"err\">$lang[PICTURES_NOT_UPLOADED]: $uploaderror</p>"; } } } // Ensuite mon formulaire classique ?> <form action="post.php" method="post" name="Post" enctype="multipart/form-data"> <?php for ($i=1; $i<=$pic_count; $i++) { ?> <input style="margin-bottom:2px;" type="file" name="pic[]" size="35"><br> <?php } ?> <input name="do" type="hidden" id="do" value="post"> <input type="submit" value="Valider" name="send"> </form>
Encore merci pour votre aide. ;)