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

WordPress PHP Discussion :

Category__and et Ajax


Sujet :

WordPress PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Points : 159
    Points
    159
    Par défaut Category__and et Ajax
    Bonjour à tous

    Tout d'abord, je ne cache que ce message est du cross posting... il est déjà ici http://www.wordpress-fr.net/support/edit.php?id=243916 , mais le problème étant un peu délicat, je pense qu'il peut être nécessaire d'avoir des cerveaux différents

    Je cherche à pouvoir sélectionner des articles appartenant à PLUSIEURS catégories (j'utilise donc la fonction category__and, très pratique). Pour cela, il suffit de cocher des cases, voir la page suivante : http://raudin.u-bordeaux3.fr/index-.php?cat=55

    A droite, des cases à cocher selon diverses catégories ; à gauche, je fais afficher une partie de ce qui est renvoyé par le PHP de la fonctionnalité Ajax, à savoir les catégories cochées (55 est tjs vrai, c'est normal).

    Mon problème est le suivant :

    Lorsque je clique sur les différentes cases, ça ne fonctionne pas ! Je n'obtiens pas les articles de telles et telles catégories, mais TOUS les articles de la catégorie 55. Il y a bien des articles appartenant à plusieurs catégories, aucun souci là-dessus. Un bon test consiste à tout cocher : il n'y a aucun article qui devrait apparaître (aucun ne peut être dans toutes les catégories), et ils apparaissent tous...

    Voici le code présent dans le fichier appelé par le Javascript :

    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
    <?php
    require('./wp-config.php');
    $wp->init();
    $wp->parse_request();
    $wp->query_posts();
    $wp->register_globals();
     
    if(isset($_POST["valeurs_recherches"])) {
     
    	$var = '55,'.$_POST["valeurs_recherches"];
    	echo $var;
     
    	query_posts(array('category__and' => array($var)));
     
    	if ( have_posts('') ) while ( have_posts() ) : the_post();
     
     
     
    	?>
     
    		<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
     
    			<h1 class="entry-title"><?php the_title(); ?></h1>
    			<div class="entry-content">
    				<?php the_content(); ?>
    				<?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
    				<?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="edit-link">', '</span>' ); ?>
    			</div><!-- .entry-content -->
    		</div><!-- #post-## -->
     
    	<?php endwhile; 
     
    }
    ?>
    Le code Javascript :

    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
    50
    51
    52
    53
    54
    55
    56
    <script type="text/javascript">
    function getXhr() {
    	var xhr = null; 
    	if(window.XMLHttpRequest) { // Firefox et autres
    		xhr = new XMLHttpRequest();
    	} else if (window.ActiveXObject) { // Internet Explorer 
    	    try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    	}
    	else { // XMLHttpRequest non supporte par le navigateur 
    	   alert("Conflit : navigateur ne supporte pas les objets XMLHTTPRequest"); 
    	   xhr = false; 
    	}
    	return xhr;
    }
     
    // Fonction a faire au clic sur les cases a cocher
    function rechAv() {
    	var xhr = getXhr();
    	// On definit ce qu'on va faire quand on aura la reponse
    	xhr.onreadystatechange = function() {
    		// On ne fait quelque chose que si on a tout recu et que le serveur est ok
    		if(xhr.readyState == 4 && xhr.status == 200) {
    			leselect = xhr.responseText;
    			// On se sert de innerHTML pour identifier les elements envoyes
    			document.getElementById('resultatrechercheajax').innerHTML = leselect;
    		}
    	}
     
    	// POST (envoi des donnees)
    	xhr.open("POST","ajax-categorie.php",true);
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
    	// Recuperation valeur checkbox
    	var criteres_recherche = new Array();
     
    	var formulaire = document.formulaire;
    	var nb = formulaire.elements['tri_recherche[]'].length;
    	for (i = 0; i < nb; i ++) {
    		if (formulaire.elements['tri_recherche[]'][i].checked) {
    			sel = formulaire.elements['tri_recherche[]'][i].value;
    			criteres_recherche.push(sel);
    			//alert(sel);
    		}
    	}
    	//Regroupe les resultats separes par des virgules
    	criteres_recherche = criteres_recherche.join(",");
     
    	//dpt = sel.options[sel.selectedIndex].value;
    	dpt = criteres_recherche;
    	xhr.send("valeurs_recherches="+dpt);
    }
    </script>
    Le fichier PHP est bien appelé (la preuve avec le echo qui renvoie bien les cases cochées), mais la fonction category__and ne semble pas bien fonctionner... ! J'ai vérifié en test sur cette page, la fonction category__and fonctionne...

    D'autre part, question subsidiaire : existe-t-il une URL pour les catégories avec des ET (à l'instar des "OU" qui s'écrirait index.php?cat=1,2,3) ?

    Merci beaucoup si vous avez tout lu !!
    Merci par avance pour vos réponses

    PS : la partie HTML concernée au cas où :
    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
    <div id="resultatrechercheajax">
     
    <?php 
    // ==================== Les productions
     
    if ( is_category('55') ) {
     
    	query_posts('cat=55');
    	#query_posts (array('category__and' => array(55,97)));
     
    	if ( have_posts('') ) while ( have_posts() ) : the_post(); ?>
     
    		<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
     
    			<h1 class="entry-title"><?php the_title(); ?></h1>
    			<div class="entry-content">
    				<?php the_content(); ?>
    				<?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
    				<?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="edit-link">', '</span>' ); ?>
    			</div><!-- .entry-content -->
    		</div><!-- #post-## -->
     
    <?php 
     
    endwhile; }
     
    ?>
     
    	</div> <!-- fin DIV resultatrechercheajax -->

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Points : 159
    Points
    159
    Par défaut
    Bonjour,

    Pour information, je m'en suis sorti, par une pirouette pas très "propre", mais fonctionnelle...
    Ca consiste à recréer toutes les catégories à cocher dans chaque catégorie principale.

    A savoir :


    CATEGORIE PRINCIPALE A
    souscategorie1
    souscategorie2
    souscategorie3
    ...

    CATEGORIE PRINCIPALE B
    souscategorie1
    souscategorie2
    souscategorie3
    ...

    etc.
    où les sous catégories ont le même nom...

    Merci quand même pour ceux qui auront pris le temps de regarder

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

Discussions similaires

  1. [Librairies] Api AJAX
    Par ouioui2000 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 20/10/2005, 16h57
  2. [AJAX] Effectuer plusieur appel ajax
    Par shwin dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/10/2005, 16h40
  3. [AJAX] Ajax et javascript contenu
    Par zekey dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/09/2005, 20h16
  4. [AJAX] AJAX et javascript
    Par spud5351 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 10h16

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