Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/02/2012, 17h45   #1
Candidat au titre de Membre du Club
 
Homme
Inscription : août 2011
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 54
Points : 12
Points : 12
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 :
    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
Type de fichier : png Sans titre.png (75,2 Ko, 4 affichages)
ade-9774 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 23h26   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
Bonsoir,

tu fais une erreur dans la déclaration de ta fonction anonyme.
Corriges ainsi :
Code :
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
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 15h29   #3
Candidat au titre de Membre du Club
 
Homme
Inscription : août 2011
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 54
Points : 12
Points : 12
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 ^^
ade-9774 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h26.


 
 
 
 
Partenaires

Hébergement Web