Redimensionner les photos

Résolu
Limahl19 Messages postés 37 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 8 octobre 2008 - 27 août 2008 à 16:05
Limahl19 Messages postés 37 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 8 octobre 2008 - 29 août 2008 à 09:09
Bonjour a tous....

Voila mon probleme et j'espere que vous pourrez m'aider

j'ai un formulaire d'inscription avec lequel les personnes peuvent faire passer une photos qui s'enregistre dans un dossier sur mon serveur garce a la commande

move_uploaded_file

...il se fait sans probleme

mais j'aimerai ensuite redimensionner la foto.... comment faire?

pouvez vous m'aider s'il vous plit

merci

12 réponses

jreaux62 Messages postés 195 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 octobre 2011 32
27 août 2008 à 17:29
J'ai fait ce tuto :
"PHP - REDIMENSIONNER IMAGE + PICTO APRÈS UPLOAD" :
http://www.phpcs.com/tutoriaux/PHP-REDIMENSIONNER-IMAGE-PICTO-APRES-UPLOAD_881.aspx

Tu trouveras ce qui t'interesse dans la partie "MONFICHIER_TRAITER.php"
3
jreaux62 Messages postés 195 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 octobre 2011 32
27 août 2008 à 17:55
Lis bien mon tuto :

Tu devrais pouvoir l'adapter pour redimensionner les photos juste apres l'upload !
- L'utilisateur charge sa photo,
- le fichier "traiter" se charge ensuite de :
1- l'uploader,
2- la redimensionner,
3- l'enregistrer dans ton dossier !
3
jreaux62 Messages postés 195 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 octobre 2011 32
28 août 2008 à 12:55
Quelles sont les "grandes et les "petites" photos ?
Redimensionner a quelle taille ???

Solution possible :
-> 1 fonction "redimimage(repertoire/nomimage, widhtMax, heightMax)" 
- repertoire/nomimage : le chemin vers l'image a redimensionner
- widhtMax et heightMax : les dimensions maxi finales
3
jreaux62 Messages postés 195 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 octobre 2011 32
28 août 2008 à 15:07
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jreaux62 Messages postés 195 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 octobre 2011 32
28 août 2008 à 17:25
<?php
// La requete :$query 'select * from '. $table .' where modele '. $lemodele;
$result = mysql_query($query);
//
// (tu peux avoir plusieurs fiches avec le meme modele)
// ...
// L'affichage :
// tant qu'il y a des fiches
while ($val = mysql_fetch_array($result)) {
  // voir ici ta mise en page
   echo $val["nom"];
  // ...
   echo $val["email"];
}
?>

Pour la mise en page en tableau :
http://www.phpcs.com/tutoriaux/AFFICHAGE-TABLEAU-AFFICHER-DONNEES-DANS-TABLEAU_883.aspx
3
jreaux62 Messages postés 195 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 octobre 2011 32
28 août 2008 à 20:30
...$total mysql_num_rows($result); $row mysql_fetch_array($result);

$foto1 = $row["photo1"];
echo $foto1;

...

Enlève ici le "$row = mysql_fetch_array($result);" :

...

$total = mysql_num_rows($result);

$foto1 = $row["photo1"];
echo $foto1;

...
3
Limahl19 Messages postés 37 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 8 octobre 2008
27 août 2008 à 17:44
ncore merci a toi


j'essaie de trouver et je te redis ca!!!!


 


tres efficace comme petit dalmatien!!!
0
Limahl19 Messages postés 37 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 8 octobre 2008
28 août 2008 à 11:45
salut c'est remoi et bien j'y arrive toujours pas.... lol

je te donne mon code

<?php


 


////////CONNECTION AU SERVEUR VIA UNE AUTRE PAGE <<< include >>>


////Appel de la page de connexion
include("_connexion.php");


 


////////INSERTION D'UNE FICHE <<< INSERT >>>


////Récupération des données basiques du formulaire en méthode POST
 $nom = $_POST ['nom'];
 $prenom = $_POST ['prenom'];
 $adresse = $_POST ['adresse'];
 $ville = $_POST ['ville'];
 $cp = $_POST ['cp'];
 $tel = $_POST ['tel'];
 $email = $_POST ['email'];
 $marque = $_POST ['marque'];
 $modele = $_POST ['modele'];
 $annee = $_POST ['annee'];
 $kilometre = $_POST ['kilometre'];
 $etat = $_POST ['etat'];
 $description = $_POST ['description'];
 $affichercontact = $_POST ['affichercontact'];
 $duree = $_POST ['duree'];


////Récupération des données des photos du formulaire en méthode FILES (non possible en POST)
 //récupération du nom du fichier à transmettre
 $photo1 = $_FILES ['fichier1']['name'];
 $photo2 = $_FILES ['fichier2']['name'];
 $photo3 = $_FILES ['fichier3']['name'];
 $photo4 = $_FILES ['fichier4']['name'];
 $photo5 = $_FILES ['fichier5']['name'];
 
 echo $photo1;


////Récupération de l'extension des fichiers photo 
 $ext1 = strstr ($photo1, '.');
 $ext2 = strstr ($photo2, '.');
 $ext3 = strstr ($photo3, '.');
 $ext4 = strstr ($photo4, '.');
 $ext5 = strstr ($photo5, '.');


////Récuperation de la date de saisi
 $datesaisie = date ('Y-m-d');


////Requête d'insertion des variables
 $insertion = "INSERT INTO $table VALUES ('','$nom','$prenom','$adresse','$ville','$cp','$tel','$email','$marque','$modele','$annee','$kilometre','$etat','$description','$affichercontact','$duree','','','','','','','','','','')";
 mysql_query($insertion) or die ("Ajout de la fiche impossible");


 


////////SELECTION D'UNE FICHE <<< SELECT >>>


////Requete de selection
 $requete = "SELECT * From $table ORDER BY id ASC";
 $result = mysql_query ($requete) or die ("Ne peut pas executer la requete de selection");


////Boucle de selection
 //récupérer l'id, le nom et le prénom de la fiche qui vient d'être créer
 while ($res=mysql_fetch_array($result)) {
  $id = $res ['id'];
  $nom = $res ['nom'];
  $prenom = $res ['prenom'];
 }


 


////////DEPLACEMENT DE L'IMAGE DU CLIENT VERS NOTRE DOSSIER <<< move_uploaded_file >>>


 //dossier de destination du fichier GRAND
    $content_dir = '../IMG/import_image/HD/';


 //dossier de destination du fichier PETIT
 $content_dir_small = '../IMG/import_image/petite/';


 //si formulaire soumis alors....
 if( isset($_POST['upload']) ) {


  //Définition du 'i' initial qui représente le numéro du champs de l'image
  $i=1;
   
   //pour $i=1 et tant qu'il est inférieur ou égal au nombre d'image du formulaire (5) lui rajouter 1
   for ($i=1; $i<=5; $i ++) {




    //fichier temporaire qui récupère le nom du fichier à déplacer
       $tmp_file = $_FILES['fichier'.$i]['tmp_name'];
    
   ////Vérification de l'existence du fichier
       if( !is_uploaded_file($tmp_file) ) {
           echo("Le fichier est introuvable!!!");
       }


   ////Vérification que le fichier soit bien une image
       //variable qui récupére l'extension du fichier
       $type_file = $_FILES['fichier'.$i]['type'];


       if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png') ) {
     echo("Le fichier n'est pas une image!!!");
       }


       //variable qui determine le nom du fichier à copier
       $name_file = $_FILES['fichier'.$i]['name'];
    
    //récupération de l'extension de $name_file
    $extension = strrchr($name_file,'.');
    
    echo $extension;
    echo "
";
 
    //définition du nom de fichier copié dans HD
    $new_fichier = $content_dir . $id . "-" . $nom . "-" . $prenom . "-img" . $i . $extension;


   ////Upload du fichier dans HD
       if( !move_uploaded_file($tmp_file, $new_fichier) ) {
           echo("Impossible de copier le fichier dans $content_dir");
       }


       echo "Le fichier a bien été uploadé!!!";
    
    
     // -------------------------------------------------------------
      // recuperation de l IMAGE de la photo
      // Ouvrir l'image avec la fonction appropriée en fonction de l'extension :
      switch ($extension) {
        case "jpg":
  $imageSource = imagecreatefromjpeg($new_fichier);
           break;
        case "peg": // si jpeg
           $imageSource = imagecreatefromjpeg($new_fichier);
           break;
        case "png":
           $imageSource = imagecreatefrompng($new_fichier);
           break;
        case "gif":
           $imageSource = imagecreatefromgif($new_fichier);
           break;
      }
    
   // dimensions de l image source
     $WSource = imagesx($imageSource);
      $HSource = imagesy($imageSource); 
    
    // -------------------------------------------------------------
      // REDIMENSIONNEMENT et SAUVEGARDE du PICTO
   // -------------------------------------------------------------
      // on definit la largeur max du picto a 100 pixels
       $W = 100;
      // on conserve les proportions
       $H = ($W * ($HSource / $WSource));
      // on cree une image vide aux dimensions du picto
       $imageDest = ImageCreateTrueColor ($W, $H);
      // seulement si la largeur du picto est superieur a $W
       if ($WSource > $W)      
       {
         // redimensionnement du picto
          ImageCopyResampled($imageDest, $imageSource, 0, 0, 0, 0, $W, $H, $WSource, $HSource);
         // sauvegarde du picto sous la forme picto_PICTO
          $PICTO = $content_dir_small . $id . "-" . $nom . "-" . $prenom . "-img" . $i . "-p" . $extension;
         // enregistrement du PICTO avec la fonction appropriée :
          switch ( $extension ) {
          case "jpg":
          case "peg":
          case "bmp":
            imagejpeg ($imageDest, $PICTO);
            break;
          case "gif":
            imagegif ($imageDest, $PICTO);
            break;
          case "png":
            imagepng ($imageDest, $PICTO);
           break;
         }
      }
   // -------------------------------------------------------------


 


////////COPIE DE L'IMAGE DANS LE DOSSIER PETITE <<< copy >>>


    //récupération du nom de fichier copié dans HD
   // $file = $new_fichier;
    
    //définition du nom de fichier à copier dans petites
   // $newfile = $content_dir_small . $id . "-" . $nom . "-" . $prenom . "-img" . $i . "-p" . $extension;


   ////Copie du fichier dans petites
   // if (!copy($file, $newfile)) {   
   //  echo "La copie de $file a échoué...\n";
   // }
    


 


    


  };
 }


 


////////RAJOUT DU NOM DES IMAGES COPIEES DANS LA BASE DE DONNEES <<< UPDATE >>>


 //définition du nom des grandes images
 $foto1 = 'http://www.classic-days.fr/OCCAS/IMG/import_image/HD/' . $id . "-" . $nom . "-" . $prenom . "-img1". $ext1;
 $foto2 = 'http://www.classic-days.fr/OCCAS/IMG/import_image/HD/' . $id . "-" . $nom . "-" . $prenom . "-img2". $ext2;
 $foto3 = 'http://www.classic-days.fr/OCCAS/IMG/import_image/HD/' . $id . "-" . $nom . "-" . $prenom . "-img3". $ext3;
 $foto4 = 'http://www.classic-days.fr/OCCAS/IMG/import_image/HD/' . $id . "-" . $nom . "-" . $prenom . "-img4". $ext4;
 $foto5 = 'http://www.classic-days.fr/OCCAS/IMG/import_image/HD/' . $id . "-" . $nom . "-" . $prenom . "-img5". $ext5;
  
 //définition du nom des petites images
 $petite1 = 'http://www.classic-days.fr/OCCAS/IMG/import_image/petite/' . $id . "-" . $nom . "-" . $prenom . "-img1-p". $ext1;
 $petite2 = 'http://www.classic-days.fr/OCCAS/IMG/import_image/petite/' . $id . "-" . $nom . "-" . $prenom . "-img2-p". $ext2;
 $petite3 = 'http://www.classic-days.fr/OCCAS/IMG/import_image/petite/' . $id . "-" . $nom . "-" . $prenom . "-img3-p". $ext3;
 $petite4 = 'http://www.classic-days.fr/OCCAS/IMG/import_image/petite/' . $id . "-" . $nom . "-" . $prenom . "-img4-p". $ext4;
 $petite5 = 'http://www.classic-days.fr/OCCAS/IMG/import_image/petite/' . $id . "-" . $nom . "-" . $prenom . "-img5-p". $ext5;
    
////Update de fiche créée plus haut dans la base de donnée << UPDATE >>  


 if ($ext1 != "") {


  if ($ext2 != "") {
 
   if ($ext3 != "") {
  
    if ($ext4 != "") {
   
     if ($ext5 != "") {
    
     ////Update des 5 photos
      $modif = "UPDATE $table SET photo1='$foto1', photo2='$foto2', photo3='$foto3', photo4='$foto4', photo5='$foto5', petite1='$petite1', petite2='$petite2', petite3='$petite3', petite4='$petite4', petite5='$petite5' WHERE id='$id'";
      mysql_query($modif) or die ("Modification de $id impossible");
    
     } else {
    
     ////Update des 4 photos
      $modif = "UPDATE $table SET photo1='$foto1', photo2='$foto2', photo3='$foto3', photo4='$foto4', photo5='', petite1='$petite1', petite2='$petite2', petite3='$petite3', petite4='$petite4', petite5='' WHERE id='$id'";
      mysql_query($modif) or die ("Modification de $id impossible");
    
     }
   
    } else {
   
    ////Update des 3 photos
     $modif = "UPDATE $table SET photo1='$foto1', photo2='$foto2', photo3='$foto3', photo4='', photo5='', petite1='$petite1', petite2='$petite2', petite3='$petite3', petite4='', petite5='' WHERE id='$id'";
     mysql_query($modif) or die ("Modification de $id impossible");
    
    }
  
   } else {
  
   ////Update des 2 photos
    $modif = "UPDATE $table SET photo1='$foto1', photo2='$foto2', photo3='', photo4='', photo5='', petite1='$petite1', petite2='$petite2', petite3='', petite4='', petite5='' WHERE id='$id'";
    mysql_query($modif) or die ("Modification de $id impossible");
    
   }
 
  } else {
 
  ////Update d' 1 photo
   $modif = "UPDATE $table SET photo1='$foto1', photo2='', photo3='', photo4='', photo5='', petite1='$petite1', petite2='', petite3='', petite4='', petite5='' WHERE id='$id'";
   mysql_query($modif) or die ("Modification de $id impossible");
    
  }


 } else {


 ////Update de fiche créée plus haut dans la base de donnée << UPDATE >>
  $modif = "UPDATE $table SET photo1='', photo2='', photo3='', photo4='', photo5='', petite1='', petite2='', petite3='', petite4='', petite5='' WHERE id='$id'";
  mysql_query($modif) or die ("Modification de $id impossible");
  
  echo 'AUCUNE PHOTO TRANSMISE...';
    
 }




?>
0
Limahl19 Messages postés 37 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 8 octobre 2008
28 août 2008 à 14:22
pour l'instant la taille je ne sais pas.... peux importe!!!! du moment que sa marche apres on peut adapter... non?

sinon les grandes images provienne d"un formulaire ou on peut mettre 5photo avec un champs fichier parcourir nommé respectivement fichier1, fichier2, ...

le upload marche nickel c'est le reste qui bloque...

les grandes ne sont pas retailler et rentre dans le repertoire hd et les petites sont retaille en 100 de large par exemple puis enregister dasn petites (tous les deux sous dossier de import_image)

jespere que je t'ai un peu eclaire!!!!

merci
0
Limahl19 Messages postés 37 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 8 octobre 2008
28 août 2008 à 15:44
merci je vais le lire....

j'ai une petite question en plus....

merci pour les deux liste lié .... sa marche tres bien......j'y suis enfin arrive

donc je suis tjs dans ma base avec l'id la marque et le modele

c'est surement une question bete....

mais si je veux afficher les modeles ....
je fais un select avec la condition where modele = ....

mais j'aurai forcement plusieures fois le meme modele
alors comment faire pour afficher chaque voiture ayant le meme modele sur une page???????

en resumer quand on fait un select dans une table et que il a plusieures enregistrement comment afficher les differents enregistrement sur une seule page......

merci d'avance
0
Limahl19 Messages postés 37 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 8 octobre 2008
28 août 2008 à 18:12
j'ai reussi a resoudre le probleme avec ce code

<?




///////CONNECTION AU SERVEUR VIA UNE AUTRE PAGE <<< include >>>


////Appel de la page de connexion
include("_connexion.php");


$mix=$_POST['listeB'];
$table = 'test2';


echo $mix.'
';


// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$select = "SELECT * FROM $table WHERE modele='$mix' ";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);


$row = mysql_fetch_array($result);


$foto1 = $row["photo1"];
echo $foto1;


// si on a récupéré un résultat on l'affiche.
if($total) {
    // debut du tableau
    echo ''.\"\n\";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '----
';
  echo ', ';
        echo 'Nom, ';
        echo 'Prénom, ';
      echo 'Adresse, ';
        echo 'Code Postal, ';
      echo 'Ville, ' ;
      echo ''.\"\n\";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.   
    while($row = mysql_fetch_array($result)) {
        echo '----
';
  ?>" width="150"  />, <?
        echo ''.$row["nom"].', ';
        echo ''.$row["prenom"].', ';
      echo ''.$row["adresse"].', ';
        echo ''.$row["cp"].', ';
      echo ''.$row["ville"].', ';
      echo ''.\"\n\";
    }
    echo '
'."\n";
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';


// on libère le résultat
mysql_free_result($result);


?>

le probleme c'est quae quand il y y a qu'un seul enregistrement dans la table... le tableau ne s'affiche pas....

si le modele est present plusieurs fois le tableau s'affiche s'il est present qu'un fois.... juste l(en,tete du tableau s'affiche...;

je sais pas si je suis tres cklair?????
lol j'(ai un peu de mal...
0
Limahl19 Messages postés 37 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 8 octobre 2008
29 août 2008 à 09:09
ben j'ai enlver ce que tu m'as dit, ca change rien... j'ai peut etre fait une erreur dans mon formulaire.....

voici le code du formulaire

<?php


include("_connexion.php");


// 1 table : test2
   $table = 'test2';
  
// les champs : id, marque, modele


// select DISTINCT pour eviter les doublons
   $SQL_A = "SELECT DISTINCT marque FROM $table" ;
   $result_A = mysql_query($SQL_A);
     
// RESULTAT du formulaire :
// dans "dest.php", on recupere le NUM grace a $_POST['listeB']
// (changer le nom du fichier par le fichier de destination)
   $URLdest = 'destv4.php';
  
?>


<html>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title></title>


<script language="JavaScript" type="text/JavaScript">
<!--
   liste_B = new Array()
   liste_B[0] = new Array("------- donnee ------","")
  
<?php


   $k=1;
  
while ($val_A = mysql_fetch_array($result_A)) {   $SQL_B 'SELECT DISTINCT modele FROM '. $table .' where marque ';
   $SQL_B .= '\''. $val_A['marque'] .'\'';
   $result_B = mysql_query($SQL_B);
  
?>


   liste_B[<?php echo $k; ?>]=new Array(<?php
  
   while ($val_B = mysql_fetch_array($result_B)) {
   echo '"'.$val_B['modele'].'",';
   } ?>"")
  
<?php


    $k++;
 
} ?>


function changeliste_B() {
   choix = document.monform.listeA.value
   opt_B="<select name='listeB'>"
   for(i=0;i<liste_B[choix].length-1;i++) {
      opt_B+="<option>"+liste_B[choix][i]+"</option>"
   }
   opt_B+="</select>"
   document.monform.listeB.outerHTML=opt_B
}
-->
</script>


</head>




<form name="monform" method="POST" action="<?php echo $URLdest;?>">
   <select name="listeA" onchange=changeliste_B()>
   <option value="" selected="selected">----- marque -----</option>
<?php


   mysql_data_seek($result_A,0); // movefirst
  
   $k=1;
  
   while ($val_A = mysql_fetch_array($result_A)) {
  
?>


   <option value=<?php echo $k;?>>
   <?php echo $val_A['marque']; ?>
   </option>
  
<?php


    $k++;
   }
  
?>
   </select>
  
   <select name="listeB">
   <option value=0>------- modele ------</option>
  
<?php


   $SQL_C = 'SELECT DISTINCT id,modele FROM '. $table;
   $result_C = mysql_query($SQL_C);
  
   mysql_data_seek($result_A,0); // movefirst
  
   while ($val_C = mysql_fetch_array($result_C)) {
  
?>


   <option value=<?php echo $val_C['modele'];?>>
   <?php echo $val_C['modele']; ?>
   </option>
  
<?php


   }
  
?>


   </select>
  
  

  
  


</form>


 




</html>


<?php


mysql_close();


?>

merci
0
Rejoignez-nous