PHP, SQL Séparer des données

WRInaute occasionnel
Bonjour,

J'aimerai un peu d'aide pour du PHP/mySQL.
Dans ma BDD, j'ai une table "TABLE", avec un champ "user-newsletter". Si un membre s'inscrit à la newsletter 1, "user-newsletter" aura pour valeur "n1", newsletter 2, "user-newsletter" vaudra "n2"et ainsi de suite...
Si un membre est inscrit à la newsletter 8 et à la 23, "user-newsletter" vaudra "n8,n23".
Comment séparer les données de "user-newsletter" ?

Merci.
 
WRInaute accro
Problème dans la définition du modèle.

tu devrais avoir une table User (avec leurs ID individuels) et une autre table 'newsletter' avec deux champs correspondant a l'ID de la newletter et l'ID du User.
 
WRInaute passionné
Perso il m'arrive de faire comme ça aussi, ça simplifie bien les choses parfois.
Pour séparer les champs, je fais

#8#23#...#

Comme ça je peux directement rechercher dans la table, sans avoir a exploser, genre pour selectionner tous les user abonnés à la newsletter 23 :

SELECT user
FROM table
WHERE user-newsletter LIKE '%#23#%';
 
Nouveau WRInaute
J'ai recemment fais de cette façon et je suis vite revenu dessus. Ce n'est pas pratique du tout. dans mon cas au moins.
Je m'en suis rendu compte en tapant les requetes. Je ne pouvais pas faire simplement les jointures que je voulais et LIKE c'est pas top niveau performances.
Donc je rejoind zeb.

Tu veux dire quoi par séparer ? pour l'insertion ? l'extraction ? pour refaire une nouvelle table ... ?
 
WRInaute impliqué
bien daccord, on utilise des modèles un peu foireux et pratique mais un jour ou l'autre on se retrouve toujours dans l'impasse... autant partir sur de bonnes bases ou repenser le truc tant qu'il en est encore temps
 
WRInaute accro
Si des fois tu ne veux pas ou ne peux pas repenser le truc, c'est super simple avec les expressions regulières.

Code:
 	$news = "n8,n23,n213,n1,n1014";

 	preg_match_all("/[0-9]{1,4}/",$news,$mesnews,PREG_SET_ORDER);
 	foreach($mesnews as $anews){
 		echo $anews[0]."<br>";
 	}

te donnera un visuel de ce type :

8
23
213
1
1014

Bien sur je pense que la nouvelle tables est la bonne solution car tu pourra laisser le traitement au SGBD ce qui ne fera qu'alleger ton serveur HTTP.

le {1,4} du preg match est conditionné par la taille maximum du nombre correspondant a la news.

;-)
 
Discussions similaires
Haut