Bonjour,
FIELD est un argument du SELECT, ce n’est pas une fonction.
Tiens, j’ai trouvé ça :
`FIELD(S, S1, S2, S3...)` Returns index of `S` in `S1`, `S2`, `S3`... list. The complement of `ELT()`. Return 0 when S is not found.
mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo'); -> 2
mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo'); -> 0
En espérant que ça t'aide un peu mieux à comprendre
Bonne continuation,
Elodie
-----Message d’origine-----
De : Fedhman Kassad [mailto:soopaseb@yahoo.fr]
Envoyé : mardi 14 octobre 2003 09:35
À : spip@rezo.net
Objet : [Spip] definition de la fonction FIELD(arg1,arg2) dans le code de SPIP !!!
salut tt le monde,
débutant en SPIP, je cherche à en comprendre un peu le code et je bloque sur cette ligne de inc-calcul-squel.php3, ligne 1843 :
SELECT *, FIELD(id_rubrique, $hierarchie) AS _field FROM spip_rubriques WHERE id_rubrique IN ($hierarchie)
cette fonction FIELD() me laisse perplexe, passke je n’en trouve pas la définition , ni dans mysql, ni dans les includes de SPIP ou d’autres fichiers PHP…
Est ce que quelqu’un peut me dépanner ?
merci ,
Seb
Do You Yahoo!? – Une adresse @yahoo.fr gratuite et en français !
Testez le nouveau Yahoo! Mail
FIELD est un argument du SELECT, ce n’est pas une fonction.
Tiens, j’ai trouvé ça :
`>FIELD(S, S1, S2, S3...)`
Returns index of S in S1, S2, S3… list. The complement of ELT(). >Return 0 when S is not found.
>mysql> select FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo'); -> 2
>mysql> select FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo'); -> 0
>En espérant que ça t'aide un peu mieux à comprendre
hmmm.... je sais pas si ça m'aide vraiment, mais merci de m'avoir trouvé la def de mysql...
ce que je n'arrive pas à voir, c'est à quoi ça sert dans la requete SQL sus-citée:
On récupère l'index de "id_rubrique" dans la liste "hierarchie" récupérée par la fonction construire_hierarchie() de inc-calcul.php3
mais je ne vois pas à quoi ça correspond vraiment... une idée ?
Do You Yahoo!? – Une adresse @yahoo.fr gratuite et en français !
Testez le nouveau Yahoo! Mail
Le Tue 14/10/2003 à 11:03, Fedhman Kassad a écrit :
ce que je n'arrive pas à voir, c'est à quoi ça sert dans la requete SQL sus-citée:
On récupère l'index de "id_rubrique" dans la liste "hierarchie" récupérée par la fonction construire_hierarchie() de inc-calcul.php3
mais je ne vois pas à quoi ça correspond vraiment... une idée ?
À savoir à quelle profondeur on se trouve dans la hierarchie de
rubriques à priori. Ça me parait bourrin puisque c'est faisable en php
pur, mais j'ai pas vu ce qu'il y avait autour.
À+, Pif.
:)) Merci !!
c’était pourtant simple …
mais je ne comprends toujours pas le fonctionnement de ce %#£§ de FIELD(id_rubrique,$hierarchie) !
avec un exemple simple de BDD SPIP, j’ai une requete SQL du genre :
SELECT *, FIELD(id_rubrique, 6,2) AS _field FROM spip_rubriques WHERE id_rubrique IN (6,2) ORDER BY _field LIMIT 0, 30
dont le resultat est effectivement un classement des rubriques par niveau de profondeur dans la hierarchie : ici id_rubrique 6 => _field 1 et id_rubrique 2 => _field 2
donc, on remonte bien la hierarchie…
ce que je ne capte pas, c’est kesskifékoi dans le FIELD (je sais, je sais, ce n’est plus directement lié à SPIP, mais ça m’intrigue…). passke je ne vois pas comment on récupère l’index d’une chaine de caractère ( et à quoi correspond cet index…) dans une liste de chiffres ?!
c'est pas vital comme info, mais j'aime bien comprendre tout de même !fedhman kassad from hyperion
Christian Lefebvre christian.lefebvre@atosorigin.com wrote:
Le Tue 14/10/2003 à 11:03, Fedhman Kassad a écrit :
ce que je n’arrive pas à voir, c’est à quoi ça sert dans la requete SQL sus-citée:
On récupère l’index de « id_rubrique » dans la liste « hierarchie » récupérée par la fonction construire_hierarchie() de inc-calcul.php3
mais je ne vois pas à quoi ça correspond vraiment… une idée ?
À savoir à quelle profondeur on se trouve dans la hierarchie de
rubriques à priori. Ça me parait bourrin puisque c’est faisable en php
pur, mais j’ai pas vu ce qu’il y avait autour.
À+, Pif.
Do You Yahoo!? – Une adresse @yahoo.fr gratuite et en français !
Testez le nouveau Yahoo! Mail
Le Tue 14/10/2003 à 11:32, Fedhman Kassad a écrit :
:)) Merci !!
c'était pourtant simple ...
mais je ne comprends toujours pas le fonctionnement de ce %#£§ de
FIELD(id_rubrique,$hierarchie) !
avec un exemple simple de BDD SPIP, j'ai une requete SQL du genre :
SELECT *, FIELD(id_rubrique, 6,2) AS _field FROM spip_rubriques WHERE
id_rubrique IN (6,2) ORDER BY _field LIMIT 0, 30
Ha ben ouais, avec toute la requète c'est plus clair :
- en dehors du field, on demande les infos sur les rubriques 6 et 2,
dont on a déterminé auparavant quelles constituent la hierarchie.
- id_rubrique vaut donc 6 pour une ligne du select et 2 pour l'autre
- field(6,6,2) signifie "à quelle position trouve t'on "6" dans la
liste "6, 2". La réponse est 1
- field(2,6,2) signifie "à quelle position trouve t'on "2" dans la
liste "6, 2". La réponse est 2
- donc, pour l'id_rubrique 6, _field vaut 1, et pour 2, il vaut 2
il n'y a plus qu'à trier par ce champ pour récupérer la liste dans
l'ordre de la hierarchie.
À+, Pif
PS: à suivre sur spip-dev : y'a une autre façon de faire qu'est
p'tet mieux.
merci pif ! on ne pouvait pas faire plus clair ! je vais copier ce mail et me le garder comme mémo !! 
PS: à suivre sur spip-dev : y’a une autre façon de faire qu’est
p’tet mieux.
comment je fais pour suivre ces infos ?
fedhman kassad from hyperion
Christian Lefebvre christian.lefebvre@atosorigin.com wrote:
Le Tue 14/10/2003 à 11:32, Fedhman Kassad a écrit :
:)) Merci !!
c’était pourtant simple …
mais je ne comprends toujours pas le fonctionnement de ce %#£§ de
FIELD(id_rubrique,$hierarchie) !
avec un exemple simple de BDD SPIP, j’ai une requete SQL du genre :
SELECT *, FIELD(id_rubrique, 6,2) AS _field FROM spip_rubriques WHERE
id_rubrique IN (6,2) ORDER BY _field LIMIT 0, 30
Ha ben ouais, avec toute la requète c’est plus clair :
- en dehors du field, on demande les infos sur les rubriques 6 et 2,
dont on a déterminé auparavant quelles constituent la hierarchie.
- id_rubrique vaut donc 6 pour une ligne du select et 2 pour l’autre
- field(6,6,2) signifie "à quelle position trouve t’on « 6 » dans la
liste « 6, 2 ». La réponse est 1
- field(2,6,2) signifie "à quelle position trouve t’on « 2 » dans la
liste « 6, 2 ». La réponse est 2
- donc, pour l’id_rubrique 6, _field vaut 1, et pour 2, il vaut 2
il n’y a plus qu’à trier par ce champ pour récupérer la liste dans
l’ordre de la hierarchie.
À+, Pif
PS: à suivre sur spip-dev : y’a une autre façon de faire qu’est
p’tet mieux.
Do You Yahoo!? – Une adresse @yahoo.fr gratuite et en français !
Testez le nouveau Yahoo! Mail