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

Bibliothèques & Frameworks Discussion :

CKeditor : Ajouter


Sujet :

Bibliothèques & Frameworks

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 137
    Points : 30
    Points
    30
    Par défaut CKeditor : Ajouter
    Bonjour à tous,


    J'ai un site avec une partie en backoffice où j'aimerai que l'administrateur puisse écrire un article (/modifier/supprimer) des news via ckeditor.


    J'ai une page php avec ckeditor, j'aimerai que lorsque l'admin écrit son commentaire dans cet éditeur de texte que les commentaires soit enregistrer dans ma table article dans "commentaire".
    Article (numarticle, commentaire)

    Je rencontre des difficultés depuis quelques heures, si quelqu'un pouvait m'aider s'il vous plait, ça serait vraiment top :

    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
    <textarea name="contenu" rows="10" cols="50" >
    		<?php
                            if (!empty($_POST["contenu"])) 
                                            {
                                                    echo stripcslashes(htmlspecialchars($_POST["contenu"]));
                                            }
                    ?></textarea>
     
    		<script type="text/javascript">
    		CKEDITOR.replace( 'contenu' );
    		</script>
     <!-- Fin ici pour CKeditor -->
     
    <input type="submit" name="ajoutart" value="Nouveau article"/>
     
    <?php 
    if (isset ($_POST['ajoutart']) )
    {
            if ( (!empty  ($_POST['contenu'])) )
            {
                     //récupération des valeurs
                     $contenu = $_POST["contenu"] ; 
     
                     //requete
                     $sql = "INSERT INTO article (commentaire)  VALUES ('$contenu')" ;
      
                     //exécution
                     $requete = mysql_query($sql, $cnx) or die( mysql_error()) ;
      
                     mysql_close();
            }
            else
            {
            echo "L'enregistrement n'a pas pu s'effectuer";
            }
    }
    ?>

    Lorsque je vais regarder dans ma bdd sous Easyphp, il n'y a rien d'ajouter.


    Merci d'avance.


    Guns Of The Patriots

  2. #2
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    A vue de nez, si tu n'as pas le message du die(), c'est que l'insert ne se fait pas donc :
    - soit $_POST['contenu'] n'est pas défini et tu ne devrais rien avoir dans ton textarea quand la page se recharge
    - soit $_POST['ajoutart'] n'est pas défini

    Ce qui suppose que le formulaire que tu utilises n'a pas ces champs. Donc : qu'y a t'il dans $_POST, exactement ? Le formulaire a bien une action et une méthode correctement définies, au fait ?

    Au passage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $contenu = $_POST["contenu"] ; 
     $sql = "INSERT INTO article (commentaire)  VALUES ('$contenu')" ;
    est dangereux car cela ouvre la voie aux injections SQL. Il est indispensable de sécuriser les chaînes avant de les enregistrer dans une table. En général, il est indispensable de sécuriser tout ce qui peut venir de l'utilisateur et de son navigateur. Donc au minimum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $contenu = mysql_real_escape_string($_POST["contenu"]); 
     $sql = "INSERT INTO article (commentaire)  VALUES ('$contenu')" ;

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 137
    Points : 30
    Points
    30
    Par défaut
    Merci pour l'astuce niveau sécurité !


    En faite sur ma page, j'ai mon éditeur de texte qui est affiché. Je peux écrire ce que je veux.

    Normalement vu que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CKEDITOR.replace( 'contenu' );
    Le texte écrit sera dans ma variable "contenu", non ?

    Mais lorsque je clique sur le bouton, il ne se passe rien.

    En faite, j'essaye de faire en sorte que lorsque je clique sur le bouton ajoutart, les données dans "contenu" de l'éditeur de texte soit insérer dans ma base de donnée dans la table article.

  4. #4
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Citation Envoyé par Guns Of The Patriots Voir le message
    Le texte écrit sera dans ma variable "contenu", non ?
    Oui. Plus exactement, CKEditor va (à coups de javascript)
    - cacher le textarea qui s'appelle 'contenu'
    - superposer son propre éditeur de texte
    - recopier dans <textarea name="contenu"> le texte saisi dans son éditeur

    Par la suite, si ton textarea est bien inclus dans un formulaire correctement formé, si l'action redirige bien où il faut et si le code d'insertion est correct, le contenu de <textarea name="contenu"> sera enregistré en base de données.

    Puisque tu dis qu'il ne se passe rien quand tu cliques sur le bouton 'submit', je pense qu'il y a un problème au niveau de ton formulaire. As-tu essayé de sauvegarder un bout de texte simple en utilisant le textarea de base, sans superposer le CKEditor ? Si ça ne passe pas, le bug est sans doute dans le formulaire. Si ca passe, CKEditor redevient suspect et il sera temps de se pencher sur ce biniou (qui est un poil compliqué quand même... )

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 137
    Points : 30
    Points
    30
    Par défaut
    Ok je comprend Herode. Je vais essayer de faire avec un textarea tout simple sans utiliser CKeditor, et je te tiens très vite au courant !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 137
    Points : 30
    Points
    30
    Par défaut
    J'ai essayé de faire des tests, cela ne fonctionne pas. Je ne comprend pas.
    Je te montre.

    Il y a une page article.php avec un textarea avec un bouton. Une autre page ajoutarticle.php qui affiche ce que j'ai écrti.

    Article.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
    26
    27
    28
    <html>
    <?php include("connection.php"); ?> 
     
    <form action="ajoutarticle.php" method="POST">
    <textarea name="contenu" rows="10" cols="50" ></textarea>
     
    <input type="submit" name="ajoutart" value="Ajouter"/></form>
     
    <?php 
    if (isset ($_POST['contenu']) )
    {
            if ( (!empty  ($_POST['ajoutart'])) )
            {
                     $contenu = $_POST["contenu"] ; 
                     
                     $sql = "INSERT INTO article (commentaire)  VALUES ('$contenu')" ;
     
                     $requete = mysql_query($sql, $cnx) or die( mysql_error()) ;
      
                     mysql_close();
            }
            else
            {
            echo "L'enregistrement n'a pas pu s'effectuer";
            }
    }
    ?>
    </html>

    Ajoutarticle.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
    <?php include("connection.php"); ?> 
    <?php
            echo"
                    <table border =0 align='center' width=80%>
                    <tr>
                            <th class= 'gras' width = 20%>Commentaire :</th>        
                    </tr>";         
                    
    $req=mysql_query('SELECT* FROM article',$cnx);
     
     
    while($ligne=mysql_fetch_array($req))
    { 
    echo "<tr><th>".$ligne['commentaire']."</th><th>";
    }
    echo "</table>";
    ?>

    Pourtant mon code me semble cohérent.

  7. #7
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="ajoutarticle.php" method="POST">
    donc quand tu cliques sur le bouton submit, tu es redirigé sur ajoutarticle.php. Or le code qui fait l'insert est dans article.php.

    Si ce que tu veux faire est de rediriger l'utilisateur sur la page article.php après le submit, il faut déplacer tout le code relatif à l'insert dans ce fichier. Si par contre tu veux ré-afficher le formulaire pour que l'utilisateur puisse continuer à modifier le texte, tu dois changer l'action du formulaire.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 137
    Points : 30
    Points
    30
    Par défaut
    Mon code fonctionne bien. Je te remerci !

    Maintenant je vais essayer avec CKeditor, la même logique donc... Je te dis ça tout de suite ^^

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 137
    Points : 30
    Points
    30
    Par défaut
    Cela fonctionne bien. Je te remerci énormement Herode !

    Je vais essayer d'approfondir tout ca maintenant, merci encore.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 137
    Points : 30
    Points
    30
    Par défaut
    J'ai essayé de configurer CKeditor et fait pas mal de tests, c'est vraiment sympa !

    Néanmoins, il y a des fonctionnalités qui sont inutilisables comme la Police ou encore les couleurs !

    Comment cela se fait-il ?

Discussions similaires

  1. [CKEditor] Ajouter des class/style dans la liste déroulante des styles CKEditor 4.x
    Par Darkhan dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 02/08/2014, 22h15
  2. CKEditor Syntaxhighlighter, ajouter des langages
    Par stc074 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 20/04/2014, 17h21
  3. [CKEditor] CKEditor 3.5 ajoute une div au contenu de l'éditeur
    Par Jaako H. dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 24/06/2011, 16h59
  4. [CKEditor] CKEditor 3.5 : ajout de bouton pour encadrer ma sélection
    Par will89 dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 31/01/2011, 18h11
  5. [CKEditor] Ajouter des guillemets autour des URIs des images
    Par anaranjado dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 17/08/2010, 16h45

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