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

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2016
    Messages : 11
    Points : 8
    Points
    8
    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
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!function_exists('is_already_liked_or_disliked')){
    Tu avais peur qu'un jour PHP intègre la fonction ?

    Pour ton problème tu as une problème de logique dans tes conditions, si tu regardes seulement le début de ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!empty($_GET['id'])){
    	......
    }else{
    	if(!empty($_GET['id'])){
    Si tu faisais une seule table avec une colonne indiquant like ou dislike, tu te simplifierais déjà la vie.
    Tu aurais une seule fonction qui irait lire le statut (like, dislike ou rien).

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2016
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Comment faire?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!function_exists('is_already_liked_or_disliked')){
    on ne sait jamais!



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(!empty($_GET['id'])){
    		if(has_already_liked_micropost($_GET['id'])){
     
                        ...
     
                    }elseif(has_already_disliked_micropost($_GET['id'])){
     
     
                        ...
    Corrigerait-il le problème? Je ne suis pas très bon...

    Ensuite, j'imagine que du coté des balises, ça n'est pas trop ça étant donné que les liens "j'aime" et "je n'aime pas" ne s'affichent pas.Donc, la fonction me parait toujours corrompue et je ne vois pas comment disposer les <?php ?> et les <a>.
    Et enfin, vu que j'ai besoin d'un id, user_id, micropost_id et created_at, je ne vois pas bien comment je pourrais faire pour différencier les informations dans une table unique, à moins d'inclure un ENUM peut-etre?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu ajoutes seulement une colonne "statut" comme je t'ai indiqué.
    Ca peut être simplement un booléen dislike / like.

Discussions similaires

  1. Vérification fonction j'aime/je n'aime pas
    Par pieace dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2016, 00h25
  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