Faire un 'explode' d'un champ en base de données

Fermé
Angecorse Messages postés 37 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 3 novembre 2016 - Modifié par Angecorse le 24/10/2016 à 06:49
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 4 nov. 2016 à 10:02
Bonjour,

Inventaire :
-> mysql
-> phpmyadmin
->innodb
-> framework php: CI 3
BDD : blog
table: post

Dans la base de données j'ai plusieurs tags dans le champs 'tags' :
par exemple :"video 3d, comique"

Ils sont donc séparés par un espace, une virgule ou les deux.

J'aimerais qu'à l'affichage ceux-ci s'explosent pour que par la suite, si l'un deux est cliqué, la recherche s'effectue sur tous les articles comportant ce seul tag et affiche le résultat.

J'aimerais que ce soit une fonction et qu'elle boucle sur autant de tags qu'il y a dans le champ :

public static function tags(){

}

2 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
25 oct. 2016 à 09:54
Bonjour,

Une alternative à explode, c'est de t'amuser avec des expressions rationnelles : "(([^,\s]+)[,\s])*([^,\s]+)"

Xavier
2
Angecorse Messages postés 37 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 3 novembre 2016
25 oct. 2016 à 23:34
Merci xavier,

Dans l'explode ce qui me manquait c'était comment gérer un espace et/ou une virgule ;)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Angecorse Messages postés 37 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 3 novembre 2016
26 oct. 2016 à 00:05
Tu nous aurait dis ça dès le début. .. tu aurais eu ta reponse de suite....
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
26 oct. 2016 à 09:17
Mais tu peux quand même gérer deux séparateurs avec explode comme l'a suggéré Jordane, en faisant un premier explode sur les espaces, puis en bouclant sur les résultats (foreach) pour faire un deuxième explode sur les virgules, et en ajoutant (manuellement) tous ces résultats à un tableau de résultats.
0
Angecorse Messages postés 37 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 3 novembre 2016 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
3 nov. 2016 à 22:50
Désolé... ;)
0
Angecorse Messages postés 37 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 3 novembre 2016
3 nov. 2016 à 23:07
1. En fait j'aimerais créer une fonction avec
explode
qui aille rechercher le champ [field] (à exploser) de la table [table] dans la base de données.
2. j'aimerais l'afficher sur ma page avec
<? php 
foreach ($explode as $e):
<li><?php echo $e->field; ?></li>
?php endforeach; ?>


1. dès que ça touche la base de données, j'ai des erreurs (si je cré une variable à exploser tout se passe bien)
2. A ce point là j'ai aussi des erreurs, car chaque <li> doit afficher un
explode
de field

J'ai donc tout supprimé :(
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
24 oct. 2016 à 10:55
Bonjour,

Je ne comprend pas trop ta demande .. du moins ... ce qu'est exactement la question...

Tu bloques sur quoi ? L'affichage ? l'explode ? la boucle ? La recherche ?
Qu'as tu déjà commencé à faire ?

Sans parler du fait que nous ne connaissons pas la structure de ta table "post" ... le code de la vue dans laquelle tu veux afficher tes tags... le moyen de connexion à ta BDD ( PDO ? Mysqli ? mysql ? )

Bref .. merci de préciser !


NB: Tu parles du framework CI3 .. tu veux bien dire Code Igniter 3 ?



1
Angecorse Messages postés 37 Date d'inscription samedi 25 avril 2015 Statut Membre Dernière intervention 3 novembre 2016
Modifié par Angecorse le 25/10/2016 à 07:45
Bonjour Jordane,

Pour CI3 : Oui c'est effectivement codeigniter 3 (j'ai précisé dèsfois qu'il y ait des helpers ou autres qui soient natifs pour ce type de fonction)

→ Le moyen de connexion : pas important, ce n'est pas le sujet ;)
→ La structure de la table : à mon sens, aucun intérêt de la connaître

J'aimerais une fonction qui explose les données contenues dans le champ "tags" de la table "blog" : Le plus important est cité ici.

Je redonne l'exemple :
Dans "tags" si j'ai "vidéo, 3d, comique" ou "vidéo 3d comique" (avec ou sans virgule), il faut que la fonction sorte autant de blocs (bloc[0], bloc[1], bloc[2], bloc[x],...) qu'il y a de mots et retourne le résultat.

Pour information, l'explosion du champ servira par la suite :
→ à dissocier les tag (mots-clés) lors de l'affichage (mais ce n'est pas ma requête).
→ à calculer, dans ce champ "tags", quels sont les tags les plus utilisés et les afficher (là encore ce n'est pas ma requête)

Ne t'embête avec ce qui tourne autour de la fonction.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
25 oct. 2016 à 08:40
Ben.. si rien n'est important et que je ne dois pas m'embêter. ...
Voila... en php il existe la fonction explode
Et pour boucler foreach.

Bonne journée
0