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 :

Parsage de code


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Par défaut Parsage de code
    Bonjour à tous

    Alors dans mon problème, je vais essayer d'être clair et précis.
    Pour commencer je vais d'abords fixer le petit objectif que je veux réaliser. Dans un second temps, je vais vous présenter le code qui est en relation. Enfin, dans un dernier temps, je vais vous montrer ce que j'ai obtenu avec le code et vous présenterais mes problèmes pour cette page.

    1. Alors voici la première partie :
      Ce que je veux réaliser est assez simple. Comme l'indique le titre de ce post, mon objectif consiste à parser du code à l'affichage de ma page. J'ai créé une page d’actualités qui parse déjà du code (grâce à l'aide d'une personne), grâce à une page dénommé ContentParser que j'ai appelé en require once, j'ai pu avec un code spécial, parser tout post présent sur mon site tout en sécurisant (je revérifierais) les post !
      Mais le problème s'effectue sur une autre page, nommé Commentaire.php.



    2. Dans cette deuxième partie, je vais vous présenter le code que j'ai effectué sur cette page :
      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
       
      <?php require_once ('./ContentParser.php');
      		 try {$bdd = new PDO('mysql:host=localhost;dbname=lifenet','root','');
      		      $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);}
      		 catch(Exception $e){die('Erreur :'.$e->getMessage());}
      		 if(!empty($_GET['billet'])){
      				$req = $bdd->prepare("SELECT contenu,DATE_FORMAT(date_creation,'Le %d/%m/%Y à %Hh%imin%ss') AS date_creation_fr FROM billets  WHERE id = ?");
      				$req->execute(array($_GET['billet']));
      				$billet = $req->fetch();
      				function (&$billet) { $contentParser = new ContentParser(htmlentities($billet['contenu']));
      				                      $contentParser->parseZcode();
      									  $contentParser->parseSmilies();
      									  $contentParser->parseNewLines(); 
      									  $billet['contenu'] = $contentParser->render();};?>
      				<?php($billets as $billet); ?>	
      					<div class= "news" style="padding:5px;">
      					<h3><!--<?php echo htmlspecialchars($billet['titre']);?>--></h3>
      					<p>	<?php echo htmlspecialchars($billet['contenu']);?><br/>
      					<em style="font-size:12px;float:right;"><?php echo htmlspecialchars($billet['date_creation_fr']);?></em>
      					</p></br></div>
      					<hr/>
      			<?php  $req->closeCursor(); } ?>
       
      <?php require_once('./ContentParser.php');
            $sql = 'SELECT auteur,
                    commentaire,
                    DATE_FORMAT(date_commentaire, "Le %d/%m/%Y à %Hh%imin%ss")
                    AS date_commentaire_fr 
                    FROM commentaires
                    WHERE id_billet = "'.$_GET ['billet'].'"
                    ORDER BY id';
            $reponse = $bdd -> query($sql);
            while ($billets = $reponse -> fetch()) {
            array_walk($billets, function (&$billet) {
              $contentParser = new ContentParser(htmlentities($billet['commentaire']));
              $contentParser -> parseZcode();
              $contentParser -> parseSmilies();
              $contentParser -> parseNewLines(); 
              $billet['commentaire'] = $contentParser -> render(); });
       
          foreach ($billets as $billet):
              ?>
      Veuillez m'excusez pour la mauvaise indentation, la prévisualisation, sur ce site, est assez longue...


    3. Dans cette dernière partie, je vais vous expliquer mon problème. Alors tout d'abords, dans ma page des commentaires, il s'y affiche (comme vous l'aurez deviné) le post en questions et ces commentaires. Dernièrement, j'ai réussi à afficher le post, malheureusement il ne se parse pas là est le premier problème. Ensuite, j'ai tenté de faire la même tentative avec les commentaires, mais l'affichage est assez bizarre, je vous laisse juger par l'image présente.



    Si vous avez des réponses à mes problèmes ou même de simples mots avec lesquelles je pourrais effectuer des recherches, je suis disposé à toute aides ^^
    Je vous remercie d'avance pour vos réponse
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    tu fais une erreur dans la déclaration de ta fonction anonyme.
    Corriges ainsi :
    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
    <?php
     
    require_once ('./ContentParser.php');
     
    try {
       $bdd = new PDO('mysql:host=localhost;dbname=lifenet','root','');
       $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    }
    catch (Exception $e) {
       die('Erreur :'.$e->getMessage());
    }
     
    // FONCTIONS ANONYMES
    $parse = function($data) {
       $contentParser = new ContentParser(htmlentities($data));
       $contentParser->parseZcode();
       $contentParser->parseSmilies();
       $contentParser->parseNewLines();
       return $contentParser->render();
    };
     
    $hsc = function($p) { return htmlspecialchars($p, ENT_QUOTES); };
    //---//
     
    if ( ! empty($_GET['billet'])) {
       $req = $bdd->prepare("SELECT contenu,DATE_FORMAT(date_creation,'Le %d/%m/%Y à %Hh%imin%ss') AS date_creation_fr FROM billets  WHERE id = ?");
       // je suppose que tu n'extrais qu'un seul billet
       $req->execute(array($_GET['billet']));
       $billet = $req->fetch(PDO::FETCH_ASSOC);
       ?>
       <div class="news" style="padding:5px;">
          <h3><!--<?php echo $hsc($billet['titre']);?>--></h3>
          <p>   <?php echo $hsc($parse($billet['contenu']));?><br />
             <em style="font-size:12px;float:right;"><?php echo htmlspecialchars($billet['date_creation_fr']);?></em>
          </p>
          <br />
       </div>
       <hr />
    <?php } ?>
    Pas la peine de fermer le curseur MySQL, c'est automatique d'une part et surout bien plus rapide que lorsque c'est toi le demande.
    Procèdes par analogie pour les autres commentaires

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Par défaut
    Tu as été très rapide et très précis dans ta réponse
    je dois avouer que je n'vais pas penser à faire une fonction anonyme. Très bonne idée, un grand merci et problème résolu ^^

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

Discussions similaires

  1. Parsage de code
    Par ade-9774 dans le forum Langage
    Réponses: 1
    Dernier message: 15/01/2012, 19h30
  2. De la rapidité du code
    Par jfloviou dans le forum Contribuez
    Réponses: 233
    Dernier message: 29/05/2009, 02h17
  3. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58
  4. Explorateur de code C
    Par Zero dans le forum C
    Réponses: 14
    Dernier message: 06/06/2002, 09h41
  5. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

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