Bonjour
j'essaie de rajouter des champs au critère "recherche" cela fonctionne très bien
pour les tables de spip auxquelles j'ai rajouté des champs.
Comment faire pour rajouter des champs de tables supplémentaires à ce critère de
recherche? Mes essais ne fonctionnent pas en utilisant le pipe line.
ma fonction rajoutée au pipeline "rechercher_liste_des_champs"
est
function ajouter_champs($tables)
{
$tables['breve']['blocnotes']=1;
$tables['action']['titre']=1;
return $tables;
}
cela fonctionne pour le champ blocnotes rajouté à la table brèves, mais rien ne
marche pour le champ titre de la table action....
Merci aux différents tutos que j'ai utilisés surtout celui-ci
j'essaie de rajouter des champs au critère "recherche" cela fonctionne très
cela fonctionne pour le champ blocnotes rajouté à la table brèves, mais rien ne
marche pour le champ titre de la table action....
Ben si, c'est bien dans les deux pipelines dédiés à la recherche qu'il faut mettre ça. J'ai pas mal de tables supplémentaires et ça marche direct.
Peut-être y a-t-il un problème avec la déclaration de tes tables ?
j'essaie de rajouter des champs au critère "recherche" cela fonctionne très
cela fonctionne pour le champ blocnotes rajouté à la table brèves, mais rien ne
marche pour le champ titre de la table action....
Ben si, c'est bien dans les deux pipelines dédiés à la recherche qu'il faut mettre ça. J'ai pas mal de tables supplémentaires et ça marche direct.
Peut-être y a-t-il un problème avec la déclaration de tes tables ?
il a été dit par exemple
qu'il faut un index sur les tables pour que ça marche...
RastaPopoulos a écrit :
> Le 11/04/2009 10:25, Michel JORDA a écrit :
>> j'essaie de rajouter des champs au critère "recherche" cela fonctionne
>> très
>> cela fonctionne pour le champ blocnotes rajouté à la table brèves,
>> mais rien ne
>> marche pour le champ titre de la table action....
>
> Ben si, c'est bien dans les deux pipelines dédiés à la recherche qu'il
> faut mettre ça. J'ai pas mal de tables supplémentaires et ça marche direct.
> Peut-être y a-t-il un problème avec la déclaration de tes tables ?
il a été dit par exemple
qu'il faut un index sur les tables pour que ça marche...
JL
la table a bien un index (biensur)...
La surprise est dans les PLURIELS: SPIP doit rajouter ou enlever des S aux noms
des tables dans une logique que je n'ai pas bien comprise.
ma table s'appelle "clients_actionS" (AVEC un "S")
il faut déclarer dans le pipeline de recherche (rechercher_liste_des_champs)
$tables[client_action][titre]=1; (SANS le "S")
je ne sais d'ou cela provient....
si je change le nom de la table, je retrouve une insulte dans le mysql.log.
bizarrement, la BOUCLE doit être
<BOUCLE0(CLIENT_ACTIONS)> <!-- AVEC le "S" -->
un bug/feature qui vient des changements de noms "ARTICLE"/"ARTICLES" dans le
nommage de spip ? Déclarer la table, avec ou sans S dans les tables principales,
ne change rien.
en tout cas, difficile à tracer.
Merci à toute l'équipe (je me suis servi des tutos, des pipelines, des logs, et
du debug php "a la mano" dans rechercher.php.... ouf)
j'essaie de rajouter des champs au critère "recherche" cela fonctionne
très
cela fonctionne pour le champ blocnotes rajouté à la table brèves,
mais rien ne
marche pour le champ titre de la table action....
Ben si, c'est bien dans les deux pipelines dédiés à la recherche qu'il
faut mettre ça. J'ai pas mal de tables supplémentaires et ça marche direct.
Peut-être y a-t-il un problème avec la déclaration de tes tables ?
il a été dit par exemple
qu'il faut un index sur les tables pour que ça marche...
JL
la table a bien un index (biensur)...
La surprise est dans les PLURIELS: SPIP doit rajouter ou enlever des S aux noms
des tables dans une logique que je n'ai pas bien comprise.
ma table s'appelle "clients_actionS" (AVEC un "S")
il faut déclarer dans le pipeline de recherche (rechercher_liste_des_champs)
$tables[client_action][titre]=1; (SANS le "S")
oui mais le clientS/client te joue le tour
essaye [clients_action]
Claude
je ne sais d'ou cela provient....
si je change le nom de la table, je retrouve une insulte dans le mysql.log.
bizarrement, la BOUCLE doit être
<BOUCLE0(CLIENT_ACTIONS)> <!-- AVEC le "S" -->
un bug/feature qui vient des changements de noms "ARTICLE"/"ARTICLES" dans le
nommage de spip ? Déclarer la table, avec ou sans S dans les tables principales,
ne change rien.
en tout cas, difficile à tracer.
Merci à toute l'équipe (je me suis servi des tutos, des pipelines, des logs, et
du debug php "a la mano" dans rechercher.php.... ouf)
Je suis un peu long à la détente. Mais est-ce que quelqu'un pourrais me
fournir un exemple de code complet de ce pipeline car je suis très intéressé
par appliquer la recherche sur d'autres tables.
Merci d'avance.
Xavier
-----Message d'origine-----
De : JLuc [mailto:jluc@no-log.org]
Envoyé : dimanche 12 avril 2009 10:07
À : spip-zone@rezo.net
Objet : Re: [SPIP Zone] ajouter une table externe aux critères de
recherche[RESOLU]
Michel JORDA a écrit :
il faut déclarer dans le pipeline de recherche
(rechercher_liste_des_champs)
$tables[clients_action][titre]=1; (SANS le "S")
> Merci à toute l'équipe (je me suis servi des tutos, des pipelines, des
logs, et
> du debug php "a la mano" dans rechercher.php.... ouf)
Bravo pour ton enquête !!!!!
(mais sais-tu aussi comment ça se passe si il n'y a pas de s
à la fin du nom de la table ?)
Je suis un peu long à la détente. Mais est-ce que quelqu'un pourrais me
fournir un exemple de code complet de ce pipeline car je suis très intéressé
par appliquer la recherche sur d'autres tables.
-----Message d'origine-----
De : JLuc [mailto:jluc@no-log.org]
Envoyé : dimanche 12 avril 2009 10:07
À : spip-zone@rezo.net
Objet : Re: [SPIP Zone] ajouter une table externe aux critères de
recherche[RESOLU]
Michel JORDA a écrit :
il faut déclarer dans le pipeline de recherche
(rechercher_liste_des_champs)
$tables[clients_action][titre]=1; (SANS le "S")
Merci à toute l'équipe (je me suis servi des tutos, des pipelines, des
logs, et
du debug php "a la mano" dans rechercher.php.... ouf)
Bravo pour ton enquête !!!!!
(mais sais-tu aussi comment ça se passe si il n'y a pas de s
à la fin du nom de la table ?)
Pierre Fiches <pierre.fiches <at> free.fr> writes:
Le 12 avr. 09 à 12:55, Xébiaut a écrit :
> Bonjour,
>
> Je suis un peu long à la détente. Mais est-ce que quelqu'un pourrais
> me
> fournir un exemple de code complet de ce pipeline car je suis très
> intéressé
> par appliquer la recherche sur d'autres tables.
>
>
Très bon tuto, un peu "rapide" à mon gout mais très utilisable (merci a mathieu).
Application chez moi (dans mes_options.php, qui doit être dans le dossier
/config). J'ai mis "1" pour chaque poids car pour le moment je n'ai pas de
besoin particulier.
A NOTER TOUS LES NOMS DE TABLE AU SINGULIER ("breve" pour la table
"spip_breves", "clients_action" pour la table "clients_actions"...)
JLuc <jluc <at> no-log.org> writes:
ma conclusion est que les tables doivent TOUJOURS avoir un "S" à la fin, sinon le pipeline rechercher_liste_des_champs les rajoute.
Mais peut-être les vrais développeurs seraient plus savants que moi sur le sujet.
Ou peut-être ils préfèreront la discrétion ? !
En tout cas j'ai mis à jour la doc
Ah eh bien c'est très simple, après quelques heures de tracage et de debugage,
ma conclusion est que les tables doivent TOUJOURS avoir un "S" à la fin, sinon
le pipeline rechercher_liste_des_champs les rajoute.
Je n'ai pas compris pourquoi (bien sur) et je n'ai pas cherché plus longuement où cela se passait, mais le mysql.log est explicite avec "table xxxxS does'ent
exists".
J'ai du donc rajouter systématiquement un "S" à tous les noms de tables, et les déclarer sans "S".
Malheureusement non. Ce qu'on déclare dans le pipeline des recherches ne prend pas en compte les surnoms.
J'ai par exemple une table qui se termine par "cas" (un cas, des cas). Ce qui est embêtant c'est que là c'est le singulier qui est particulier (contrairement à jeu/jeux). Or le pipeline des surnoms sert surtout à déclarer des pluriels bizarres.
Bref, pour les recherches j'ai dû déclarer : $tableau['ca'].
Le 14/04/2009 12:06, cedric.morin@yterium.com a écrit :
faut proposer un patch au lieu de contourner !
Cédric
Déjà, ligne 50 de inc/prepare_recherche.php :
- $x = preg_replace(',s$,', '', $table); // eurk
+ $x = objet_type($table);
Ça il faut le faire de toute façon.
Mais ça ne résout pas le problème des singuliers bizarres. C'est-à-dire la recherche de correspondance dans le sens : table (pluriel) ou surnom de boucle (pluriel) vers surnom singulier.
Car dans SPIP il y a TROIS choses :
- Le nom de la table qui est au pluriel : spip_articles, spip_forum, spip_syndic
- Le surnom de boucle qui est au pluriel et qui n'est pas forcément le même que celui de la table (principe du surnom) : ARTICLES, FORUMS, SITES
- Le surnom au singulier qui est le "type" de l'objet : article, forum, site
Si je déclare un singulier/pluriel bizarre dans le pipeline : ici truc_cas => truc_cas qui est identique au singulier et au pluriel. Et bien c'est comme si je n'avais rien déclaré, ça fait le même résultat.
- En faisant table_objet("truc_cas") ça donnera bien le pluriel "truc_cas"
- Mais en faisant table_objet("truc_ca") aussi
- Ce qui fait que objet_type("truc_cas") va demander table_objet("truc_ca") et va obtenir un truc cohérent donc ne va pas aller chercher la clé primaire qui est la deuxième étape lorsque ça ne marche pas.