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 :

Exclure un id d'une fonction


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Exclure un id d'une fonction
    Bonjour à tous,

    Je dispose d'un forum et d'une page d'accueil qui indique les 10 derniers messages postés sur ce forum.

    Le soucis c'est que la fonction que j'utilise prend en compte tous les forums sans exception. Est-ce possible d'exclure certains forums ? (Par leur id ?)

    Si oui, pourriez-vous m'indiquer la marche à suivre car j'avoue être quelque peu perdu à ce niveau.

    Voici la fonction :

    Code sql : 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
    function get_10last_posts(){
    	global $usergid;
        connect_to_db();
    	$query = mysql_query("	SELECT t.subject, t.last_post, t.last_poster, t.last_post_id
    							FROM pun_topics AS t
    							LEFT JOIN pun_forum_perms AS fp 
    							ON (fp.forum_id=t.forum_id AND fp.group_id='".$usergid."')
    							WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL
    							ORDER BY t.last_post DESC
    							LIMIT 0, 10
    						");
    	if(!$query){echo 'toto';}
    	echo '<ul>';
    	while($post = mysql_fetch_array($query)){
    		$time = date("H:i", $post['last_post']);
    		echo '<li><a href="forum/viewtopic.php?pid='.$post['last_post_id'].'#p'.$post['last_post_id'].'">'.$time.' '.$post['subject'].'</a><span class="lastposter"> '.$post['last_poster'].'</span></li>';
    	}
    	echo '</ul>';
    }

    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
    Je ne comprends pas ton problème puisque tu dis toi même ce qu'il faut faire
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .... WHERE fp.forum_id <> xxxx AND
    (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL ...
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Le problème c'est qu'en indiquant :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE fp.forum_id=3 AND fp.forum_id=5 AND (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL

    Aucun dernier message ne s'affiche dans la liste tous forums confondus.

    Merci pour ta réponse sabotage.

  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
    Teste plutôt tes requêtes dans phpmyadmin pour voir exactement ce qu'elles retournent.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Candidat au Club
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Déjà fait et elles ne retournent aucune ligne.

  6. #6
    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
    Enlève la condition sur fp.forum_id et ajoute le par contre dans tes colonnes SELECT.
    Ainsi tu verras precisement les ids retournés et on comprendra surement pourquoi la condition enlève tout.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Candidat au Club
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par requete mysql
    MySQL a retourné un résultat vide (aucune ligne). ( Traitement en 0.0004 sec )
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT t.subject, t.last_post, t.last_poster, t.last_post_id, fp.forum_id
    FROM pun_topics AS t
    LEFT JOIN pun_forum_perms AS fp ON ( fp.forum_id = t.forum_id
    AND fp.group_id = '".$usergid."' )
    WHERE fp.forum_id
    AND (
    fp.read_forum IS NULL
    OR fp.read_forum =1
    )
    AND t.moved_to IS NULL
    ORDER BY t.last_post DESC
    LIMIT 0 , 10

    Humf.

  8. #8
    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 as laissé la condition sur fp.forum_id
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Candidat au Club
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Les id retournés sont ceux des posts (last_post_id) et non ceux des forums.

    Sachant qu'il s'agit d'un forum punbb et que les forums sont donc dans la table pun_forums (il y a 6 forums en tout), est-ce qu'il ne faut pas justement intégrer une condition directement via pun_forums ?

  10. #10
    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
    Les id retournés sont ceux des posts (last_post_id) et non ceux des forums.
    fp.forum_id contient quoi dans ton résultat ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Candidat au Club
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Ça m'affiche NULL partout.

    Mais quand j'inscris:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT t.subject, t.last_post, t.last_poster, t.last_post_id
    							FROM pun_topics AS t
    							LEFT JOIN pun_forum_perms AS fp 
    							ON (fp.forum_id=t.forum_id AND fp.group_id='".$usergid."')
    							WHERE t.forum_id=2 AND (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL
    							ORDER BY t.last_post DESC
    							LIMIT 0, 10

    Là j'ai bien les derniers posts du forum 2 qui s'affichent mais je ne sais pas ce que je dois ajouter pour qu'il m'affiche les posts des forums 1,4 et 6 en plus de ceux du 2.

    Edit : Ah bah je suis bête, je peux simplement ajouter un IN (1, 2, 4, 6)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE t.forum_id IN (1, 2, 4, 6)

    Cela fonctionne désormais

    Merci beaucoup pour ton aide sabotage !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24
  2. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48
  3. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22
  4. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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