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 :

Choix suivant condition if/else


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 20
    Par défaut Choix suivant condition if/else
    Bonjour à tous,
    je suis bloqué depuis hier,
    l'appui sur mon bouton "enregistrer" ne fonctionne plus pour le INSERT INTO mais seulement pour le UPDATE, je ne comprend pas, je suis débutant.
    Voici mon code :
    Code php : 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
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    <?php
    include '../lib/includes.php';
     
    /**
    * La sauvegarde
    **/
    if(isset($_POST['name']) && isset($_POST['slug'])){
        checkCsrf();
        $slug = $_POST['slug'];
        if(preg_match('/^[a-z\-0-9]+$/', $slug)){
            $name = $db->quote($_POST['name']);
            $slug = $db->quote($_POST['slug']);
            $category_id = $db->quote($_POST['category_id']);
            $content = $db->quote($_POST['content']);
     
            /**
            * SAUVEGARDE de la réalisation
            **/
            if(isset($_GET['id'])){
              $id = $db->quote($_GET['id']);
                $db->query("UPDATE works SET name=$name, slug=$slug, content=$content, category_id=$category_id WHERE id=$id");
            }else{
          		 $db->query("INSERT INTO works SET name=$name, slug=$slug, content=$content, category_id=$category_id");
                $_GET['id'] = $db->lastInsertId();
     
            }
            setFlash('La réalisation a bien été ajoutée');
     
            /**
            * ENVOIS DES IMAGES
            **/
            $work_id = $db->quote($_GET['id']);
            $files = $_FILES['images'];
            $images = array();
            foreach($files['tmp_name'] as $k => $v){
                $image = array(
                    'name' => $files['name'][$k],
                    'tmp_name' => $files['tmp_name'][$k]
                );
                $extension = pathinfo($image['name'], PATHINFO_EXTENSION);
                if(in_array($extension, array('jpg','png'))){
                    $db->query("INSERT INTO images SET work_id=$work_id");
                    $image_id = $db->lastInsertId();
                    $image_name = $image_id . '.' . $extension;
                    move_uploaded_file($image['tmp_name'], IMAGES . '/works/' . $image_name);
                    resizeImage(IMAGES . '/works/' . $image_name, 150,150);
                    $image_name = $db->quote($image_name);
                    $db->query("UPDATE images SET name=$image_name WHERE id = $image_id");
                }
     
            }
     
    		header('Location:work.php');
            die();
     
        }else{
            setFlash('Le slug n\'est pas valide', 'danger');
        }
    }
     
    /**
    * On récupère une réalisation
    **/
    if(isset($_GET['id'])){
        $id = $db->quote($_GET['id']);
        $select = $db->query("SELECT * FROM works WHERE id=$id");
        if($select->rowCount() == 0){
            setFlash("Il n'y a pas de réalisation avec cet ID", 'danger');
            header('Location:work.php');
            die();
        }
        $_POST = $select->fetch();
     
    }
     
    /**
    * Suppression d'une image
    **/
    if(isset($_GET['delete_image'])){
        checkCsrf();
        $id = $db->quote($_GET['delete_image']);
        $select = $db->query("SELECT name, work_id FROM images WHERE id=$id");
        $image = $select->fetch();
        $images=glob(IMAGES . '/works/' . pathinfo($image['name'], PATHINFO_FILENAME) . '_*x*.*');
        if(is_array($images)){
            foreach($images as $v){
                unlink($v);
            }
        }
        unlink(IMAGES . '/works/' . $image['name']);
        $db->query("DELETE FROM images WHERE id=$id");
        setFlash("L'image a bien été supprimée");
        header('Location:work_edit.php?id=' . $image['work_id']);
        die();
    }
     
     
     
    /**
    * On récup la liste des catégories
    **/
    $select = $db->query('SELECT id, name FROM categories ORDER BY name ASC');
    $categories = $select->fetchAll();
    $categories_list = array();
    foreach($categories as $category){
        $categories_list[$category['id']] = $category['name'];
    }
     
    /**
    * On récup la liste des images
    **/
    if(isset($_GET['id'])){
        $work_id = $db->quote($_GET['id']);
        $select = $db->query("SELECT id, name FROM images WHERE work_id=$work_id");
        $images = $select->fetchAll();
    }else{
        $images = array();
    }
     
    include '../partials/admin_header.php';
    ?>
     
     
     
     
    <h1>Editer une réalisation</h1>
     
    <div class="row">
        <form action="#" method="post" enctype="multipart/form-data">
        <div class="col-sm-8">
                <div class="form-group">
                    <label for="name">Nom de la réalisation</label>
                    <?= input('name'); ?>
                </div>
                <div class="form-group">
                    <label for="slug">URL de la réalisation</label>
                    <?= input('slug'); ?>
                </div>
                <div class="form-group">
                    <label for="content">Contenu de la réalisation</label>
                    <?= textarea('content'); ?>
                </div>
                <div class="form-group">
                    <label for="category_id">Catégorie</label>
                    <?= select('category_id', $categories_list); ?>
                </div>
                <?= csrfInput(); ?>
                <button type="submit" class="btn btn-default">Enregistrer</button>
        </div>
     
        <div class="col-sm-4">
            <?php foreach ($images as $k => $image): ?>
                <p>
                    <a href="?delete_image=<?= $image['id']; ?>&<?= csrf(); ?>" onclick="return confirm('Sur ?');"> <img src="<?= WEBROOT; ?>/img/works/<?= $image['name']; ?>" width="100"></a>
                </p>
            <?php endforeach ?>
     
            <div class="form-group">
                <input type="file" name="images[]">
                <input type="file" name="images[]" class="hidden" id="duplicate">
            </div>
            <p>
                <a href="#" class="btn btn-success" id="duplicatebtn">Ajouter une image</a>
            </p>
        </div>
     
        </form>
     
    </div>
     
     
     
    <?php ob_start(); ?>
    <script src="<?= WEBROOT; ?>/js/tinymce/tinymce.min.js"></script>
    <script>
    (function($){
     
        $('#duplicatebtn').click(function(e){
            e.preventDefault();
            var $clone = $('#duplicate').clone().attr('id', '').removeClass('hidden');
            $('#duplicate').before($clone);
        })
     
     
    })(jQuery);
    tinyMCE.init({
            // General options
            mode : "textareas",
     
    });
    </script>
    <?php $script = ob_get_clean(); ?>
     
    <?php include '../partials/footer.php'; ?>

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bonsoir Jovaanc, sur le strict problème qui te préoccupe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      if(isset($_GET['id'])){
              $id = $db->quote($_GET['id']);
                $db->query("UPDATE works SET name=$name, slug=$slug, content=$content, category_id=$category_id WHERE id=$id");
            }else{
          		 $db->query("INSERT INTO works SET name=$name, slug=$slug, content=$content, category_id=$category_id");
                $_GET['id'] = $db->lastInsertId();
     
            }
    Si l'insert ne fonctionne pas, 2 possibilités à vérifier
    1) tu as toujours un $_GET['id'] dans l'url... donc il passe toujours en mode update...
    2) Tu as dans ta table une clé d'unicité qui te bloque... donc il ne peut pas insérer un truc que tu as déjà inséré si tu l'as défini comme un doublon dont tu ne veux pas...
    Si c'est cela, tu peux contourner le problème facilement :
    Imaginons que tu aies une clé d'unicité sur name et slug (au pif)... ça donnerait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      if(isset($_GET['id'])){
              $id = $db->quote($_GET['id']);
                $db->query("UPDATE works SET name=$name, slug=$slug, content=$content, category_id=$category_id WHERE id=$id");
            }else{
          		 $db->query("INSERT INTO works SET name=$name, slug=$slug, content=$content, category_id=$category_id on duplicate key update content=$content, category_id=$category_id;");
                $_GET['id'] = $db->lastInsertId();
     
            }
    A part ça, tu ne dois plus utiliser comme ça tes requpete PDO, mais ainsi, avec des requêtes préparées, car ce sont des données utilisateurs.

    Voir ici
    PDO, une soupe et au lit
    Chapitre 7 et 8 en ce qui te concerne...

    Bonne chance ! Sylvie
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 20
    Par défaut Réponse
    Bonjour Sylvie,

    Je n'ai pas de GET dans l'url mais j'ai quand même l'impression que je reste du côté if...
    J'ai transformé en requête préparée, j'ai essayé avec "on duplicate key update"

    Toujours aucune réaction au clic sur enregistrer

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Par défaut
    Bonjour,

    La syntaxe classique pour un insert en SQL est INSERT INTO table (column1, column2, ... column_n ) VALUES (expression1, expression2, ... expression_n )
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO works (name,slug,content,category_id) values('".$name."','".$slug."','".$content."',".$category_id.")"
    avec les cotes en fonction des types de colonnes bien sur

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 20
    Par défaut
    J'ai tout bien mis, mais ça ne change rien vu que je n'entre pas dans le else...

    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
           if(isset($_GET['id'])){
              $id = $_GET['id'];
               $req = $db->prepare("UPDATE works SET name=?, slug=?, content=?, category_id=? WHERE id=?");
               $req->execute(array(
                   $_POST['name'],
                   $_POST['slug'],
                   $_POST['content'],
                   $_POST['category_id'],
                   $_GET['id']
               ));
                setFlash('La réalisation a bien été modifiée');
            }
            else {
                  $req = $db->prepare("INSERT INTO works (name, slug, content, category_id) VALUES (?, ?, ?, ?)");
                 $req->execute(array(
                        $_POST['name,'],
                        $_POST['slug'],
                        $_POST['content'],
                        $_POST['category_id']
                    ));
                $_GET['id'] = $db->lastInsertId();
                setFlash('La réalisation a bien été ajoutée');
                }

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Citation Envoyé par JovaanC Voir le message
    Bonjour Sylvie,

    Je n'ai pas de GET dans l'url mais j'ai quand même l'impression que je reste du côté if...
    (
    et que donne comme ça on es fixé

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 20
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    et que donne comme ça on es fixé
    J'ai :
    C:\wamp64\www\Portfolio\admin\work_edit.php:7:
    array (size=0)
    empty

    et quand je veux modifier j'ai :
    C:\wamp64\www\Portfolio\admin\work_edit.php:7:
    array (size=1)
    'id' => string '3' (length=1)

    Donc j'ai ce qu'il faut...

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Ok, déboguons ligne par ligne alors :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      if(isset($_GET['id'])){
             // $id = $db->quote($_GET['id']);
              //  $db->query("UPDATE works SET name=$name, slug=$slug, content=$content, category_id=$category_id WHERE id=$id");
                echo "isset"; die();
            }else{
          		// $db->query("INSERT INTO works SET name=$name, slug=$slug, content=$content, category_id=$category_id on duplicate key update content=$content, category_id=$category_id;");
                //$_GET['id'] = $db->lastInsertId();
     
                      echo "pas isset";
                      die();
     
            }
    Dite nous si quelque soit la situation, vous avez bien le message isset qui s'affiche

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 20
    Par défaut
    Je n'ai rien d'afficher quelque soit la situation, par contre quand je veux éditer ça me redirige vers "work.php" mais quand je veux enregistrer une nouvelle réalisation, pas de redirection

  10. #10
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Donc on arrive pas jusque là, les erreurs sont activé sur votre serveur ?

    tenté ceci pour voir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    include '../lib/includes.php';
     
    echo 'je suis là';die();

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 20
    Par défaut
    Là, quelque soit la page "Edition ou nouvelle réalisation", j'ai le message affiché,
    Les erreurs sont activées oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    try {
    $db = new PDO('mysql:host=localhost;dbname=portfolio;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO:: ERRMODE_EXCEPTION);
    }
    catch (Exception $e) {
    	echo 'Impossible de se connecter à la base de donnée';
    	echo $e->getMessage();
    	die();
    }

  12. #12
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    ok on continue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    include '../lib/includes.php';
     
    var_dump($_POST);die();

  13. #13
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 20
    Par défaut
    Quelques soit la page :
    array (size=0)
    empty

  14. #14
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Et bien voila, vous n'avez pas de $_POST, donc vous ne rentrer pas dans la condition suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if(isset($_POST['name']) && isset($_POST['slug'])){

  15. #15
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 20
    Par défaut
    Donc le if(isset($_GET['id'])) devrait être avant ça non ?

  16. #16
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    C'est votre code, pas le mien, je ne connais pas les aboutissants de ce code.
    Si vous avez des post ce que cela vient d'un formulaire (en générale), donc pq maintenant cela n'arrive plus.... a vous de voir.
    Mais j me garderais bien de vous dire ce qui doit aller avant ou pas.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Merci de montrer :
    • le code du formulaire d'ajout
    • le code du formulaire de modification


    2- Merci d'ARRETER de cliquer le bouton "Répondre avec citation" !

    Il existe un bouton "+ Répondre à la discussion", en bas à gauche.

  18. #18
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 20
    Par défaut
    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
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
     
    <?php
    include '../lib/includes.php';
     
    /**
    * La sauvegarde
    **/
     
    if(isset($_POST['name']) && isset($_POST['slug'])){
        checkCsrf();
        $slug = $_POST['slug'];
        if(preg_match('/^[a-z\-0-9]+$/', $slug)){
     
            /**
            * SAUVEGARDE de la réalisation
            **/
            if(isset($_GET['id'])){
              $id = $_GET['id'];
               $req = $db->prepare("UPDATE works SET name=?, slug=?, content=?, category_id=? WHERE id=?");
               $req->execute(array(
               	$_POST['name'],
               	$_POST['slug'],
               	$_POST['content'],
               	$_POST['category_id'],
               	$_GET['id']
               ));
                setFlash('La réalisation a bien été modifiée');
            }
            else {
          		$req = $db->prepare("INSERT INTO works (name, slug, content, category_id) VALUES (?, ?, ?, ?)");
    			 $req->execute(array(
    			        $_POST['name,'],
    			        $_POST['slug'],
    			        $_POST['content'],
    			        $_POST['category_id']
    			    ));
                $_GET['id'] = $db->lastInsertId();
                setFlash('La réalisation a bien été ajoutée');
    			}
     
     
     
            /**
            * ENVOIS DES IMAGES
            **/
            $work_id = $db->quote($_GET['id']);
            $files = $_FILES['images'];
            $images = array();
            foreach($files['tmp_name'] as $k => $v){
                $image = array(
                    'name' => $files['name'][$k],
                    'tmp_name' => $files['tmp_name'][$k]
                );
                $extension = pathinfo($image['name'], PATHINFO_EXTENSION);
                if(in_array($extension, array('jpg','png'))){
                    $db->query("INSERT INTO images SET work_id=$work_id");
                    $image_id = $db->lastInsertId();
                    $image_name = $image_id . '.' . $extension;
                    move_uploaded_file($image['tmp_name'], IMAGES . '/works/' . $image_name);
                    resizeImage(IMAGES . '/works/' . $image_name, 150,150);
                    $image_name = $db->quote($image_name);
                    $db->query("UPDATE images SET name=$image_name WHERE id = $image_id");
                }
     
            }
     
    		header('Location:work.php');
            die();
     
            }else{
            setFlash('Le slug n\'est pas valide', 'danger');
        }
    }
     
    /**
    * On récupère une réalisation
    **/
    if(isset($_GET['id'])){
        $id = $db->quote($_GET['id']);
        $select = $db->query("SELECT * FROM works WHERE id=$id");
        if($select->rowCount() == 0){
            setFlash("Il n'y a pas de réalisation avec cet ID", 'danger');
            header('Location:work.php');
            die();
        }
        $_POST = $select->fetch();
     
    }
     
    /**
    * Suppression d'une image
    **/
    if(isset($_GET['delete_image'])){
        checkCsrf();
        $id = $db->quote($_GET['delete_image']);
        $select = $db->query("SELECT name, work_id FROM images WHERE id=$id");
        $image = $select->fetch();
        $images=glob(IMAGES . '/works/' . pathinfo($image['name'], PATHINFO_FILENAME) . '_*x*.*');
        if(is_array($images)){
            foreach($images as $v){
                unlink($v);
            }
        }
        unlink(IMAGES . '/works/' . $image['name']);
        $db->query("DELETE FROM images WHERE id=$id");
        setFlash("L'image a bien été supprimée");
        header('Location:work_edit.php?id=' . $image['work_id']);
        die();
    }
     
     
     
    /**
    * On récup la liste des catégories
    **/
    $select = $db->query('SELECT id, name FROM categories ORDER BY name ASC');
    $categories = $select->fetchAll();
    $categories_list = array();
    foreach($categories as $category){
        $categories_list[$category['id']] = $category['name'];
    }
     
    /**
    * On récup la liste des images
    **/
    if(isset($_GET['id'])){
        $work_id = $db->quote($_GET['id']);
        $select = $db->query("SELECT id, name FROM images WHERE work_id=$work_id");
        $images = $select->fetchAll();
    }else{
        $images = array();
    }
     
    include '../partials/admin_header.php';
    ?>
     
     
    <h1>Editer une réalisation</h1>
     
    <div class="row">
        <form action="#" method="post" enctype="multipart/form-data">
        <div class="col-sm-8">
                <div class="form-group">
                    <label for="name">Nom de la réalisation</label>
                    <?= input('name'); ?>
                </div>
                <div class="form-group">
                    <label for="slug">URL de la réalisation</label>
                    <?= input('slug'); ?>
                </div>
                <div class="form-group">
                    <label for="content">Contenu de la réalisation</label>
                    <?= textarea('content'); ?>
                </div>
                <div class="form-group">
                    <label for="category_id">Catégorie</label>
                    <?= select('category_id', $categories_list); ?>
                </div>
                <?= csrfInput(); ?>
                <button type="submit" class="btn btn-default">Enregistrer</button>
        </div>
     
        <div class="col-sm-4">
            <?php foreach ($images as $k => $image): ?>
                <p>
                    <a href="?delete_image=<?= $image['id']; ?>&<?= csrf(); ?>" onclick="return confirm('Sur ?');"> <img src="<?= WEBROOT; ?>/img/works/<?= $image['name']; ?>" width="100"></a>
                </p>
            <?php endforeach ?>
     
            <div class="form-group">
                <input type="file" name="images[]">
                <input type="file" name="images[]" class="hidden" id="duplicate">
            </div>
            <p>
                <a href="#" class="btn btn-success" id="duplicatebtn">Ajouter une image</a>
            </p>
        </div>
     
        </form>
     
    </div>  
     
     
     
    <?php ob_start(); ?>
    <script src="<?= WEBROOT; ?>/js/tinymce/tinymce.min.js"></script>
    <script>
    (function($){
     
        $('#duplicatebtn').click(function(e){
            e.preventDefault();
            var $clone = $('#duplicate').clone().attr('id', '').removeClass('hidden');
            $('#duplicate').before($clone);
        })
     
     
    })(jQuery);
    tinyMCE.init({
            // General options
            mode : "textareas",
     
    });
    </script>
    <?php $script = ob_get_clean(); ?>
     
    <?php include '../partials/footer.php'; ?>

    La même page sert pour modifier une réalisation déjà crée ou en ajouter une nouvelle
    Nom : port_folio.PNG
Affichages : 155
Taille : 23,2 Ko

    J'arrive à modifier celle déjà crée mais aucune réaction quand je veux en enregistrer une nouvelle.

  19. #19
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Quand vous faites 'ajouter une nouvelle ralisation', vous avez un formulaire....montrer nous le code source généré via votre navigteur(ctrl + u sous firefox par exemple)

  20. #20
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 20
    Par défaut
    Voici le code source généré lors de l'arrivée sur le formulaire "ajouter une nouvelle réalisation" :
    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
     
     
    <!DOCTYPE html>
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
      <head>
     
    <!-- Bootstrap core CSS -->
            <link href="/Portfolio/css/bootstrap.min.css" rel="stylesheet">
     
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
     
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
     
         <script src="https://cloud.tinymce.com/stable/tinymce.min.js"></script>
      <script>tinymce.init({   selector: 'textarea',
      plugins: 'image media link tinydrive code imagetools',
      api_key: 'YOUR_API_KEY',
      height: 600,
      tinydrive_token_provider: 'URL_TO_YOUR_TOKEN_PROVIDER',
      toolbar: 'insertfile image link | code' });</script>
      <script src="bootstrap/js/bootstrap.min.js"></script>
        <title>Mon portfolio - BIENVENU JOVAN</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
        <!--[if IE]>
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <![endif]-->
     
      <link rel="apple-touch-icon-precomposed" href="#">
      <link rel="icon" href="img/favicon.ico" sizes="32x32">
      <!--[if IE]><link rel="shortcut icon" href="#"><![endif]-->
      <!-- et utiliser /favicon.ico pour IE10 -->
      <!-- Windows8 tuile Modern UI (facultatif et invalide HTML W3C) -->
      <meta name="msapplication-TileColor" content="#D83434">
      <meta name="msapplication-TileImage" content="#">
      <!-- /Windows8 -->
     
      <head>
      <body>
          <div class="navbar navbar-fixed-top navbar-inverse" role="navigation">
            <div class="container">
              <div class="navbar-header">
                <a class="navbar-brand" href="../index.php">Mon premier portfolio en PHP</a>
              </div>
              <ul class="nav navbar-nav">
                <li>
                  <a href="category.php">Catégories</a>
                </li>
                <li>
                  <a href="work.php">Réalisations</a>
                </li>
              </ul>
            </div>
          </div>      
     
              <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
        <!-- Include all compiled plugins (below), or include individual files as needed -->
        <script src="js/bootstrap.min.js"></script>
         <p>&nbsp;</p>
              <p>&nbsp;</p>
              <p>&nbsp;</p>
      </body>
    </html>
     
     
     
    <h1>Editer une réalisation</h1>
     
    <div class="row">
        <form action="#" method="post" enctype="multipart/form-data">
        <div class="col-sm-8">
                <div class="form-group">
                    <label for="name">Nom de la réalisation</label>
                    <input type='text' class='form-control' id='name' name='name' value='' required>             </div>
                <div class="form-group">
                    <label for="slug">URL de la réalisation</label>
                    <input type='text' class='form-control' id='slug' name='slug' value='' required>             </div>
                <div class="form-group">
                    <label for="content">Contenu de la réalisation</label>
                    <textarea type='text' class='form-control' id='content' name='content'  required></textarea>             </div>
                <div class="form-group">
                    <label for="category_id">Catégorie</label>
                    <select class='form-control' id='category_id' name='category_id'><option value='7' >CakePHP</option><option value='17' >JScript</option><option value='12' >LastPHP</option><option value='9' >Photoshop</option><option value='18' >ReactJs</option><option value='8' >Wordpres</option></select>            </div>
                <input type="hidden" value="036bc08bd9b4c340666f05ef1855a842"name="csrf">            <button type="submit" class="btn btn-default">Enregistrer</button>
        </div>
     
        <div class="col-sm-4">
     
            <div class="form-group">
                <input type="file" name="images[]">
                <input type="file" name="images[]" class="hidden" id="duplicate">
            </div>
            <p>
                <a href="#" class="btn btn-success" id="duplicatebtn">Ajouter une image</a>
            </p>
        </div>
     
        </form>
     
    </div>  
     
     
     
     
     
    </div> <!-- /.container -->
     
    <!-- Bootstrap core JavaScript
            ================================================== -->
            <!-- Placed at the end of the document so the pages load faster -->
            <script src="/Portfoliojs/jquery.js"></script>
            <script src="/Portfolio/js/tinymce/tinymce.min.js"></script>
    <script>
    (function($){
     
        $('#duplicatebtn').click(function(e){
            e.preventDefault();
            var $clone = $('#duplicate').clone().attr('id', '').removeClass('hidden');
            $('#duplicate').before($clone);
        })
     
     
    })(jQuery);
    tinyMCE.init({
            // General options
            mode : "textareas",
     
    });
    </script>
     
    	</body>
    </html>

Discussions similaires

  1. [CSS] probléme avec a:hover sur IE (mais bon sous FF)
    Par lafouin dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 12/02/2009, 15h55
  2. Problème avec les indexes sur une base de données.
    Par osoudee dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/02/2006, 09h24
  3. Problème avec ma connexion sur hotmail
    Par shukin dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 30/01/2006, 14h09
  4. Problème avec port Série sur Win XP
    Par alexorel dans le forum MFC
    Réponses: 9
    Dernier message: 27/10/2005, 15h32

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