Upload

Nouveau WRInaute
Bonjour,

Je possede un site avec un formulaire d'upload et je voudrais rendre optionnel "upload de l'image mais je ne sais pas comment faire" du style si il y a une image j'upload sinon je passe.

Code:
$destination="./fichiers/"; 

$pourcent="50";

// on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];
	

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'JPG') && !strstr($type_file, 'JPEG'))
    {
       exit("<img src=\"images/warning.gif \" ><b>L'extension de votre photo n'est pas un JPG ou JPEG merci de resaisir le formulaire avec la bonne extension <a class=\"liens_bleu\" href=\"ajoute-petite-annonce-avec-photo.php\">RETOUR</a></b>");

    }


$fichier_name = time()."_".$_FILES["fichier"]["name"]; 

if (($fichier&& $fichier != "none"))
{ 
    copy($fichier, $destination.$fichier_name);

    $nom = $destination.$fichier_name;
    $nom_copie = $destination.'copie_'.$fichier_name;

    $size =  getimagesize($nom);

    $largeur = $size[0];
    $hauteur = $size[1];

    $x = ($pourcent*$largeur)/100;
    $y = ($pourcent*$hauteur)/100;

   
    $im_out = imagecreatetruecolor($x, $y);
    $im_in = imagecreatefromjpeg($nom);
    

    imagecopyresampled($im_out, $im_in, 0, 0, 0, 0, $x, $y, $largeur, $hauteur);
    imagejpeg($im_out, $nom_copie);
    imagedestroy($im_in);
    imagedestroy($im_out);
unlink("$destination/$fichier_name");
}
Merci de bien vouloir me répondre.

Arnaud
 
Nouveau WRInaute
Tu n'a qu'a tester si le champ est vide ou si le fichier n'existe pas. Tu englobe ton traitement sur le fichier dans un
if($_FILES['photo']['size'])
{ tu fais ton traitement }
//else implicite
j'envoie mon form;

Le if permet d'empecher l'envoie de fichier vide et vérifie si un fichier est envoyé.
Voilà en espérant avoir répondu a ta question.
 
Nouveau WRInaute
J'ai pas trop le temps aujourd'hui mais demain je serai libre.
Sinon pour expliquer brièvement. Tu va tester si l'utilisateur envoie un fichier avec le
if($_FILES['photo']['size'])
-> dans le bloc du if tu fera ton traitement sur le fichier (déplacement, copie ou ce que tu veux...)
-> après le bloc du if tu met tous se qui est commun au deux cas ( cas 1: l'utilisateur envoie un fichier, cas 2 : l'utilisateur n'en envoie pas)
Et c'est tout; si un fichier est up il rentrera dans le if et fera les traitement, sinon il fera juste tout se qu'il y a après (cad l'envoie des autres informations ou autres traitement...).
 
Nouveau WRInaute
Code:
if($_FILES['photo']['size']) 
{
  $destination="./fichiers/";

  $pourcent="50";

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];
   

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'JPG') && !strstr($type_file, 'JPEG'))
    {
       exit("<img src=\"images/warning.gif \" ><b>L'extension de votre photo n'est pas un JPG ou JPEG merci de resaisir le formulaire avec la bonne extension <a class=\"liens_bleu\" href=\"ajoute-petite-annonce-avec-photo.php\">RETOUR</a></b>");

    }


  $fichier_name = time()."_".$_FILES["fichier"]["name"];

  if (($fichier&& $fichier != "none"))
  {
    copy($fichier, $destination.$fichier_name);

    $nom = $destination.$fichier_name;
    $nom_copie = $destination.'copie_'.$fichier_name;

    $size =  getimagesize($nom);

    $largeur = $size[0];
    $hauteur = $size[1];

    $x = ($pourcent*$largeur)/100;
    $y = ($pourcent*$hauteur)/100;

   
    $im_out = imagecreatetruecolor($x, $y);
    $im_in = imagecreatefromjpeg($nom);
   

    imagecopyresampled($im_out, $im_in, 0, 0, 0, 0, $x, $y, $largeur, $hauteur);
    imagejpeg($im_out, $nom_copie);
    imagedestroy($im_in);
    imagedestroy($im_out);
    unlink("$destination/$fichier_name");
  } 
}//endif
else echo('Vous n'avez pas envoyer d'image');

// on fait les autres traitement sur le formulaire si il y en a (exmple : verification de
// la validité des champs...)

Voilà je pense que sa passe comme sa il suffit de tester, tout dépend de l'implémentation de votre système de formulaire.
 
Nouveau WRInaute
Re,

Je pense que je me suis mal expliqué, je voudrais que l'image soit optionel soit il y en a une ou pas cela ne change rien le reste du formulaire est ecrit dans ma base avec le champ photo "vide ou plein" mais de la facon que mon script est fait il faut obligatoirement une photo (comment faire pour le rendre optionel).

Arnaud
 
WRInaute accro
Le script qui t'es présenté ici est une base de départ pour rendre optionnel l'upload d'image sur ton formulaire.

Ce n'est pas ça que tu cherches à faire ?
 
Nouveau WRInaute
oui mais il y a un truc qui ne fonctionne pas il me dit toujours

L'extension de votre photo n'est pas un JPG ou JPEG merci de resaisir le formulaire avec la bonne extension.

Comment puis je faire ?

Arnaud
 
Nouveau WRInaute
Re
Pour ne pas trop changer la structure je voudrais mettre 1no.gif dans ma base et quand il y a une photo copie_12344.jpg pour éviter les doublons de photos.

Merci
 
Nouveau WRInaute
Suite pardon !!!

// ---------- Enregistrement des données dans la base
mysql_query("INSERT INTO annonces VALUES('', '" . $pseudo . "', '" . $pass . "', '" . $mail . "','" . $categorie . "', '" . $titre . "', '" . $description . "', '" . $prix . "', '" . $date . "', '" . copie_.$fichier_name . "', '" . $cp . "', '" . $ville . "', '". 1 ."')");

Arnaud
 
Nouveau WRInaute
Je n'est pas très bien saisi ton problème mais bon moi j'écrirai sa :

Code:
mysql_query("INSERT INTO annonces VALUES('', '$pseudo ', '$pass', '$mail ','$categorie', '$titre', '$description', '$prix', '$date', 'copie_.$fichier_name', '$cp', '$ville', '1')");

Chez moi sa passe...
à la place de sa

Code:
mysql_query("INSERT INTO annonces VALUES('', '" . $pseudo . "', '" . $pass . "', '" . $mail . "','" . $categorie . "', '" . $titre . "', '" . $description . "', '" . $prix . "', '" . $date . "', '" . copie_.$fichier_name . "', '" . $cp . "', '" . $ville . "', '". 1 ."')");

Sinon si tu veux ré-expliquer ton problème ;)
 
Nouveau WRInaute
Re et bonne année tout le monde,

Le script fonctionne bien mais le probleme est que quand il n'y a pas de fichier "image" le formulaire inscrit copie_ dans ma base à la place de 1no.gif. S'il y a un fichier sa donne copie_123456_jpg.

Merci de bien vouloir venir en mon aide.

Arnaud
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut