Création espace commentaire [Résolu]

Signaler
Messages postés
7
Date d'inscription
jeudi 18 juin 2020
Statut
Membre
Dernière intervention
22 juin 2020
-
Messages postés
7
Date d'inscription
jeudi 18 juin 2020
Statut
Membre
Dernière intervention
22 juin 2020
-
bonjour la communauté je souhaite ajouter un espace commentaire à mon site internet mais je ne sais pas comment m'y prendre pour le traitement PHP.
j'ai pensé a passé mon site sur wordpress mais je sais pas si peux déplacer mon HTML CSS JS et Bootstrap sur wordpress.
est-ce que quelqu'un a une solution que ce soit un lien git hub pour télécharger un script ou autre ?
toute solution sera la bienvenue.
Merci d'avance

5 réponses

Messages postés
230
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
19 juin 2020
27
Hello,

Je connais ça pour gérer des commentaires et un peu plus en fait mais je ne l'ai jamais utilisé.

https://disqus.com/

Je l'avais noté pour éventuellement le mettre en place sur mon site quand j'aurais le temps...mdr toujours pas fait !!
Salut,
PHP sert à enregistrer sur la base de données et inversement à récupérer les enregistrements de la base pour les publier sur le site(en préprocesseur le contenu est écrit avant que la page soit fournie à l'internaute).
Sinon si vous ne savez pas utiliser PHP(qui servira surtout à écrire le contenu dans la page et envoyer les requêtes à la base) et créer une base de données cela s'apprend ;)

Quand à un CMS son but est justement de se passer de développement et fournir les mêmes services à partir d'un modèle(éventuellement avec des modules) donc dans ce cas le plus efficace est d'utiliser un des modèles.
Reprendre le HTML qui est la partie facile et simple c'est beaucoup vous prendre la tête pour pas grand chose.

Voir aussi la définition d'un Système d'informations, SGBD et le langage SQL.
Messages postés
7
Date d'inscription
jeudi 18 juin 2020
Statut
Membre
Dernière intervention
22 juin 2020

Bonjour, merci je vais regarder ça
Messages postés
7
Date d'inscription
jeudi 18 juin 2020
Statut
Membre
Dernière intervention
22 juin 2020

bonjour j'ai bien quelques notions de php et de sql qui sont indispensable pour faire des requêtes afin de trouver et de faire afficher ce qu'il faut depuis la base de donnée.
j'ai essayer un script sur la doc de php il fonctionne jusqu'a un certain niveau je m'explique pour poster un commentaire ça fonctionne bien en revanche le problème se pose pour répondre au commentaire je ne parvient pas a envoyer la réponse à la base de donnée. j'ai l'impression que le bouton n'est pas clicable.
ci-joint le code pouvez voir ce qu'il ne vas pas Merci bien

<?php
 // Fonctions de chargement des commentaires

$db = new PDO('mysql:host=localhost;dbname=BDD;charset=utf8mb4', 'root', 'root');

$currenturl = strtolower('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);


 function commentaires($url, $id_commentaire=0)
 {
  global $db;
 
  $i=0;
  $commentaires = '';
  $tcolor = ['blue','green','orange','purple','gray','red'];
  
  $sql = "SELECT id_commentaire, nom, commentaire, email, date FROM p3x_commentaire WHERE actif='a' AND url=".$db->quote($url);
  if($id_commentaire!=0){ $sql .= " AND id_sous_commentaire=".$id_commentaire; }else{ $sql .= " AND id_sous_commentaire=0"; }
  $sql .= " ORDER BY id_sous_commentaire, date";
  
  foreach($db->query($sql) as $data) {
   $i++;
   mt_srand(crc32($data['email']));
   
   $commentaires .= '<div class="box-light">';
    
    if($i==1 && $id_commentaire==0)
    {
     $sql2 = "SELECT COUNT(id_commentaire) FROM p3x_commentaire WHERE actif='a' AND url=".$db->quote($url);
     $query = $db->prepare($sql2); 
     $query->execute(); 
     $row = $query->fetch();
     $count = $row[0];
     $nb = $count;
     $s='s';
     
     if($count==1){ $nb = 'Un'; }
     
     $commentaires .= '<h2>'.$nb.' commentaire'.$s.'</h2>';
    }
    
    $commentaires .= '<div class="separator"></div>
         <div class="box-light">
          <div class="letter '.$tcolor[mt_rand(0, count($tcolor) - 1)].'">'.htmlentities(substr($data['nom'], 0, 1)).'</div>
          <p class="chapeau">@'.htmlentities($data['nom']).' <span class="gray">'.$data['date'].'</span></p>
          <p>'.htmlentities($data['commentaire']).'</p>
          
           <input name="action" value="poster-commentaire" type="hidden">
           <input name="email" class="hidden" type="text">
           <input name="id_sous_commentaire" value="'.$data['id_commentaire'].'" type="hidden">
           <div id="comform-div-'.$data['id_commentaire'].'" class="comform-div hidden">
            <p>Réponse à @'.htmlentities($data['nom']).'<br><textarea name="commentaire"></textarea></p>
            <p>Nom<br><input name="nom" type="text"></p>
            <p>Adresse e-mail<br><input name="emailtrue" type="text"></p>
           </div>
           <div class="clear"></div>
           <p><a class="repondre" data-rel="'.$data['id_commentaire'].'" href="#">Répondre</a></p>
           <div class="clear"></div>
          
         </div>';
    
    $commentaires .= commentaires($url, $data['id_commentaire']);
    
   $commentaires .= '</div>';
  }
  
  return $commentaires;
 }

 // Insertion d'un commentaire
 
 if(isset($_POST['action']) && $_POST['action']=='poster-commentaire')
 {
  // Protection robot
  if(isset($_POST['email']) && empty($_POST['email']))
  {
   if(isset($_POST['commentaire']) && !empty($_POST['commentaire']) && isset($_POST['nom']) && !empty($_POST['nom']) && isset($_POST['emailtrue']) && !empty($_POST['emailtrue']))
   {
    $id_sous_commentaire = 0;
    
    if(isset($_POST['id_sous_commentaire']) && is_numeric($_POST['id_sous_commentaire'])){ $id_sous_commentaire = intval($_POST['id_sous_commentaire']); }
   
    if(filter_var($_POST['emailtrue'], FILTER_VALIDATE_EMAIL))
    {
     $sql = "INSERT INTO p3x_commentaire(
            id_sous_commentaire,
            nom,
            commentaire,
            email,
            url,
            actif,
            date
           ) VALUES(
            ".$id_sous_commentaire.",
            :nom,
            :commentaire,
            :emailtrue,
            :currenturl,
            'a',
            '".date("Y-m-d H:i:s")."'
           )";
     $query = $db->prepare($sql);
     $query->bindValue(':nom', $_POST['nom'], PDO::PARAM_STR);
     $query->bindValue(':commentaire', $_POST['commentaire'], PDO::PARAM_STR);
     $query->bindValue(':emailtrue', $_POST['emailtrue'], PDO::PARAM_STR);
     $query->bindValue(':currenturl', $currenturl, PDO::PARAM_STR);
     $query->execute();
     
     unset($_POST);
     
     $message_text = 'Votre message a été déposé mais vous devez attendre qu\'il soit validé.';
     $message_img = 'check';
    }
    else
    {
     $message_text = 'Votre adresse e-mail n\'est pas valide !';
    }
   }
   else
   {
    $message_text = 'Les informations obligatoires ne sont pas toutes renseignées !';
   }
  }
 }
 
 // Chargement des commentaires
 $commentaires = commentaires($currenturl, 0, 0);
 if(!empty($commentaires)){ echo '<div class="box-light">'.$commentaires.'</div>'; }
?>

<!DOCTYPE html>
<html>
<head>
 <title></title>
</head>
<body>
 <h3>Poster un commentaire</h3>
<form method="post" action="<?php echo $currenturl; ?>">
 <input type="hidden" name="action" value="poster-commentaire" />
 <input type="text" name="email" class="hidden" />
 <p>Commentaire<br /><textarea name="commentaire"></textarea></p>
 <p>Nom<br /><input type="text" name="nom" /></p>
 <p>Adresse e-mail<br /><input type="text" name="emailtrue" /></p>
 <p><input type="submit" class="button-blue left" value="Poster mon commentaire" /></p>
 <div class="clear"></div>
 <p class="red right">Votre adresse e-mail n'est pas publiée lorsque vous ajoutez un commentaire.<br />Tous les champs sont obligatoires pour soumettre votre commentaire.</p>
 <div class="clear"></div>
</form>
 <style>
  input[type=text]{padding:10px;width:280px;border:1px solid #E7E7E7;border-radius:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-family:Arial;}
input[type=text]:hover{background-color:#f8fbff;}
textarea{padding:10px;border:1px solid #E7E7E7;border-radius:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:125px;}
.box-light{padding:25px;color:#333333;margin:10px 0;background:#ffffff;transition:all 0.6s ease 0s;}
 .box-light .box-light{padding:0 35px;}
  .box-light .box-light p{margin:5px 0px;}
 .box-light h2,.box-light h3,.box-light h4{margin:0;padding:0;}
 .box-light h3{margin-top:10px;}
  .box-light h3 a{text-decoration:none;}
 .box-light img{transition:all 0.6s ease 0s;display:block;}
 .box-light:hover{box-shadow:1px 1px 10px #dcdcdc;}
  .box-light .box-light:hover{box-shadow:none;}
 .box-light p{padding:0;}
.letter{background-color:#4C74AD;color:#ffffff;border-radius:50%;width:40px;height:40px;line-height:35px;font-weight:bold;text-align:center;float:left;margin-left:-35px;margin-right:15px;}
 .letter.blue{background-color:#3B689F;}
 .letter.green{background-color:#44A437;}
 .letter.orange{background-color:#ff7537;}
 .letter.purple{background-color:#b99aff;}
 .letter.gray{background-color:#888888;}
 .letter.red{background-color:#DC4739;}
.chapeau{font-size:1em;margin:5px 0;font-weight:bold;}
.gray{color:#888888;}
.red{color:#DC4739;}
.hidden{display:none;}
.clear{clear:both;}
.separator{border-top:1px solid #e7e7e7;border-bottom:1px solid #ffffff;width:100%;height:1px;margin-top:30px;margin-bottom:30px;clear:both;}
.button-blue{margin-top:10px;float:right;font-family:Arial;cursor:pointer;font-size:1em;padding:10px 15px;font-weight:bold;border-radius:5px;color:#ffffff;border:0px;background:#3e679b;box-sizing:border-box;text-align:center;}


 </style>

<script src="//code.jquery.com/jquery-3.4.1.min.js"></script>

<script>
 $('.repondre').click(function(){
  var id = $(this).attr('data-rel');
  if($('#comform-div-' + id).hasClass('hidden'))
  {
   $('.repondre').removeClass('button-blue');
   $(this).addClass('button-blue').css('float','left');
   $('.comform-div').addClass('hidden');
   $('#comform-div-' + id).find('p').show();
   $('#comform-div-' + id).removeClass('hidden');
   return false;
  }
  else
  {
   $('#comform-' + id).submit();
   return false;
  }
 });
</script>
</body>
</html>


CREATE TABLE `p3x_commentaire` (
  `id_commentaire` smallint(4) UNSIGNED NOT NULL,
  `id_sous_commentaire` smallint(4) UNSIGNED NOT NULL,
  `nom` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `commentaire` text COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(150) COLLATE utf8_unicode_ci NOT NULL,
  `url` varchar(250) COLLATE utf8_unicode_ci NOT NULL,
  `actif` enum('y','n','a') COLLATE utf8_unicode_ci NOT NULL,
  `date` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ALTER TABLE `p3x_commentaire`
  ADD PRIMARY KEY (`id_commentaire`),
  ADD KEY `id_sous_commentaire` (`id_sous_commentaire`);

ALTER TABLE `p3x_commentaire`
  MODIFY `id_commentaire` smallint(4) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;



EDIT : Correction des balises de code ( encore !! )
Messages postés
28940
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juillet 2020
2 609 >
Messages postés
7
Date d'inscription
jeudi 18 juin 2020
Statut
Membre
Dernière intervention
22 juin 2020

Sans montrer ton code modifié... comment penses que je saches à quoi correspond la ligne 47 ... ni que je puisse vérifier si tu as bien appliqué toutes les consignes ?

PS : Lorsque tu postes ton code sur le forum, tu dois y ajouter le langage dans les balises de code.
Explications ( à lire entièrement ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
7
Date d'inscription
jeudi 18 juin 2020
Statut
Membre
Dernière intervention
22 juin 2020
>
Messages postés
28940
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juillet 2020

voila merci mais ça ne m'affiche plus rien maintenant


<?php
 // Fonctions de chargement des commentaires

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

try{
$db = new PDO('mysql:host=localhost;dbname=BDD;charset=utf8mb4', 'root', 'root');

// Activation des erreurs PDO
 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
 $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}

$currenturl = strtolower('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);


 function commentaires($url, $id_commentaire=0)
 {
  global $db;
 
  $i=0;
  $commentaires = '';
  $tcolor = ['blue','green','orange','purple','gray','red'];
  
  $sql = "SELECT id_commentaire, nom, commentaire, email, date FROM p3x_commentaire WHERE actif='a' AND url=".$db->quote($url);
  if($id_commentaire!=0){ $sql .= " AND id_sous_commentaire=".$id_commentaire; }else{ $sql .= " AND id_sous_commentaire=0"; }
  $sql .= " ORDER BY id_sous_commentaire, date";
  
  foreach($db->query($sql) as $data) {
   $i++;
   mt_srand(crc32($data['email']));
   
   $commentaires .= '<div class="box-light">';
    
    if($i==1 && $id_commentaire==0)
    {
     $sql2 = "SELECT COUNT(id_commentaire) FROM p3x_commentaire WHERE actif='a' AND url=".$db->quote($url);
     $query = $db->prepare($sql2); 
     $query->execute(); 
     $row = $query->fetch();
     $count = $row[0];
     $nb = $count;
     $s='s';
     
     if($count==1){ $nb = 'Un'; }
     
     $commentaires .= '<h2>'.$nb.' commentaire'.$s.'</h2>';
    }
    
    $commentaires .= '<div class="separator"></div>
         <div class="box-light">
          <div class="letter '.$tcolor[mt_rand(0, count($tcolor) - 1)].'">'.htmlentities(substr($data['nom'], 0, 1)).'</div>
          <p class="chapeau">@'.htmlentities($data['nom']).' <span class="gray">'.$data['date'].'</span></p>
          <p>'.htmlentities($data['commentaire']).'</p>
          
           <input name="action" value="poster-commentaire" type="hidden">
           <input name="email" class="hidden" type="text">
           <input name="id_sous_commentaire" value="'.$data['id_commentaire'].'" type="hidden">
           <div id="comform-div-'.$data['id_commentaire'].'" class="comform-div hidden">
            <p>Réponse à @'.htmlentities($data['nom']).'<br><textarea name="commentaire"></textarea></p>
            <p>Nom<br><input name="nom" type="text"></p>
            <p>Adresse e-mail<br><input name="emailtrue" type="text"></p>
           </div>
           <div class="clear"></div>
           <p><a class="repondre" data-rel="'.$data['id_commentaire'].'" href="#">Répondre</a></p>
           <div class="clear"></div>
          
         </div>';
    
    $commentaires .= commentaires($url, $data['id_commentaire']);
    
   $commentaires .= '</div>';
  }
  
  return $commentaires;
 }

 // Insertion d'un commentaire
 
 if(isset($_POST['action']) && $_POST['action']=='poster-commentaire')
 {
  // Protection robot
  if(isset($_POST['email']) && empty($_POST['email']))
  {
   if(isset($_POST['commentaire']) && !empty($_POST['commentaire']) && isset($_POST['nom']) && !empty($_POST['nom']) && isset($_POST['emailtrue']) && !empty($_POST['emailtrue']))
   {
    $id_sous_commentaire = 0;
    
    if(isset($_POST['id_sous_commentaire']) && is_numeric($_POST['id_sous_commentaire'])){ $id_sous_commentaire = intval($_POST['id_sous_commentaire']); }
   
    if(filter_var($_POST['emailtrue'], FILTER_VALIDATE_EMAIL))
    {
     $sql = "INSERT INTO p3x_commentaire(
            id_sous_commentaire,
            nom,
            commentaire,
            email,
            url,
            actif,
            date
           ) VALUES(
            ".$id_sous_commentaire.",
            :nom,
            :commentaire,
            :emailtrue,
            :currenturl,
            'a',
            '".date("Y-m-d H:i:s")."'
           )";
     $datas = array(':id_sous_commentaire'=>$id_sous_commentaire ');
     try{ 
     $query = $db->prepare($sql);
     $query->bindValue(':nom', $_POST['nom'], PDO::PARAM_STR);
     $query->bindValue(':commentaire', $_POST['commentaire'], PDO::PARAM_STR);
     $query->bindValue(':emailtrue', $_POST['emailtrue'], PDO::PARAM_STR);
     $query->bindValue(':currenturl', $currenturl, PDO::PARAM_STR);
     $query->execute($datas);
     } catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
   echo " Les datas : " ;
  print_r($datas);
}
     unset($_POST);
     
     $message_text = 'Votre message a été déposé mais vous devez attendre qu\'il soit validé.';
     $message_img = 'check';
    }
    else
    {
     $message_text = 'Votre adresse e-mail n\'est pas valide !';
    }
   }
   else
   {
    $message_text = 'Les informations obligatoires ne sont pas toutes renseignées !';
   }
  }
 }

 // Chargement des commentaires
 $commentaires = commentaires($currenturl, 0, 0);
 if(!empty($commentaires)){ echo '<div class="box-light">'.$commentaires.'</div>'; }
?>
<h3>Poster un commentaire</h3>
<form method="post" action="<?php echo $currenturl; ?>">
 <input type="hidden" name="action" value="poster-commentaire" />
 <input type="text" name="email" class="hidden" />
 <p>Commentaire<br /><textarea name="commentaire"></textarea></p>
 <p>Nom<br /><input type="text" name="nom" /></p>
 <p>Adresse e-mail<br/><input type="text" name="emailtrue" /></p>
 <p><input type="submit" class="button-blue left" value="Poster mon commentaire" /></p>
 <div class="clear"></div>
 <p class="red right">Votre adresse e-mail n'est pas publiée lorsque vous ajoutez un commentaire.<br />Tous les champs sont obligatoires pour soumettre votre commentaire.</p>
 <div class="clear"></div>
</form>

<script src="//code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
 $('.repondre').click(function(){
  var id = $(this).attr('data-rel');
  if($('#comform-div-' + id).hasClass('hidden'))
  {
   $('.repondre').removeClass('button-blue');
   $(this).addClass('button-blue').css('float','left');
   $('.comform-div').addClass('hidden');
   $('#comform-div-' + id).find('p').show();
   $('#comform-div-' + id).removeClass('hidden');
   return false;
  }
  else
  {
   $('#comform-' + id).submit();
   return false;
  }
 });
</script>


<style>
input[type=text]{padding:10px;width:280px;border:1px solid #E7E7E7;border-radius:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-family:Arial;}
input[type=text]:hover{background-color:#f8fbff;}
textarea{padding:10px;border:1px solid #E7E7E7;border-radius:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:125px;}
.box-light{padding:25px;color:#333333;margin:10px 0;background:#ffffff;transition:all 0.6s ease 0s;}
 .box-light .box-light{padding:0 35px;}
  .box-light .box-light p{margin:5px 0px;}
 .box-light h2,.box-light h3,.box-light h4{margin:0;padding:0;}
 .box-light h3{margin-top:10px;}
  .box-light h3 a{text-decoration:none;}
 .box-light img{transition:all 0.6s ease 0s;display:block;}
 .box-light:hover{box-shadow:1px 1px 10px #dcdcdc;}
  .box-light .box-light:hover{box-shadow:none;}
 .box-light p{padding:0;}
.letter{background-color:#4C74AD;color:#ffffff;border-radius:50%;width:40px;height:40px;line-height:35px;font-weight:bold;text-align:center;float:left;margin-left:-35px;margin-right:15px;}
 .letter.blue{background-color:#3B689F;}
 .letter.green{background-color:#44A437;}
 .letter.orange{background-color:#ff7537;}
 .letter.purple{background-color:#b99aff;}
 .letter.gray{background-color:#888888;}
 .letter.red{background-color:#DC4739;}
.chapeau{font-size:1em;margin:5px 0;font-weight:bold;}
.gray{color:#888888;}
.red{color:#DC4739;}
.hidden{display:none;}
.clear{clear:both;}
.separator{border-top:1px solid #e7e7e7;border-bottom:1px solid #ffffff;width:100%;height:1px;margin-top:30px;margin-bottom:30px;clear:both;}
.button-blue{margin-top:10px;float:right;font-family:Arial;cursor:pointer;font-size:1em;padding:10px 15px;font-weight:bold;border-radius:5px;color:#ffffff;border:0px;background:#3e679b;box-sizing:border-box;text-align:center;}
</style>



EDIT : Correction des balises de code
Messages postés
28940
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juillet 2020
2 609 >
Messages postés
7
Date d'inscription
jeudi 18 juin 2020
Statut
Membre
Dernière intervention
22 juin 2020

Tu as une jolie erreur à la ligne
    $datas = array(':id_sous_commentaire'=>$id_sous_commentaire ');


Tu remarqueras également que j'ai édité ton message pour corriger les balises de code.......
Tu as mis 15 dans ta page... là ou 2 suffisaient !
Messages postés
7
Date d'inscription
jeudi 18 juin 2020
Statut
Membre
Dernière intervention
22 juin 2020
>
Messages postés
28940
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juillet 2020

y'a une quote en plus mais ça fonctionne toujours pas j'ai toujours une erreur ligne 46

Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [:id_sous_commentaire] => 0 )
Notice: Undefined offset: 0 in /Applications/MAMP/htdocs/ct/index.php on line 46
Messages postés
28940
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juillet 2020
2 609 >
Messages postés
7
Date d'inscription
jeudi 18 juin 2020
Statut
Membre
Dernière intervention
22 juin 2020

- Tu n'as pas mis la requête concernée dans un bloc try/catch
- Tu as défini ( à juste titre...) le mode de fetch en "ASSOC" .. donc l'indice 0 n'existe pas

Corrige le code par

$sql = "SELECT COUNT(id_commentaire) as NB 
        FROM p3x_commentaire 
        WHERE actif='a' 
        AND url= :url ";
        
$datas = array( ":url"=> $db->quote($url) );        

try{        
  $query = $db->prepare($sql); 
  $query->execute(); 
  $row = $query->fetch();
  $nb = !empty($row) ? $row['NB'] : 0 ;
}catch(Exception $e){
  echo "Erreur : " . $e->getMessage();
}



Tu as aussi une erreur dans ton autre requête...
Vu que tu fais du bindparam .. la variable $data est superflue et risque de te générer une erreur...

.
Messages postés
7
Date d'inscription
jeudi 18 juin 2020
Statut
Membre
Dernière intervention
22 juin 2020

bonjour les gens et merci de votre aide j'ai résolue le problème.