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

PHP & Base de données Discussion :

Fonction gestion des commentaires


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut Fonction gestion des commentaires
    Bonjour,

    J'ai fait une fonction qui me permet de créer des commentaires et des commentaires de commentaire (notion de recursivité) mais aussi de supprimer et de modifier son commentaire

    Le problème est que la récursivité fonctionne une seule fois, sauriez-vous pourquoi ? (cf pièce jointe)

    Nota, si vous souhaitez épurer le code c'est avec plaisir !

    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
     
    	$array_commentaire = array();
    		while ($tab_data_comment = $sql_data_comment->fetch())
    		{	
    			$array_commentaire[$tab_data_comment['id']]['titre']= stripslashes(htmlspecialchars($tab_data_comment['titre'])); 
    			$array_commentaire[$tab_data_comment['id']]['contenu']= stripslashes($tab_data_comment['contenu']); 
    			$array_commentaire[$tab_data_comment['id']]['pseudo']= stripslashes(htmlspecialchars($tab_data_comment['pseudo'])); 
    			$array_commentaire[$tab_data_comment['id']]['timestamp']= intval($tab_data_comment['timestamp']); 
    			$array_commentaire[$tab_data_comment['id']]['type_comment']= intval($tab_data_comment['type_comment']); 
    			$array_commentaire[$tab_data_comment['id']]['identifiant_comment']= intval($tab_data_comment['identifiant_comment']); 
    			$array_commentaire[$tab_data_comment['id']]['message_cite']= intval($tab_data_comment['message_cite']); 
    			$array_commentaire[$tab_data_comment['id']]['id_user']= intval($tab_data_comment['id_user']); 		
    			$array_commentaire[$tab_data_comment['id']]['type_balade']= intval($tab_data_comment['type_balade']); 	
    			$array_commentaire[$tab_data_comment['id']]['id']= intval($tab_data_comment['id']);
    		}
     
    		//debut fonction
    		function afficher_commentaire($identifiant_comment, $array_commentaire,$cite = false)
    		{
    			$contenu = $array_commentaire[$identifiant_comment]['contenu'];
    			$id_message_cite = $array_commentaire[$identifiant_comment]['message_cite'];
    			$type_comment = $array_commentaire[$identifiant_comment]['type_comment'];
    			$id_maj_supr_comment = $array_commentaire[$identifiant_comment]['identifiant_comment'];
    			$type_balade = $array_commentaire[$identifiant_comment]['type_balade'];
    			$id = $array_commentaire[$identifiant_comment]['id'];
    			$timestamp = $array_commentaire[$identifiant_comment]['timestamp'];
    			$pseudo = $array_commentaire[$identifiant_comment]['pseudo'];
     
    			echo '<div class="componentheading_categorie">';
    				echo stripslashes($array_commentaire[$identifiant_comment]['titre']);			
    			echo' <span class="quote_droite">';
     
    			//si connecté
    			if (Fsb::$session->is_logged())
    			{
    				$id_user = $array_commentaire[$identifiant_comment]['id_user'];
     
    				//si c'est pas son message
    				if (Fsb::$session->id() != $id_user )
    				{
    					//il peut citer
    					if(!$cite)
    					{
    						//si il à déjà cité le message, on ne lui laisse pas quoter une seconde fois
    						$racine = $_SERVER['DOCUMENT_ROOT'];
    						include ($racine.'/inclusion/connect_pdo.php');
    						$sql_unique = $bdd->prepare('SELECT * from comment where message_cite IN(select id from comment) and message_cite = ?');
    						$sql_unique->execute(array($id));
    						$tab_unique = $sql_unique->fetch();
     
    						$message_unique = $tab_unique['message_cite'];
    						if($message_unique == $id_message_cite)
    						{
    							echo' <a href="/php/commentaires/moi/rediger_commentaire.php?type_comment='.$type_comment.'&amp;identifiant_comment='.$id_maj_supr_comment.'&amp;commentaire_cite='.$identifiant_comment.'';
     
    							if($type_balade == 0 OR $type_balade == 1)
    							{
    								echo'&amp;type_balade='.$type_balade.'';
    							}
    							echo' " title="Citer le commentaire" target="_self"><img src="/php/commentaires/images/quote.gif" title="Citer le commentaire"></a>';	
    						}
     
    					}	
    				}
     
    				//c'est son message
    				if (Fsb::$session->id() == $id_user OR Fsb::$session->data['u_auth'] == 5 OR Fsb::$session->data['u_auth'] == 4 )
    				{
    					//rien dans les messages cités
    					if(!$cite)
    					{	
    						//suppresion ok
    						echo' <a href="/php/commentaires/moi/liste_commentaire.php?type_comment='.$type_comment.'&amp;identifiant_comment='.$id_maj_supr_comment.'';
     
    						if($type_balade == 0 OR $type_balade == 1)
    						{
    							echo'&amp;type_balade='.$type_balade.'';
    						}
    						echo'&amp;id_com_a_supprimer='.$identifiant_comment.'';
     
    						if(!empty($id_message_cite))
    						{
    							echo'&amp;commentaire_cite='. $id_message_cite .'';
    						}
    						echo'" title="Supprimer le commentaire" target="_self" onclick="return confirm(\'Etes vous sur de vouloir supprimer ce commentaire ?\');"><img src="/php/commentaires/images/delete.gif" title="Supprimer le commentaire"></a>';
     
    						//editer le commentaire
    						echo' <a href="/php/commentaires/moi/rediger_commentaires.php?type_comment='.$type_comment.'&amp;identifiant_comment='.$id_maj_supr_comment.'';
    						if($type_balade == 0 OR $type_balade == 1)
    						{
    							echo'&amp;type_balade='.$type_balade.'';
    						}
    						//si modif, on passe l'id message qui à été cité si il y en a
    						if(!empty($id_message_cite))
    						{
    							echo'&amp;commentaire_cite='. $id_message_cite .'';
    						}
     
    						echo'&amp;id_message_a_editer='.$identifiant_comment.'" title="Editer le commentaire" target="_self"><img src="/php/commentaires/images/edit.gif" title="Editer le commentaire"></a>';
    					}
    				}	
    			}
     
    			echo'</span>';	
    			echo'</div>';
     
    			//recursive si c'est un message cité
    			if (!empty($id_message_cite))
    			{
    				echo'<blockquote class="cadre_forum">';
    				echo '<div class="citer">';
     
    					afficher_commentaire($id_message_cite, $array_commentaire, true);
     
    				echo '</div>';				
    				echo'</blockquote><br />';
    			}
     
    			echo $contenu;
    			echo'<p class="spacer"></p>';
     
    			echo'<span class="poste_par">';
    			echo'Posté le '.date('d/m/Y à H\hi',$timestamp). ' par <strong>'.$pseudo.' </strong>';  
    			echo'</span>';
    		}
    		//fin fonction
     
    		//on lance la fonction
    		foreach ($array_commentaire as $id => $value)
    		{
    			afficher_commentaire($id,$array_commentaire);
    		}

    Par avance un grand merci à qui saura m'aider

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Je suis en train de faire un module de blog pour mon framework. Si tu veux, je te filerai quelques sources du module pour que tu te fasse un idée (je devrais avoir fini entre aujourd'hui et demain). Ce sera en Objet mais dans ce cas de figure (aggrégation d'articles et de commentaires) c'est la solution la plus appropriée.

    N'hésite pas à me PM pour en savoir plus ou savoir où j'en suis sinon je risque de t'oublier.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut
    Hello,

    C'est gentil merci, mais n'hésite pas à me corriger aussi sur ce morceau de code ;-)


  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je n'arrive pas à rentrer dans ton algorithme, je pense que beaucoup de chose inutiles peuvent être retirées mais pour ça je dois voir ton schéma de tables.

    Tu peux me passer les tables ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut
    Tu veux des backup ou juste la structure ?

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    La structure.

Discussions similaires

  1. Probléme Modélisation - Gestion des Commentaires
    Par Pioul dans le forum Schéma
    Réponses: 5
    Dernier message: 11/12/2008, 10h23
  2. Simplification d'une fonction - gestion des événements
    Par superpigeon dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 18/11/2008, 12h44
  3. Gestion des commentaires dans cellule
    Par INeedHelp dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/04/2008, 21h35
  4. [PhpDocumentor] Gestion des commentaires avec accents
    Par Nullos Oracle dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 18/09/2007, 11h24

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