IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Upload une image et l'afficher


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 101
    Par défaut Upload une image et l'afficher
    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 au cause d'une erreur alors afficher l'image envoyer précédemment et récupérer comme valeur le chemin de la photo ds 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 : 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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?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.

  2. #2
    FoxLeRenard
    Invité(e)
    Par défaut
    Désolé, mais ça fait tard ce soir alors voici deux PHP
    mets les dans la racine de ton web,
    crées un répertoire 0temp/puis test ...

    Aprés ça tu n'auras plus qu'a adapter

    upload_base_saisie.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
     
     
    <?PHP             
    if (isset($_GET["message"])) $message=trim($_GET["message"]);
        else $message="";
    if (isset($_GET["Limg"])) $Limg=trim($_GET["Limg"]);
        else $Limg="";
    ?>
    <html><body>
    <br /><br /><br />
    <p align=center>
    <?PHP
    echo ("".$message."<br />");
    if ($Limg!="") echo ("<img src='".$Limg."' alt='' ><br />");
    ?>
     
    <br /><br /><br />
    <form name="formulaire" method="POST"
     action="upload_base_upload.php"  enctype="multipart/form-data" >
     <input type="hidden" name="MAX_FILE_SIZE" value="40000" />
     <input id="fichier1"  name="fichier1" type="file"  /><br />
     <input value="Valider" name="submit" type="submit" />
    </form>
    </p>
    </body>
    </html>

    upload_base_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
     
     
    <?php
    if (isset($_FILES['fichier1'])) $LeFic=trim($_FILES['fichier1']['name']);
        else $LeFic="";
    $message="";
    if(  $LeFic!="" )
     {
     $poid_max="40000"; 
     $destin="0testx/"; 
     /* === attention le repertoire doit etre chmod 777 =============*/
     $taille = getimagesize($_FILES['fichier1']['tmp_name']);
     $poid = filesize($_FILES['fichier1']['tmp_name']); 
     $message="";
     
     if(substr($LeFic,-3) !="jpg")
       {$message="L image doit etre au format jpeg jpg";}
     if ($poid>$poid_max)
      {$message=" l image est trop lourde ... 40 Ko maxi";}
     if ($poid<=$poid_max && $message=="")
      {
       // === on supprime les accents et les espaces du nom de l'image 
       $LeFic = strtr($LeFic,  "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",   
        "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");  
       // === on supprime les espaces
       $LeFic=str_replace(" ","_",$LeFic);
       // === on met en minuscule
       $LeFic=strtolower($LeFic); 
       $newnom=$destin.$LeFic;
       if (file_exists($destin.$LeFic))
         {
            $message="L image est déjas sur le site web";
         }
         else
          {
          copy($_FILES['fichier1']['tmp_name'],$destin.$LeFic);
          $imagefile=$destin.$LeFic;
          $src_img = imagecreatefromjpeg($imagefile);
          $message="L image ".$newnom." est copiée";
         }
      }
     }
     
    $Limg=$imagefile;
    print "<script type='text/javascript'>window.location='upload_base_saisie.php?Limg=".$Limg."&message=".$message."'</script>";
    exit;
    ?>

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 101
    Par défaut
    1000 mercis pour ton aide FoxLeRenard, donc j'ai testé ton code est il fonctionne bien, mais maintenant je butes sur comment l'adapter au miens, car je doit l'implémenter au niveau du test si je me trompe, donc après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($_POST['do'] == "post")

  4. #4
    FoxLeRenard
    Invité(e)
    Par défaut
    Bonsoir,

    ça a l'air plus compliqué, du reste je ne vois absolument pas a quoi sert ton champ input hidden ??

    Pour le reste lit exactement ce qu'il faut faire pour un fichier et adaptes a ton cas,

    La seul différence est la multi saisie, et que ton form est dans le même PHP ce qui va trés bien aussi.

    Quand au Mysql a toi de corriger , dans mon script le nom final du fichier avec son chemin est $newnom

  5. #5
    Inactif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 101
    Par défaut
    Re,

    Oui tu as raison pour le champ hidden, il ne sert à rien donc supprimer, le truc que je pige pas pour l'implémentation de ton code c'est ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <form name="formulaire" method="POST"
     action="upload_base_upload.php"  enctype="multipart/form-data" >
    je peut pas avoir un form dans un autre form

    Si tu veut jeter un oeil sur le formulaire complet fait le moi savoir.

  6. #6
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par kitten13 Voir le message
    Re,

    Oui tu as raison pour le champ hidden, il ne sert à rien donc supprimer, le truc que je pige pas pour l'implémentation de ton code c'est ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <form name="formulaire" method="POST"
     action="upload_base_upload.php"  enctype="multipart/form-data" >
    je peut pas avoir un form dans un autre form

    Si tu veut jeter un oeil sur le formulaire complet fait le moi savoir.
    Ton post est bien, pas besoins du mien,
    mais a la reception mets les valeurs de tes input a la place des miennes !

    Allez je te laisses bosser

Discussions similaires

  1. [AJAX] upload une image et l'afficher
    Par lenetfm dans le forum AJAX
    Réponses: 8
    Dernier message: 23/05/2009, 15h47
  2. uploader une image sur le serveur
    Par kespy13 dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 20h01
  3. [Image]Lancer l'api du scanner pour uploader une image ?
    Par mikemead dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 30/03/2006, 20h27
  4. [Upload] uploader une image avec move_uploades_file
    Par pod1978 dans le forum Langage
    Réponses: 6
    Dernier message: 31/01/2006, 13h50
  5. Uploader une image à partir d'un formulaire ?
    Par netwebzone dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2005, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo