Avatar billede ndifil Nybegynder
20. februar 2012 - 17:08 Der er 11 kommentarer og
1 løsning

Print linier i tekst felt

Jeg har en tabel med mail grupper hvor alle mail adresserne står i et tekst felt med linjeskift imellem.

xxx1@mail.dk
xxx2@mail.dk
xxx3@mail.dk
xxx4@mail.dk

kan man køre en Query der returnere hver linje for sig.
Avatar billede arne_v Ekspert
20. februar 2012 - 17:48 #1
Skift tabel struktur saa du har en raekke per email adresse.
Avatar billede arne_v Ekspert
20. februar 2012 - 17:49 #2
Hvis du vil humpe videre med forkert tabel struktur, saa split i app kode.
Avatar billede olsensweb.dk Ekspert
20. februar 2012 - 18:05 #3
kunne ikke sige det pænerer end arne_v

>hvor alle mail adresserne står i et tekst felt med linjeskift imellem.
du vil gører dig selv en tjeneste ved at splitte det op i 3 tabeller (mange til mange ralation)

tb_user
id, fornavn, efternavn, email

tbl_mailgroup
id, gruppenavn

tbl_s_user_mailgroup
id, mailgroupid, userid

så bliver det nemmere (og rigtigt) at udtrække, en bruger kan nemt være med i flerer grupper

>kan man køre en Query der returnere hver linje for sig.
hvad mener du med hver linje ??, hver enkelt linje i mailgruppen eller hver post, til senere opsplitning

hvordan ser din db structur ud ??

prøv at google sql split string delimiter

dette ser interessant ud
http://blog.logiclabz.com/sql-server/split-function-in-sql-server-to-break-comma-separated-strings-into-table.aspx
http://mangalpardeshi.blogspot.com/2009/03/how-to-split-comma-delimited-string.html

jeg ville nok læser rækken/feltet ud og splitte serverside
http://dk.php.net/explode
20. februar 2012 - 18:10 #4
En mysql forespørgsel der så at sige exploderer en tekststreng kender jeg ikke, men du kan jo i din applikation exploderer strengen i en array.  I php noget i retning af (ikke testet)

$result = mysql_query("SELECT mailgruppe FROM mytable WHERE ...")
while($row = mysql_fetch_array($result))
{
  $gruppe = explode('\n', $row[0]);
  foreach($gruppe as $email)..gør noget ved mail adressen
}

Men hvorfor sådan en tabelstruktur?  En normaliseret struktur ville have en særskilt tabel for mailadresser, for eksempel således:

tabel mailgruppe
id navn ...
1  gruppe1
2  gruppe2

tabel mail
id gruppe mail
1  1        xx1@mail.dk
2  1        xx2@mail.dk
3  2        xx3@mail.dk

Du har to mailgrupper, den første med to mailadresser, den anden med en mailadresse.  Hvis du så vil have mailadresserne i mailgruppe1 får du dem med denne query:

SELECT mail FROM mailgruppe JOIN mail ON mailgruppe.id = mail.gruppe WHERE mailgruppe.navn = 'gruppe1'
20. februar 2012 - 18:12 #5
Jeg er langsom, mens jeg arbejdede med mit indlæg fik du hele tre andre indlæg.  Jeg er, som det fremgår, enig med arne_v's betragtninger og velsagtens også med ronols, når jeg lige får kikket på den.
Avatar billede ndifil Nybegynder
20. februar 2012 - 18:23 #6
Jeg ville også helst skifte strukturen, men mail serveren er sat op med den struktur og det vil give en masse andre problemer hvis jeg får lavet den om.

Og jeg vil godt lave et mere brugervenligt interface hvor mail adresserne redigeres sammen med navn mm. og mail adresserne gemmes i et tekst felt igen.

/ Finn
20. februar 2012 - 19:13 #7
Jeg forstod opgaven således, at de mailadresser der stod i tekstfeltet for mailgruppen, dem ville du have skrevet ud alle sammen, men enkeltvis.  Det skitserede jeg en løsning for, i php, ikke i mysql. 

Men jeg forstår nu, at opgaven går videre - du vil kunne redigere en af mailadresserne i en mailgrupe og kunne få den redigerede mailadresse tilbage på sin plads i tekststrengen i mysql tabellen.  Det er der også løsninger på, i applikationen, ikke (så vidt jeg ved) i mysql.  Og det bruges, til min overraskelse (og chock som normaliserings fanatiker), i praksis.  Jeg arbejder for tiden med Joomla Contents Management System som gør udbredt brug af mysql tabeller, og i adskillige af tabellerne har man et felt 'parameters' hvor der opslås en liste af værdier, velsagtens på omtrent samme måde som din liste af mail adresser i en mailgruppe.

Men opgaven går endnu videre, så vidt jeg forstår.  Hver mailadresse tilhører en bruger, og du vil finde den mailadresse frem der tilhører en bestemt bruger og kunne redigere den.  Der tror jeg nok du kommer på arbejde.  Hvordan ved du hvilken af mailadresserne i en gruppe der tilhører en bestemt bruger?  Er det, for eksempel, således, at du har en brugertabel der foruden navn mm indeholder brugerens mailadresse, og er det den tabel du vil åbne og redigere plus at når du har forandret en brugers mailadresse vil du have den samme forandring opslået i mailgrupperne?
Avatar billede ndifil Nybegynder
20. februar 2012 - 19:40 #8
Jeg Har en tabel mad bl.a. disse to felter

tabellen `mail_forwarding
`source` varchar(255) NOT NULL, gruppe mail adressen
  `destination` text, tilhørende mail adresse

På baggrund af `destination` vil jeg oprette en bruger tabel med navn, mail, mm.

når der ændres i mailadresserne vil jeg overskrive `destination` med de erdigerede mail adresser.

/Finn
20. februar 2012 - 21:53 #9
Jeg forstår ikke hvad du fortæller.  Prøv at vise nogle rækker med data i tabellen, og muligvis fortæl noget mere.
Avatar billede ndifil Nybegynder
20. februar 2012 - 22:47 #10
Tabel på mail serveren.

1  gruppe1
        xx1@mail.dk
        xx2@mail.dk
        xx3@mail.dk
2  gruppe2
        xx1@mail.dk
        xx2@mail.dk

Jeg ville køre en qury eller script der fik mail adresserne ud

1  gruppe1 xx1@mail.dk
2  gruppe1 xx2@mail.dk
3  gruppe1 xx3@mail.dk
4  gruppe2 xx1@mail.dk
5  gruppe2 xx2@mail.dk

Så de kan linkes til bruger data

1  xx1@mail.dk  navn1 mobil1 mm1
2  xx2@mail.dk  navn2 mobil2 mm2
3  xx3@mail.dk  navn3 mobil3 mm3

/ Finn
21. februar 2012 - 07:08 #11
Nej, der er jeg bange for, at jeg må bakke ud.  Du vil kunne tilgå en enkelt af værdierne i en 'linieskift-separaret' tekststreng som om det var et særskilt felt.  Den kender jeg ikke.  (Joomla, som jeg fortalte, bruger felter med komma-separerede værdier i deres mysql tabeller, men kun i tilfælde hvor alle disse værdier skal bruges på en gang.  Så længe du skal bruge alle mail adresserne i en mailgruppe på en gang, såsom når du skal sende mail til gruppen, er din struktur ok, men ikke hvis du vil prøve at pille enkelte af værdierne ud og bruge selvstændigt.)  Jeg ønsker dig success, men jeg tvivler på, at du vil få det.  Deltagerne i denne tråd, indtil nu, er enige om vejen frem, nemlig at forandre data strukturen.
Avatar billede ndifil Nybegynder
23. februar 2012 - 09:18 #12
Tak for jeres indput.
Jeg går en anden vej og får installeret Mailman på serveren og administrere mail grupperne der igennem.
/Finn
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester