IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Insérer l'ensemble d'un dossier de photo en une seule requête


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Par défaut Insérer l'ensemble d'un dossier de photo en une seule requête
    bonjour à tous,

    Une bonne journée que celle du dimanche n'est-ce pas ?

    Bon voilà j'ai fini un script de redimensionnement des images, ce script fonctionne pour réduire les images de tous le dossier qu'il trouve et en conserve des vignettes dans un dossier créer dans le dossier d'origine voilà le script en question
    .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    <?php
     
    $racine = "images";
    $dossier_reduit = "petite_images";
    $max = 250;
     
    lit_dossier($racine);
     
     
    function lit_dossier($dir) {
        global $dossier_reduit;
        if (!is_dir($dir)) {
            echo "$dir n'est pas un dossier";
            return;
        }
        //Ouvre le dossierPrincipale et renvoi un tableau 
        $liste = scandir($dir);
        foreach ($liste as $d) {
            if ($d!="." && $d!=".." && $d!=$dossier_reduit && is_dir($dir."/".$d)) {
                echo "$dir/$d est un dossier<br/>\n";
                echo"$dir/$d<br>\n"; // pour recuperer le n° de dossier images
                lit_dossier($dir."/".$d);
            } else { 
                //echo "$dir/$d est un fichier ou . ou ..<br/>\n";
            }
        }
        traiter_dossier($dir);
    }
     
    function traiter_dossier($gf) {
        global $dossier_reduit, $max;
        $gf .= "/";
        $pf = $gf.$dossier_reduit."/";
     
        // tester si le dossier de destination existe, sinon le créer
        if (!is_dir($pf)) {
            mkdir($pf);
        }
     
        // lister les images du dossier grand_format
        $liste = glob($gf."*{jpg,gif,png,jpeg}",GLOB_BRACE); // => "${gf}*jpg" -> "images/*jpg"
        // $liste = array('images/un.jpg','images/deux.jpg','images/trois.jpg','images/quatre.jpg');
        $imgs = array();
        // pour chaque image du dossier grand_format
        foreach ($liste as $imageG) {
            $fichier = basename($imageG); // "images/un.jpg" => "un.jpg"
            echo "- ${pf}${fichier}<br/>\n";
            // si pas jpg alors renommer en jpg sinon ne rien ajouter
            if (!is_file("${pf}${fichier}")) { // "imagesDesti/un.jpg"
                // créer une copie de l'image dans le dossier petit_format
                reduire($fichier,$gf,$pf,$max);
                echo "j'ai du réduire<br/>\n";
            }
        }
    }
     
     
    function reduire($fichier, $d_src, $d_dest, $max) {
        // Crée une nouvelle image à partir d'un fichier src
        $ext = trouver_extension($fichier);
        switch($ext) {
            case "jpg":
            case "jpeg":
                $f = "imagecreatefromjpeg";
                $fe = "imagejpeg";
            break;
            case "gif":
                $f = "imagecreatefromgif";
                $fe = "imagegif";
            break;
            case "png":
                $f = "imagecreatefrompng";
                $fe = "imagepng";
            break;
            default:
                return;
        }
        $grande_image = $f("${d_src}${fichier}");
     
        // prend les mesures de l'image src
        $ls = imagesx($grande_image);
        $hs = imagesy($grande_image);
     
        //    On établi une regle de traitement --- si largeur src>hauteur de la source alors
        if ($ls > $hs) {
            $ld = $max;
            $hd = $hs / $ls * $max;
        } else {
            $hd = $max;
            $ld = $ls / $hs * $max;
        }
     
        /*Retourne un identifiant de ressource image en cas de succès, FALSE si une erreur
          survient.en gardant les vrai couleur*/ 
        $petite_image = imagecreatetruecolor($ld,$hd);
        imagecopyresampled($petite_image, $grande_image, 0, 0, 0, 0, $ld, $hd, $ls, $hs);
        /* Enregistre l'image_gd $petite_image dans le fichier "$d_dest$fichier" */
        $fe($petite_image, $d_dest.$fichier);
    }
     
    function trouver_extension($fichier){
     
        $ext = explode(".",$fichier);
        // Pour vérifier push, pop sert a enlever le dernier element du tableau (voir shift et unshift)
        $extension = array_pop($ext);
        return $extension;
    }
     
    ?>
    j'ai d'autre part une requête sql qui fonctionne mais je voudrais pouvoir ajouter à cette requête l'ensemble des images contenu dans un dossier dans le champs images ou url peut importe
    je vous mettre le bout de code pour la requête;


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?php
        mysql_connect("localhost","root",""); // declaration de la connexion
        mysql_select_db("interieu");
        $ligne = 0;
        $handle = fopen("test.csv", "rw");
        while (($data = fgetcsv($handle, 0, chr(9),'|')) !== FALSE) {
        $ligne++;
        $num = count($data);
        //$img = '<img src="images/1-2.jpg" />';
        for ($c=0; $c < $num; $c++) {
          //echo 'Col ['.$ligne.', '.$c.'] = '.$data[$c].'<br />'; 
          echo $data[$c].'<br />';
          //$var2 = $data[2];
          $var1 = substr($data[2], 0, 20);
     
          }
        $query = "INSERT INTO jos_content (`id`,`title`,`alias`,`title_alias`,`introtext`,`fulltext`,`state`,`sectionid`,`mask`,`catid`,`created`,`created_by`,`created_by_alias`,`modified`,`modified_by`,`checked_out`,`checked_out_time`,`publish_up`,`publish_down`) VALUES ('". 
        $data[0] ."','".$data[1]."','".$data[1]."','".$img."','".$var1."','".$data[2]."',1,5,0,0,now(),62,'".idem."',now(),62,76392,now(),now(),'2010-10-10 00:00:00')";
        mysql_query($query);
        ($query);
        echo $query.'<br />';
        //je n'arrive plus qu'a rentrer  le numéros 3 dnas le fichier test.csv, je ne sais pas pourquoi on //va chercher
     }
    voilà donc je veux garder en mémoire le n° du dossier et l'ensemble de ces photos pour l'associer à un article dans la base de données,

    voilà le problème et j'ai pas envie de me taper tous le chemin à la main.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Par défaut
    salut,

    j'ai un peu de mal a comprendre ce que tu veux faire,
    je voudrais pouvoir ajouter à cette requête l'ensemble des images contenu dans un dossier
    tu veux faire ajouter l ensemble des images dans un seul champ ou plusieurs?


    et au cas ou pour trouver l extension tu peux aussi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function trouver_extension($fichier){    
        $positionDernierPoint=strrpos($fichier,'.');
        $extension = substr($fichier,$positionDernierPoint+1);
        return $extension;
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Par défaut
    oui tu as raison je n'ai pas été très clair sur l'objectif de ma question.
    Je veux récupérer dans un seul champs les adresses de : dossier photo1 avec images1-1, images 2-2, ...
    et ainsi de suite avec les autres dossiers
    voilà tu as raison c'est plus clair

    je vais jeter un oeil sur t'a recherche d'extension.
    Merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Par défaut
    hmm je dirais que simplement tu met les noms de tes fichiers dans un array et tu l'enregistre dans un champ avec serialize($array);

    comme ca quand tu recupere le champ tu fais un unserialize et tu as de nouveau ton array

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Entre nous ce n'est pas comme ca qu'on structure une base de données : il te faudrait une table recensant les photos par dossier.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Par défaut
    je vais jeter un œil sur les fonctions serialize et unserialze pour voir si je peux en faire quelque chose.
    Quand à la construction de la base de données c'est des table joomla.

Discussions similaires

  1. Insérer plusieurs lignes avec une seule requête
    Par kyuuse1 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/06/2013, 09h06
  2. Sauver une image automatiquement dans un dossier des photos
    Par mihaispr dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 14/03/2009, 08h14
  3. Insérer des photos dans une bd Access
    Par cedric/copy dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 07/10/2008, 10h07
  4. [Galerie] Script permettant d'importer tout un dossier d'images en une seule fois
    Par luluptitbeur dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 24/05/2008, 11h00
  5. Insérer plusieurs enregistrements en une seule requête
    Par pyd001 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/02/2004, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo