Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer un Système Like/Dislike en PHP.

Sujet résolu
    19 novembre 2017 à 15:12:50

    Salut,
    Je souhaite créer un système de Like/Dislike sur un article, et ce en php.
    Sur le code concerant l'article j'ai ce bout de code:
    <div><a href="likes.php?id=<?php echo $donnees['id']; ?>&u=<?php echo $userinfo['id']; ?>">J'AIME</a></div>
    
    //"id" pour l'id de l'article, "u" pour l'id de l'user
    Celui-ci renvoi à la page php (likes.php) ayant pour code ceci:
    <?php 
    
    include('var.php');
    
    if(isset($GET['id']) AND !empty($GET['id'])) {
    $getid = (int) $GET['id']; // Récup de l'id de l'Article contenu ds l'url
    $getiduser = (int) $GET['u']; // Récup de l'id de l'User contenu ds l'url
    
    
    $req = $bdd->prepare('SELECT id FROM likes WHERE idpost = ? AND iduser = ?');
    $req->execute(array($getid, $getiduser));
    
    $resultat = $req->fetch();
    
    if (!$resultat) {
    		
    	$reqins = $bdd->query('INSERT INTO likes(idpost, iduser) VALUES (\''.$getid.'\', \''.$getiduser.'\')');
    	
    	$requp = $bdd->query('UPDATE likes SET likes = likes + 1');
    	
    } else {
    	
    	$reqbs = $bdd->query('UPDATE likes SET likes = likes - 1');
    	
    }
    
    }
    
    ?>
    Mon problème: lorsque je click sur le lien "J'aime",
    ça m'ouvre la page likes.php, au lieu d'exécuté le code qu'elle contient.
    Quelqu'un peut m'aider svp ?

    -
    Edité par UriUri 19 novembre 2017 à 15:14:20

    • Partager sur Facebook
    • Partager sur Twitter
      19 novembre 2017 à 15:51:02

      Salut ;). Renseignes toi sur les requêtes Ajax. Tu trouveras beaucoup de documentation là dessus ;)
      • Partager sur Facebook
      • Partager sur Twitter
        19 novembre 2017 à 16:14:06

        Je vais essayé de voir ça.

        Mais là j'ai l'impression que j'y suis presque, dc je vais débord rester là-dessus.

        Ta pas un avis, même une indication à me donner ?

        • Partager sur Facebook
        • Partager sur Twitter
          19 novembre 2017 à 17:03:59

          Salut, essais un truc comme ça :

          Dans ta vue html, passe par du jquery/ajax :

          <a data-id="<?= $donnees['id'] ?>" class="like">
          <i class="fa-thumbs-o-up <?php if(une requete qui verif si la personne a like le post): ?>active<?php endif; ?>"></i>LIKE
          </a>
          $('.like').click(function(){
                      var like = $(this).data('id');
                      $.ajax
                      ({
                          data: {"like ": like },
                          type: 'post'
                      });
                      if (!$(this).children().hasClass('active')) {
                          $(this).children().addClass('vactive');
                      } else {
                          $(this).children().removeClass('active');
             }
          });


          Côté PHP ca donnerait quelque chose comme :

          if(isset($_POST['like'])) {
          $idlike = $_POST['like'];
          $iduser = //une méthode qui récup l'id user en cours avec les session, facile à faire, je peux t'en filer une si tu veux mais bon
          addFav($iduser , $idlike);
          }
          
          function addFav($iduser, $$idlike) {
          $req = $bdd->prepare('SELECT id FROM likes WHERE idpost = ? AND iduser = ?');
          $req->execute(array($getid, $getiduser));
           
          $resultat = $req->fetch();
           
          if (!$resultat) {
                   
              $reqins = $bdd->query('INSERT INTO likes(idpost, iduser) VALUES (\''.$getid.'\', \''.$getiduser.'\')');
               
              $requp = $bdd->query('UPDATE likes SET likes = likes + 1');
               
          } else {
               
              $reqbs = $bdd->query('UPDATE likes SET likes = likes - 1');
               
          }



          -
          Edité par valentinmoulinier 19 novembre 2017 à 20:08:44

          • Partager sur Facebook
          • Partager sur Twitter
            19 novembre 2017 à 18:31:58

            Salut, et Merci pour ta réponse.

            Vu que je n'ai jamais fait du JQuery/AJAX, ça serai possible que tu me donner les 2 infos suivante, q je sois sure de ne pas me tromper stp:

            - JQuery/AJAX, Ligne 2: Je ne vois pas du tout de quel type de requete tu parle, c du php/mysql ?

            - PHP, Ligne 3: La methode pr recup l'id user c bien: $iduser = $_GET['id']; (dans le cas où ça serai renvoyer dans l'url ?) ; Ensuite, c bien "addFav($iduser , $idlike);" et non pas addFav(iduser , $idlike); ?

            -
            Edité par UriUri 19 novembre 2017 à 18:33:03

            • Partager sur Facebook
            • Partager sur Twitter
              19 novembre 2017 à 20:15:10

              Bah la, sur la 2ème ligne, c'est du PHP, juste une fonction qui permet à l'utilisateur de savoir si il a like le post ou non.

              Donc une requête qui ferait : SELECT * FROM likes WHERE idpost = $idpost AND iduser = $iduser
              Si ta requête retourne quelque chose, alors c'est que la personne a déjà like le post, du coup, il faut que la classe active sois chargé, que le petit pouce devienne bleu quoi ^^
              Tout ça n'est que pour le chargement de la page bien sur.

              Une méthode pour récupérer l'id user de la personne courante.. J'imagine que sur ton site on peux se connecter ? Il doit y avoir un système de login et tu enregistre des informations sur la personne, genre id, email des trucs comme ça dans la session non ? C'est la base. Ou alors je sais pas comment tu fais.

              Du coup une méthode pour récupérer l'id d'une personne ça pourrait être ..

              function islogged(){
                  if(isset($_SESSION['user_id'])) {
                      return $_SESSION['user_id'];
                  }
                      return false;
               }

              C'est du PHP de base, si tu as du mal à comprendre, tu peux reprendre les cours de PHP je pense.
              (oui j'ai oublié le $ devant iduser..)

              • Partager sur Facebook
              • Partager sur Twitter
                20 novembre 2017 à 10:50:46

                J'ai trouvé la Solution:

                Côté HTML

                <div><a href="likes.php?id=<?php echo $donnees['id']; ?>&u=<?php echo $userinfo['id']; ?>">J'AIME</a>



                Côté PHP:

                <?php
                 
                 
                include('var.php');
                 
                $getid = intval($_GET['id']);
                $getu = intval($_GET['u']);
                 
                 
                $reqid = $bdd->prepare('SELECT * FROM post WHERE id = ?');
                $reqid->execute(array($getid));
                 
                $postinfo = $reqid->fetch();
                 
                $requ = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
                $requ->execute(array($getu));
                 
                $userinfo = $requ->fetch();
                 
                 
                 
                          
                $check = $bdd->query("SELECT * FROM likes WHERE idpost = '".$postinfo['id']."' AND iduser = '".$userinfo['id']."'");
                     
                $resultat = $check->fetch();
                 
                if ($resultat) {   
                 
                    $checkbis = $bdd->query("SELECT * FROM likes WHERE idpost = '".$postinfo['id']."' AND iduser = '".$userinfo['id']."'");
                 
                    $result = $checkbis->fetch();
                     
                            if ($result['likes'] == 1) {
                     
                                $reqbs = $bdd->query('UPDATE likes SET likes = likes - 1 WHERE idpost = '.$postinfo['id'].' AND iduser = '.$userinfo['id'].'');
                     
                            } else {
                                 
                                $requp = $bdd->query('UPDATE likes SET likes = likes + 1 WHERE idpost = '.$postinfo['id'].' AND iduser = '.$userinfo['id'].'');
                 
                            }  
                     
                } else {
                 
                 
                $reqins = $bdd->query('INSERT INTO likes(idpost, iduser) VALUES ("'.$postinfo['id'].'", "'.$userinfo['id'].'")');
                 
                $requp = $bdd->query('UPDATE likes SET likes = likes + 1 WHERE idpost = '.$postinfo['id'].' AND iduser = '.$userinfo['id'].'');
                 
                 
                 
                }
                
                
                
                
                header( "Location: LA OU VOUS VOULEZ);
                
                
                ?>



                Merci pour vos aides.

                -
                Edité par UriUri 21 novembre 2017 à 12:23:51

                • Partager sur Facebook
                • Partager sur Twitter

                Créer un Système Like/Dislike en PHP.

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown