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 :

Vérification fonction j'aime/je n'aime pas


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2016
    Messages : 11
    Par défaut Vérification fonction j'aime/je n'aime pas
    Bonjour,

    J'ai créé des fonctions j'aime / je n'aime pas. J'essaie maintenant de les mettre en relation pour permettre d'annuler le "j'aime" ou "je n'aime pas" lorsqu'on on choisi l'autre... Ca permet ainsi d'en avoir un seul choisi à la fois

    J'ai créé 2 tables SQL pour cela, une pour j'aime, l'autre pour je n'aime pas.

    En gros, maintenant, mon problème est que la fonction est mal utilisée ou écrite car rien ne se passe ou bien les liens disparaissent..

    Voici la fonction qui pose problème (Soyez indulgent face à mon inexpérience ) :

    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
     
     
    if(!function_exists('is_already_liked_or_disliked')){
    	function is_already_liked_or_disliked($micropost_id){
     
    		if(!empty($_GET['id'])){
    			if(has_already_liked_micropost($_GET['id'])){
    				$q = $db->prepare('DELETE FROM micropost_like 
    									WHERE user_id = :user_id 
    									AND micropost_id = :micropost_id');
    				$q->execute([
    					'user_id' => get_session('user_id'),
    					'micropost_id' => $_GET['id']
    				]);
     
    				$q = $db->prepare('UPDATE microposts SET like_count  = like_count - 1 
    					WHERE id = :micropost_id');
    				$q->execute([
    					'micropost_id' => $_GET['id']
    				]);
    			} 
     
     
    		}else{
     
    		if(!empty($_GET['id'])){
     
    			if(has_already_disliked_micropost($_GET['id'])){
    				$q = $db->prepare('DELETE FROM micropost_dislike 
    									WHERE user_id = :user_id 
    									AND micropost_id = :micropost_id');
    				$q->execute([
    					'user_id' => get_session('user_id'),
    					'micropost_id' => $_GET['id']
    				]);
     
    				$q = $db->prepare('UPDATE microposts SET dislike_count  = dislike_count - 1 
    					WHERE id = :micropost_id');
    				$q->execute([
    					'micropost_id' => $_GET['id']
    				]);
    			} 
    		}
     
    	}
     
    }
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
              <li>
                <?php if(is_already_liked_or_disliked($microposts->m_id)): ?>
                  <?php if(has_already_disliked_micropost($microposts->m_id)): ?>  
                    <a id="undislike<?= $microposts->m_id?>" data-action="undislike" class="like btn btn-warning unlocked_inactive" href="undislike_micropost.php?id=<?= $microposts->m_id ?>"><i class="fa fa-thumbs-down"></i></a>
                  <?php else: ?>
                    <a id="dislike<?= $microposts->m_id?>" data-action="dislike" class="like btn btn-default unlocked_inactive" href="dislike_micropost.php?id=<?= $microposts->m_id ?>"><i class="fa fa-thumbs-down"></i></a>
                  <?php endif; ?>
                <?php endif ?>
              </li>

    Merci d'avance pour votre aide!

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    Bonjour,

    C'est assez bizarre comme façon de faire : n'est-ce pas plus simple de n'avoir qu'une qu'une table avec les réactions, un champ type (ENUM avec like/dislike, par exemple) ? Tu pourrais ainsi profiter de REPLACE INTO qui utilise la clé primaire de la table pour savoir s'il faut insérer ou mettre à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REPLACE INTO reactions(user_id, micropost_id, reaction) VALUES(:user_id, :micropost_id, :reaction);
    Ensuite tu peux en une requête avec un COUNT et un GROUP BY compter le nombre de réactions par type...

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    Je ne vois pas pourquoi tu fais deux fois ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($_GET['id'])){
    Un petit require_once pour inclure ta lib t'éviterait de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!function_exists('is_already_liked_or_disliked')){

Discussions similaires

  1. la fonction is_file et is_dir ne marche pas, HELP !!!
    Par chaser_T dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2006, 10h54
  2. [EasyPHP] [Apache] appel de fonction JS fonctionne dans .html et pas .php
    Par durand2504 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 09/03/2006, 15h14
  3. appel de fonction JS fonctionne dans .html et pas .php
    Par durand2504 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/03/2006, 15h10
  4. Fonction qui marche sous FF mais pas IE
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/01/2006, 14h07
  5. [débutant] fonction s'exécutant en C mais pas en C++
    Par goran kajfes dans le forum Débuter
    Réponses: 8
    Dernier message: 28/12/2005, 21h04

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