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

Langage PHP Discussion :

UPDATE et image resize PHP/PDO [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Graphiste
    Inscrit en
    Juin 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : Juin 2015
    Messages : 21
    Points : 7
    Points
    7
    Par défaut UPDATE et image resize PHP/PDO
    Bonjour à tous,

    Débutant en PHP/PDO, j'ai conçu un code me permettant de modifier un ou plusieurs articles encodé dans une base de données.
    Ces articles comprennent un ou plusieurs textes, une image et un pdf.

    La difficulté que je rencontre est lors de l'UPDATE. Celui-ci fonctionne très bien pour le ou les textes mais pour les images et pdf's c'est autre chose.
    Une fois l'UPDATE appliqué les images et pdf's sont modifés non pas sur l'article voulu mais sur le dernier encodé alors que le ou les textes se modifient bien sur l'article voulu ????

    Ci-dessous vous trouverez le code en question pour l'UPDATE ainsi que le script resize.php

    Auriez-vous une idée, une solution pour arranger le problème.

    En vous remerciant à l'avance

    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
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
     
    <?php 
        include "db-link.php";
        include "class/resize.php";
     
        if(isset($_POST['adouc_modifOk'])){
            $_GET['id'] = $_POST['id'];
            $valide = TRUE;
            if((empty($_FILES["nameImg"]["name"]) && $_FILES["nameImg"]["name"] == "")){
                $error = "<p style='background-color:red;padding:10px;text-align:center;color:#fff'>Veuillez re-sélectionner votre image afin d'éviter une erreur du système.</strong></p>";
                $valide = TRUE;
            } elseif($valide){
                $error = "<p style='background-color:green;padding:10px;text-align:center;color:#fff'>Votre article  a bien été modifié.</p>";
     
                if(!empty($_FILES["nameImg"]["name"])){$db->exec('UPDATE classic SET img = ""');}else{}
                if(!empty($_FILES["namePdf"]["name"])){$db->exec('UPDATE classic SET pdf = ""');}else{}
     
                $req = $db->prepare("UPDATE classic SET description = :descriptionPrep,fonctionnement = :fonctionnementPrep
                                    WHERE id = {$_GET['id']}");
                $req->execute(array(
                    'descriptionPrep' => $_POST['description'],
                    'fonctionnementPrep' => $_POST['fonctionnement'],
                    ));
     
                $req1 = $db->query("SELECT MAX(id) AS imgNum FROM classic");
                $identif1 = $req1->fetch(PDO::FETCH_ASSOC);
                @$number1 = $identif1[imgNum];
     
                $rep1 = dirname(__FILE__)."/../img/produits/classic/";
     
                $file_tmp = $_FILES['nameImg']['tmp_name'];
                $dest_file = './../img/produits/classic/'.$number1.".jpg";
                resize_image($file_tmp,$dest_file);
     
                $finalName1 = $number1.$_FILES['nameImg']['tmp_name'];
                $finalName2 = $number1."-dellan.pdf";
     
                move_uploaded_file($_FILES["nameImg"]["name"], $rep1.$finalName1);
                move_uploaded_file($_FILES["namePdf"]["tmp_name"], $rep1.$finalName2);
            }
        }
     
        $q = $db->query("SELECT * FROM classic WHERE id={$_GET['id']}");
        $data = $q->fetch();
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <title>ADMIN - Modification Classic</title>
     
        <link rel="stylesheet" href="css/reset.css">
        <link rel="stylesheet" href="css/style.css">
     
        <script src="js/tinymce/tinymce.min.js"></script>
        <script>tinymce.init({
                                forced_root_block : "", 
                                force_br_newlines : true,
                                force_p_newlines : false,
                                width : '100%',
                                language : 'fr_FR',
                                selector:'textarea',
                                plugins: "textcolor colorpicker",
                                toolbar: "forecolor backcolor fontsizeselect charmap undo redo styleselect bold italic link image alignleft aligncenter alignright"
                            });
        </script>
    </head>
    <body>
     
        <?php include "class/class_menu.php";?>
     
        <div id="content">
            <div id="content-right">
                <div class="error">
                    <p>
                        <?php if(isset($error)) {echo $error;} else { false; } ?> <!-- Message d'erreur -->
                    </p>
                </div>
     
                <div id="title_admin">
                    <p>Modification</p>
                </div>
     
            <form enctype="multipart/form-data" action="ad_classic_modif.php" method="post">
                <?php
                    $sql = $db->query("SELECT * FROM classic WHERE id={$_GET['id']}");                 
                    $data = $sql->fetch(); 
     
                    echo    "<h1>Modifiez votre description: </h1><textarea style='height:250px;' placeholder='Votre texte ici' name='description'>".nl2br($data['description'])."</textarea>";
                    echo    "<h1>Modifiez votre fonctionnement: </h1><textarea style='height:250px;' placeholder='Votre texte ici' name='fonctionnement'>".nl2br($data['fonctionnement'])."</textarea>";
     
                ?>
     
                <br><br>
     
                Image JPG :<input type="file" name="nameImg"/><br>
                Image PDF :<input type="file" name="namePdf"/><br>
     
                <input type="hidden" name="id" value="<?php echo $data['id'] ?>">
                <input type="hidden" name="adouc_modifOk" value="1" /><br>
                <input type="submit" value="Enregistrer"/>
            </form><br>
            </div>
     
        </div>
        <div id="clear"></div>
     
     
        <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
        <script type="text/javascript" src="js/animate.js"></script>
        <script type="text/javascript" src="js/lightbox.js"></script>
        <script>
            window.onload = function(){
                document.getElementById('onglets').style.display = 'block';
                document.getElementById('onglets').onclick = function(e){
                    var actuel = e ? e.target : window.event.srcElement;
                    if (!/li/i.test(actuel.nodeName) || actuel.className.indexOf('actif') > -1) {
                        return;
                    }
                    var allOnglets = document.getElementById('onglets').getElementsByTagName('li'),
                        i = allOnglets.length;
                    while(i--){
                        if(allOnglets[i] == actuel){
                            allOnglets[i].className += ' actif';
                        }
                        else{
                            allOnglets[i].className = allOnglets[i].className.replace('actif', '');
                            if(String.trim){
                                allOnglets[i].className.trim();
                            }
                        }
                    }
                    setDisplay();
                }
                setDisplay();
            }
            function setDisplay(){
                var allOnglets = document.getElementById('onglets').getElementsByTagName('li'),
                    allContenus = document.getElementById('contenu').getElementsByTagName('div'),
                    i = allOnglets.length;
                while(i--){
                    if(allOnglets[i].className.indexOf('actif') == -1){
                        allContenus[i].style.display = 'none';
                    }
                    else{
                        allContenus[i].style.display = 'block';
                    }
                }
            }
        </script>
    </body>
    </html>
    resize.php

    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
     
    <?php
     
    function resize_image($my_img,$folder){
        $src_im = imagecreatefromjpeg($my_img);
        $size = getimagesize($my_img);
        $src_w = $size[0];
        $src_h = $size[1];
        $dst_w = 800; 
        $dst_h = round(($dst_w / $src_w) * $src_h);
        $dst_im = imagecreatetruecolor($dst_w,$dst_h);
        imagecopyresampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);    
        if (imagejpeg($dst_im,$folder)){
            imagedestroy($dst_im);
            imagedestroy($src_im);
            return true;
        }
        else {
            imagedestroy($dst_im);
            imagedestroy($src_im);
            return false;
        }
    }
     
    ?>

  2. #2
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne vois pas ou tu fais la mise à jour de l'image.

    Il y a par contre deux choses étranges :
    - la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE classic SET img = ""
    - et la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MAX(id) AS imgNum FROM classic
    A quoi servent-elles ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Graphiste
    Inscrit en
    Juin 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : Juin 2015
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Le code ci-dessous fait partie normalement de l'update de l'image

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE classic SET img = ""
    Et le code suivant, c'est un oublie de ma part. À la base il servait pour limiter le nombre d'article sur la page mais ici il ne me sert à rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT MAX(id) AS imgNum FROM classic

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    L'UPDATE que tu fais efface toute la colonne "img"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Graphiste
    Inscrit en
    Juin 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : Juin 2015
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Bon... autant pour moi et avec mes excuses !

    En effet le code efface toute la colonne img.

    Et le code ci-dessous doit normalement sélectionner l'image correspondant à l'article donc à l'id mais il me choisit le dernier article encodé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT MAX(id) AS imgNum FROM classic
    Si je reprend tout le code de ma page "modification", il fonctionne très bien pour 1 article mais pour plusieurs je coince au niveau des images et pdf's.
    Étant débutant, je ne vois pas d'où vient l'erreur ?

  6. #6
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    MAX(id) c'est le plus grand id.
    Ton id en cours, ce n'est pas plutôt $_GET['id'] ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Graphiste
    Inscrit en
    Juin 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Graphiste

    Informations forums :
    Inscription : Juin 2015
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Je ne sais pas quoi dire...

    Sinon un GRAND MERCI.

    En effet le problème venait de ma mauvaise requête qui allée chercher le dernier ID de l'image et non l'ID de l'image correspondant.

    Encore un grand merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] update image blob php et mysql
    Par chaker176 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/03/2015, 20h43
  2. [MySQL] Afficher image d'une BDD avec PHP PDO
    Par Leo62 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/06/2011, 14h07
  3. [PostgreSQL] Afficher une image stockée dans la base avec PHP / PDO / PostgresSQL
    Par genamiga dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 16/02/2011, 13h02
  4. Ne pas rafraichir les images avec PHP
    Par tornaod dans le forum Langage
    Réponses: 4
    Dernier message: 07/12/2005, 22h44

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