Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#1 14-12-2009 22:18:23

adaur
Membre

Expression régulières, MySQL & Co

Bonsoir ^^

J'ai vraiment besoin de votre aide pour un problème à se taper la tête contre les murs ^^

Je vous explique : je voudrais faire un listing des discussions dans un forum précis. Après quelques rapides modifs du viewforum, j'y arrive. Problème, quasi toutes les discussion commencent par [Blabla].

Je voudrais donc supprimer ces crochets afin de n'avoir que le titre de la discussion..

J'y arrive plus ou moins avec une expression régulière.

Re-Problème ^^ ! Les discussions sont ordonnées à partir du titre issu de la BDD, c'est à dire avec les balises, donc l'ordre quand elles sont enlevées n'est plus du tout bon.

Il faudrait donc, je pense, si c'est possible, supprimer depuis la requêtes ces balises, et afficher le titres des topics.

Merci d'avance pour vos réponses...

Sinon je posterais sur un forum spécialisé PHP en général, mais comme il s'agit de requêtes FluxBB je me suis dit que vous pourriez m'aider wink

@+

adaur


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#2 15-12-2009 00:07:19

fanf73
Wik-wiki

Re : Expression régulières, MySQL & Co

Le plus simple serait de la supprimer à l'affichage en PHP avec un

preg_replace('pattern', '', $subject)

Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#3 15-12-2009 19:44:03

adaur
Membre

Re : Expression régulières, MySQL & Co

Merci pour cette réponse smile

Suite du topo ^^

A partir de ce que me donne Fanf, je fais ceci:

$subject2 = preg_replace('`\[[^]]*]`', '', $subject);

Et je mets en echo le subject2 au lieu de subject.

Cela supprime tout ce qui est entre crochets.

Très bien, mais maintenant, cela conserve l'ordre du titre d'origine, avec les crochets.

J'ai essayé divers moyens pour trier par ordre alphabétique $subject2, mais rien a faire.

Auriez vous une solution ? ^^


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#4 15-12-2009 20:00:39

fanf73
Wik-wiki

Re : Expression régulières, MySQL & Co

Essaie de modifier le ORDER dans la requête SQL, de manière à lui demander à trier par sujet sans les balises (je crois que c'est possible).

Par contre j'ai du mal à voir à quoi servent ces balises si tu ne veux ni les afficher ni qu'elles apparaissent dans le tri. Autant mettre cette informations dans un autre champ.


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#5 15-12-2009 21:29:27

adaur
Membre

Re : Expression régulières, MySQL & Co

fanf73 a écrit :

Essaie de modifier le ORDER dans la requête SQL, de manière à lui demander à trier par sujet sans les balises (je crois que c'est possible).

Justement, j'ai cherché, et n'ai pas trouvé hmm

Je regarde ça plus en détail, mais ça me parait bien obscure sad

Par contre j'ai du mal à voir à quoi servent ces balises si tu ne veux ni les afficher ni qu'elles apparaissent dans le tri. Autant mettre cette informations dans un autre champ.

Ce sont des choses comme Suggestion, Idée...

J'aimerais donc les supprimer, mais elles sont utiles dans le viewforum wink


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#6 15-12-2009 22:19:00

fanf73
Wik-wiki

Re : Expression régulières, MySQL & Co

Essaie ça

ORDER BY IF(subject REGEXP '^[\[*.\]]*.', RIGHT(subject, CHAR_LENGTH(subject)-LOCATE(']', subject)), subject)

Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#7 15-12-2009 22:25:48

adaur
Membre

Re : Expression régulières, MySQL & Co

fanf73 a écrit :

Essaie ça

ORDER BY IF(subject REGEXP '^[\[*.\]]*.', RIGHT(subject, CHAR_LENGTH(subject)-LOCATE(']', subject)), subject)

C'est hyper sympa d'essayer, malheureusement il n'a pas l'air d'aimer le ] :

Parse error: syntax error, unexpected '[' in ...

Si tu n'as pas envie de plus t'embêter (et que je te comprendrais tongue), j'ai lancé un topic de demande d'aide sur le site du zéro.


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#8 15-12-2009 22:26:37

fanf73
Wik-wiki

Re : Expression régulières, MySQL & Co

La requête fonctionne nickel chez en SQL pur, vérifie qu'il n'y a pas de soucis d'ouverture / fermeture de ' une fois assemblée avec du PHP wink

EDIT

$sql = 'SELECT u.id AS has_posted, t.id, t.subject, t.poster, g.g_color FROM '.$db->prefix.'topics AS t LEFT JOIN '. $db->prefix .'users AS u ON t.poster = u.username LEFT JOIN '. $db->prefix .'groups AS g ON u.group_id = g.g_id WHERE t.forum_id='.$id.' ORDER BY ORDER BY IF(subject REGEXP "^[\[*.\]]*.", RIGHT(subject, CHAR_LENGTH(subject)-LOCATE("]", subject)), subject)';

Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#9 15-12-2009 22:46:57

adaur
Membre

Re : Expression régulières, MySQL & Co

Ca commence vraiment a rendre bien ^^

Seul pb restant, ça me fait plusieurs classement suivant qu'il y ai une ou plusieurs "balises", je vois pas pourquoi O_O

Cependant, c'est exactement le résultat que j'attendais, merci ^^


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#10 15-12-2009 22:53:18

fanf73
Wik-wiki

Re : Expression régulières, MySQL & Co

Parce que le code est fait pour des titres avec une seule balise, il aurait fallu que tu précise qu'il peut y en avoir plusieurs.

Il faudrait trouver une fonction SQL pour remplacer "LOCATE" de façon à ce qu'elle cherche la dernière occurrence de "]".


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

Pied de page des forums