PHP, SQL Séparer des données

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

PHP, SQL Séparer des données

Message le Lun Mar 19, 2007 22:26

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.


zeb
WRInaute accro
WRInaute accro
 
Messages: 4560
Inscription: 5 Déc 2004

Message le Lun Mar 19, 2007 23:00

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.

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

Message le Lun Mar 19, 2007 23:38

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#%';

___seb
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 40
Inscription: 4 Déc 2005

Message le Mar Mar 20, 2007 1:33

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 ... ?

skippyzrnr
WRInaute impliqué
WRInaute impliqué
 
Messages: 664
Inscription: 11 Jan 2005

Message le Mar Mar 20, 2007 10:12

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


zeb
WRInaute accro
WRInaute accro
 
Messages: 4560
Inscription: 5 Déc 2004

Message le Mar Mar 20, 2007 19:11

Si des fois tu ne veux pas ou ne peux pas repenser le truc, c'est super simple avec les expressions regulières.

Code: Tout sélectionner
   $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.

;-)

gcvoiron
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 494
Inscription: 19 Oct 2005

Message le Ven Mar 23, 2007 23:36

Avec un peu de retard, merci pour vos réponses.
:D


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités