Page 1 sur 2

Utilisation d'une Class

Posté : 18 janv. 2011, 19:25
par diabless6
Bonsoir,

J'ai trouvé une class, mais ayant pas l'habitude de les utiliser, je n'arrive pas à l'intégrer dans mon code.

Mon script upload des fichiers, et la class est censée redimensionner les fichiers.
include("class_resize.php");

if (file_exists('imgs/' . $_FILES['file']['name'][$key]))
      {
      echo $_FILES['file']['name'][$key] . ' existe déjà !<br><br>';
      }
    else
      {
      move_uploaded_file($_FILES['file']['tmp_name'][$key],
      'imgs/' . $_FILES['file']['name'][$key]);
      echo 'Enregistrée en: ' . 'imgs/' . $_FILES['file']['name'][$key].'<br><br>';
      }
    }
  else
  {
  echo 'Fichier invalide !';
  }
L'appel à la Class :
$thumb = new Image("chemin/$images");
$thumb->width(200);
$thumb->save();
J'ai essayé de créer une fonction et de l'intégrer dans move_uploaded_file, mais bon ça doit pas être ça :?

Auriez-vous une idée ?

Merci

Re: Utilisation d'une Class

Posté : 18 janv. 2011, 20:03
par diabless6
La class fonctionne avec ceci :
$thumb = new Image('imgs/Hydrangeas.jpg');
         $thumb->width(200);
         $thumb->save();
Mais avec ma boucle Foreach, j'ai un petit soucis d'implémentation.

ça se bouscule.... :mrgreen:

Re: Utilisation d'une Class

Posté : 18 janv. 2011, 20:31
par diabless6
J'approche, c'est chaud :mrgreen:
//print_r(scandir("imgs/"));
$imag=scandir("imgs/");
for($i=2;$i<=count($imag);$i++)
{
    echo $imag[$i].' ';

$thumb = new Image($imag[$i]);
         $thumb->width(200);
         $thumb->save();
}
Warning: getimagesize(Hydrangeas.jpg) [function.getimagesize]: failed to open stream: No such file or directory

Mais, il me manque le petit truc :lol:

Re: Utilisation d'une Class

Posté : 18 janv. 2011, 21:16
par moogli
salut,

tu ne fournit pas une image à getimagesize ou alors tu n'a pas les droits pour utiliser le fichier ou le fichier n'existe.

sans le code de la classe on ne pourra pas t'aider.

Pour faire upload + redimensionnement il y a la classe de AB (forum contribution) qui est bien suivie :)


@+

Re: Utilisation d'une Class

Posté : 18 janv. 2011, 21:28
par diabless6
Merci pour ta réponse moogli

Voici le lien:
http://www.jarodxxx.com/index.php?post/ ... ename-save

La class marche, ya pas de soucis, c'est juste que, je cherche comment l'intégrer :roll:

Celle de AB est effectivement une class très complète en l'occurrence. Mais, je vais resté avec la mienne peut être moins complète, mais suffisante pour moi.

Tu as aussi un joli script :wink:
http://www.phpjungle.info/cours/10-comm ... -http.html

Re: Utilisation d'une Class

Posté : 18 janv. 2011, 23:25
par diabless6
ça yier, j'ai réussie, j'en jouirai presque :mrgreen:
$dossier = opendir('imgs/');
   $dir_array = array();
    while (false !== ($file = readdir($dossier)))
        {
        if($file!="." && $file!="..")
            {
            $dir_array[] = $file;
            }
         }
 closedir($dossier);
 foreach ($dir_array as $val)
     {   $thumb = new Image('imgs/'.$val);
         $thumb->width(200);
         $thumb->save();
     } 
Merci pour ton aide moogli :wink:

Re: Utilisation d'une Class

Posté : 19 janv. 2011, 00:16
par moogli
pour ce qui est de mon code faudrait que je le refasse un peu mieux !

Content que tu ai trouvé ta solution

@+

Re: Utilisation d'une Class

Posté : 19 janv. 2011, 10:58
par stealth35
tu pourrais utiliser FilesystemIterator ca serait plus simple
$dir = new FilesystemIterator( 'imgs/');

foreach ($dir as $file)
{  
    $thumb = new Image($file->getRealpath());
    $thumb->width(200);
    $thumb->save();
}

Re: Utilisation d'une Class

Posté : 19 janv. 2011, 15:12
par diabless6
Hum, stealth35,

Ya pas une erreur dans l'appel de la class ? :lol:
$dir = new SplFileInfo( 'imgs/');

foreach ($dir as $file)
{  
    $thumb = new Image($file->getRealpath());
    $thumb->width(200);
    $thumb->save();
}
http://www.php.net/manual/fr/splfileinf ... alpath.php

Enfin, je n'ai pas l'habitude d'utiliser des class et la poo avec douceur svp :roll:

Re: Utilisation d'une Class

Posté : 19 janv. 2011, 15:13
par stealth35
FilesystemIterator pas SplFileInfo

Re: Utilisation d'une Class

Posté : 19 janv. 2011, 15:39
par diabless6
FilesystemIterator pas SplFileInfo
Ha bon* , je dois rien comprendre à l'organisation du site Php, ya un truc qui m'échappe 8-|Merci quand même.

*I think in my head--> Ben, je pige pas car la méthode getRealpath() s'appel avec la class splDileInfo

...

Re: Utilisation d'une Class

Posté : 19 janv. 2011, 15:49
par diabless6
Ha! Eureka, fallait m'expliquer.
C'est quoi un itérateur : http://fr.wikipedia.org/wiki/It%C3%A9ra ... ception%29

Etant un peu c... par nature :mrgreen:

Donc, si je comprends bien, la class FilesystemIterator parcours la class SplFileInfo. Donc c'est la class mère.

Re: Utilisation d'une Class

Posté : 19 janv. 2011, 15:53
par stealth35
FilesystemIterator pas SplFileInfo
Ha bon* , je dois rien comprendre à l'organisation du site Php, ya un truc qui m'échappe 8-|Merci quand même.

*I think in my head--> Ben, je pige pas car la méthode getRealpath() s'appel avec la class splDileInfo

...

chaque iteration de FilesystemIterator te renvoie un SplFileInfo

Re: Utilisation d'une Class

Posté : 19 janv. 2011, 16:12
par diabless6
chaque iteration de FilesystemIterator te renvoie un SplFileInfo
Si c'est pas beau ça la simplicité :mrgreen:
$dir = new FilesystemIterator($chemin);
foreach ($dir as $file)
{
    if($file!="." && $file!="..")
        {
    $unique = md5( uniqid() );
    $thumb = new Image($file->getRealpath());
    $thumb->width(200);
    $thumb->name($unique);
    $thumb->save();
        }
}
Mais, j'ai encore un soucis, car en rajoutant le $thumb->name(renommer), ben j'ai des fichiers en double. :non:
Je pense qu'il va falloir effacer ça :
move_uploaded_file($_FILES['file']['tmp_name'][$key],
      $chemin . $_FILES['file']['name'][$key]);
Que des soucis :roll:

Re: Utilisation d'une Class

Posté : 19 janv. 2011, 16:18
par stealth35
pas besion de faire : if($file!="." && $file!="..")

FilesystemIterator ne prend pas les . en compte, DirecotryIterator les prend mais y'a une méthode pour ca c'est ->isDot()
pas besoin de rajouter des choses a ce que j'ai mis :wink: