Upload

arnaud321
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 47
Inscription: 15 Avr 2005

Upload

Message le Lun Déc 24, 2007 11:25

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: Tout sélectionner
$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


mikaelka
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 30
Inscription: 24 Déc 2007

Message le Lun Déc 24, 2007 14:14

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.
Dernière édition par mikaelka le Lun Déc 24, 2007 16:18, édité 1 fois.

arnaud321
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 47
Inscription: 15 Avr 2005

Message le Lun Déc 24, 2007 15:16

Re,

Peut tu m'expliquer un peut plus, je suis amateur et non pro du php et j'ai quelques lacunes.

Arnaud


mikaelka
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 30
Inscription: 24 Déc 2007

Message le Lun Déc 24, 2007 16:17

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...).

arnaud321
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 47
Inscription: 15 Avr 2005

Message le Mer Déc 26, 2007 9:53

Re,

Peut tu me donner l'exmple concret, je suis perdu.

Arnaud


mikaelka
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 30
Inscription: 24 Déc 2007

Message le Mer Déc 26, 2007 15:16

Code: Tout sélectionner
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.

arnaud321
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 47
Inscription: 15 Avr 2005

Message le Jeu Déc 27, 2007 15:24

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


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8295
Inscription: 23 Nov 2005

Message le Jeu Déc 27, 2007 15:46

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 ?

arnaud321
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 47
Inscription: 15 Avr 2005

Message le Jeu Déc 27, 2007 16:00

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


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8295
Inscription: 23 Nov 2005

Message le Jeu Déc 27, 2007 16:13

A la place de :

mikaelka a écrit:[code]if($_FILES['photo']['size'])
{


J'aurais plutôt fait :

[code]if (isset($_FILES['photo']['tmp_name']) && ($_FILES['photo']['tmp_name'] != ''))[/code]

arnaud321
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 47
Inscription: 15 Avr 2005

Message le Jeu Déc 27, 2007 17:46

Re,

Merci à vous deux mais il me reste encore une chose qui ne cloche pas? l'upload c'est ok par contre quand il ni y a pas d'image il met dans la base le début de "l'image http://www.monsite.com/fichiers/copie_

Comment résoudre ce probleme.

Arnaud


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8295
Inscription: 23 Nov 2005

Message le Jeu Déc 27, 2007 17:57

arnaud321 a écrit:Re,

Merci à vous deux mais il me reste encore une chose qui ne cloche pas? l'upload c'est ok par contre quand il ni y a pas d'image il met dans la base le début de "l'image http://www.monsite.com/fichiers/copie_

Comment résoudre ce probleme.

Arnaud


A quoi ressemble ton ordre SQL pour l'INSERT ? A mon avis y'a une partie qui doit être codée en dur avec le début de l'url du fichier.

arnaud321
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 47
Inscription: 15 Avr 2005

Message le Jeu Déc 27, 2007 18:02

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

arnaud321
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 47
Inscription: 15 Avr 2005

Message le Jeu Déc 27, 2007 18:04

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


mikaelka
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 30
Inscription: 24 Déc 2007

Message le Dim Déc 30, 2007 22:10

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

Code: Tout sélectionner
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: Tout sélectionner
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 ;)

Upload

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités