Tranfert photo par php

Résolu
bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   -  
Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai un dossier dans mon serveur qui se nomme avendrenp ou sont stoké mes photos d,annonce classés

les photos sont classé par id

ex 1-0.jpg 1 est le id et 0 le numero de la photo

j'aimerait transferer ces photos dans un dossier avendrep quand l'annonce est activée

comment devrais-je my prendre

merci

6 réponses

  1. redafillali Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    Voila le code il ne faut que changer les répertoire

    <?php
    if(isset($_FILES['photo']))
    {
    // params
    unset($erreur);
    $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
    $taille_max = 3000000;
    $dest_dossier = '../photos/';
    // utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
    // 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 3Mb !';
    }
    // 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

    ?>
    <html>
    <body>
    <!-- Erreur ? -->
    <?php
    if(isset($erreur)){
    echo '<p>', $erreur ,'</p>';
    }
    ?>
    <!-- Formulaire -->
    <!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
    <form name="form" method="POST" action="<?php echo $editFormAction; ?>" enctype="multipart/form-data">
    <!-- Limiter la taille des fichiers à 500Ko -->
    <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
    <fieldset>
    <legend>Envoi de fichiers</legend>
    <!-- champs d'envoi de fichier, de type file -->
    <p>
    <label for="photo">Photo : </label>
    <input type="file" name="photo" />
    <!-- bouton d'envoi -->
    </p>
    <p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
    </legend>
    </fieldset>

    <input type="hidden" name="MM_insert" value="form">
    </form>
    </body>

    </html>

    bonne chance
    http://freecaell.blogspot.com/
    0
    1. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      genial ton code mais ce n est pas tout a fait ce que j ai de besoin

      le fichier est déja formaté et deja sur le serveur je n'ai donc pas besoin du formulaire et de ce code

      tout ce que je veut faire c'est prendre ma photos qui est sur un dossier du serveur et la déplacer tout simplement merci
      0
  2. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
     
    Pour cela il faut renommer le fichier.
    Par exemple, le fichier de code "deplacer.php" et "photo.jpg" sont dans le dossier "source1". Tu veux déplacer "photo.jpg" dans "source2", qui est dans le même dossier que source 1.

    Il faut utiliser cette commande à partir de "deplacer.php" :
    rename("photo.jpg", "../source2/photo.jpg");

    Bye ;)
    0
    1. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      je croit qu on ne se comprend pas je ne veut pas renommer mon fichier il a deja le nom que je veut

      je veut seuleument le COPIER dans un autre dossier du serveur
      0
    2. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      Nom de dieu, les gens, mais réfléchissez ! C'est la même commande ! Il y a une expresion en Belgique "Voyez plus loin que le bout de votre nez" qui veut dire "Mais allé quoi réfléchis !"
      copy("photo.jpg", "../source2/photo.jpg");
      0
    3. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      donc je copie avec cette fonction ma variable image qui contient la photo ds le dossier

      si je comprend bien le photo.jpg est le fichier source et le reste est la cible
      j essaier ca et je revient

      merci
      0
    4. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      Euh... Si ton image est une variable en PHP, ouverte avec la librairie GD, tu peux l'enregistrer. L'exemple que je t'ai donné est pour copier un fichier.
      Si c'est pour une imagedans une variable PHP, pour (par exemple) une image JPEG, c'est imagejpg($image, "../source2/photo.jpg");
      Bye ;)
      0
    5. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      voila j ai essayé la methode et voici ce qu il en ressort

      Warning: copy(55-0.jpg) [function.copy]: failed to open stream: No such file or directory in /home/auto7837/public_html/publieravendre1.php on line 290

      Warning: copy() [function.copy]: Filename cannot be empty in /home/auto7837/public_html/publieravendre1.php on line 291

      voici le code que j'ai utilisé

      copy("$image1", "/home/auto7837/public_html/photos/avendrenp/");
      copy("$image2", "/home/auto7837/public_html/photos/avendrenp/");

      $image 1 contient une image

      $image 2 ne contient rien
      0
  3. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
     
    Salut !

    copy() copie les fichiers sur le serveur. $image1 contient une image, GD, ou bien l'adresse d'une image sur le serveur ?

    Si c'est sur le serveur, d'accord. Attention, $image2 ne peut pas être vide, supprime cette ligne.

    Si c'est une image en GD, alors il faut l'enregistrer :
    imagejpeg($image1, ""/home/auto7837/public_html/photos/avendrenp/");

    Bye ;)
    0
    1. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      ca peut etre un peu compliqué

      j'ai en fait image de 1 a 5 et elle sont soit pleine ou vide car c est une annonce classé le client peut en mettre une ou plusieurs je vais te donne mon script d'ajout d'image peut etre ca peut t aider

      le premier chifre de l'image est le id et le deuxieme est le numero de l image

      ex: 52-0.jpg id 52 photo1

      merci

      $i=0; $v=0; for($j=0; $j<5; $j++) { $image[$j]=''; $fn[$j]=''; }
      for($nbi=1; $nbi<=5; $nbi++) {
      if(!empty($_FILES['image'.$nbi]['tmp_name'])) { $image[$i]=$_FILES['image'.$nbi]; $i++; }
      }
      //AJOUT DES IMAGES
      for($j=0; $j<$i; $j++) {
      list($width, $height, $type, $attr)=getimagesize($image[$j]['tmp_name']);
      if($image[$j]['size']>524288 && !$image[$j]['error']) { $error="un fichier ne dépassant pas 500ko!!"; }
      if(move_uploaded_file($image[$j]['tmp_name'], '/home/auto7837/public_html/photos/avendrep/'.$id.'-'.$v.'.jpg')) {
      $fn[$v]=$id.'-'.$v.'.jpg';
      $v++;
      }
      unset($image[$j]['tmp_name']);
      }
      0
  4. rudak Messages postés 590 Date d'inscription   Statut Membre Dernière intervention   46
     
    mais tu utilises pas de base de données ?
    0
    1. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      oui ca passe par l intermediaire de la bd
      0
    2. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      le principe est que quand le client fait son annonce les images se mettent ds le repertoire avendrenp par le script lpus haut

      apres quand le client veut modifier son annonce les photos modifiés s'en vont dans le dossier avendrep

      quand le webmaster les a validé elles doivent retourner ds le dossier avendrenp pour qu elle soit affichée sur le site
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. rudak Messages postés 590 Date d'inscription   Statut Membre Dernière intervention   46
     
    mais pourquoi si compliqué ???

    tu peux laisser toutes les images dans un seul fichier...

    tu ajoute un champ "statut" dans la table ou sont stoquées tes images et suivant ce statut tu sais si ton annonce est validée ou pas par exemple..

    0 : annonce non validée
    1 : annonce validée
    2: annonce fermée/vendue/ou autre... (ou DELETE peu importe)

    c'est quand meme plus logique que changer tes images de place
    ca sert a rien ca :)
    0
    1. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      ouais je susi daccord mais mon script est deja tout monté le site est terminé il reste ce petit detail il doit bien avoir une facon de proceder comme ca
      0
    2. rudak Messages postés 590 Date d'inscription   Statut Membre Dernière intervention   46
       
      ca sera un gain de temps pour toi au final de prendre 2 jours pour revoir ton script et avoir un système efficace
      => a chaques annonces entrées 1 ligne dans la table annonce
      => et a chaques photos qui correspond 1 ligne dans la table photo_annonce
      avec une colone id_annonce pour savoir a quelle annonce est reliée l'image...

      quand tu valide l'anonce tu modifie juste le champ valide de la table annonce et ton annonce sera visible

      rien de plus simple a gérer
      0
    3. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      ouais je suis daccord mais pour l instant j'ai besoin d'une solution temporaire svp
      0
    4. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      J'aimerais juste comprendre : Tu as besoin d'une solutino temporaire. Mais tu peux revoir le site 2 jours. Si tu as besoin d'une solution, c'est que le site n'ets pas encore complètement en place, et tu peux donc te permettre de revoir cela. Ou est le problème ?
      Sinon, c'est vrai que par une BD c'est plus simple. Ajoute un champ 'statu' qui vaut 0 pour "posté", 1 pour "modifié", 2 pour "supprimé" etc...
      0
    5. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      je doit mettre le site en ligne tres rapidement que je laissse en main a une autre personne donc c est pour ca que j ai besoin de cette solution je vais le refaire a mon retour
      0
  7. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
     
    Etape pour les FICHIERS existants, et donc PAS en variable PHP :

    Pour COPIER :
    copy($chemin_initial, $chemin_final);
    Pour DEPLACER :
    rename($chemin_initial, $chemin_final);
    Note que tu peux te déplacer dans les dossiers.

    Exemple :
    copy("dossier/photo.jpg", "../source/photo.jpg");

    En absolu, cela déplacera /dossierInitial/dossier/photo.jpg VERS /source/photo.jpg ; Bien entendu dossierInitial est le dossier contenant la page PHP.

    Etape pour les images en VARIABLE PHP :
    Enregistrer les images selon leur extension.
    imagejpeg($handle, $chemin_final); pour une image JPEG en variable PHP. Handle étant ouvert avec createimagefromjpeg() ou bien une autre.

    Pour info, c'est le chemin relatif, pas le chemin absolu qu'il faut utiliser. Donc, pas /home/auto..., mais bien ../source/ (par exemple).
    0
    1. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      je suis vrm désolé mais je ne suis pas sur de bien comprendre

      mon image est dans le dossier avendrep et sa variable est $image1 et je veut la transferer dans le dossier avendrenp

      je ne comprend pas le source et si ma variable ne contient aucune image je fait quoi
      0
    2. bretonm2004 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   2
       
      voila ce que j ai pour l instant

      $id = $_POST['id'];
      $email = $_POST['email'];
      $idinsert=$id;
      $sql="SELECT * FROM avendresemipubliee WHERE id=$id ";
      $req=mysql_query($sql) or die(mysql_error());
      while($row=mysql_fetch_array($req)) {
      $id=$row['id']; $typedannonce=$row['typedannonce']; $marque=$row['marque']; $autres=$row['autres']; $modele=$row['modele']; $prix=$row['prix']; $negociable=$row['negociable']; $annee=$row['annee']; $etat=$row['etat']; $carburant=$row['carburant']; $kilometrage=$row['kilometrage']; $transmission=$row['transmission']; $immatricule=$row['immatricule']; $climatisation=$row['climatisation']; $audio=$row['audio']; $cylindre=$row['cylindre']; $puissance=$row['puissance']; $consommation=$row['consommation']; $couleurinterieure=$row['couleurinterieure']; $couleurexterieure=$row['couleurexterieure']; $telephone=$row['telephone']; $email=$row['email']; $message=$row['message']; $date=$row['date']; $image1=$row['image1']; $image2=$row['image2']; $image3=$row['image3']; $image4=$row['image4']; $image5=$row['image5'];

      $i=0; $v=0; for($j=0; $j<5; $j++) { $image[$j]=''; $fn[$j]=''; }
      for($nbi=1; $nbi<=5; $nbi++) {
      if(!empty($_FILES['image'.$nbi]['tmp_name'])) { $image[$i]=$_FILES['image'.$nbi]; $i++; }
      }
      copy("$image1", '/home/auto7837/public_html/photos/avendrenp/'.$id.'-'.$v.'.jpg');
      {

      mysql_query("UPDATE avendrepubliee SET typedannonce='{$typedannonce}', marque='{$marque}', autres='{$autres}', modele='{$modele}', prix='{$prix}', negociable='{$negociable}', annee='{$annee}', etat='{$etat}', carburant='{$carburant}', kilometrage='{$kilometrage}', transmission='{$transmission}', immatricule='{$immatricule}', climatisation='{$climatisation}', audio='{$audio}', cylindre='{$cylindre}', puissance='{$puissance}', consommation='{$consommation}', couleurinterieure='{$couleurinterieure}', couleurexterieure='{$couleurexterieure}', telephone='{$telephone}', email='{$email}', message='{$message}', image1='{$fn[0]}', image2='{$fn[1]}', image3='{$fn[2]}', image4='{$fn[3]}', image5='{$fn[4]}' WHERE id='{$id}';");
      }

      mais j ai une erreur Parse error: syntax error, unexpected $end in /home/auto7837/public_html/publieravendre1.php on line 340
      0
    3. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      Tu as oublié une accolade de fin } pour la boucle
      while($row=mysql_fetch_array($req)) { 
      Place '}' là où la boucle s'arrête.
      Oublei la variable PHP. Ce n'est pas un handle, c'est juste l'emplacement de l'image.
      Tu peux me donner un exemple de $image1 (mais pas vide) ?
      0