Avatar billede Jvossipoff Nybegynder
29. april 2011 - 11:29 Der er 7 kommentarer og
1 løsning

Hente streng fra en tabel og komme i en anden tabel php/mysql

Hej

Jeg sidder med et lille problem jeg ikke kan løse.

Jeg har en tabel med en mailliste og den vil jeg gerne trække alle adresser ud som tilhøre kategori 2 fx. så jeg får en streng der ser sådan her ud

mail@domain.dk,mail@domain.dk,mail@domain.dk

De skal så ind i tabel 2

Mit træt ser sådan her ud:

$res = mysql_query("SELECT email FROM karto_kunde WHERE `sekid` = '22'");
$row = mysql_fetch_array($res);

Det skal så ind i
mysql_query("INSERT INTO karto_mailgruppe (
sekid, email, navn) VALUES( '$sekid', '$email','$navn')",$dbcon);


Er der nogen som har en smart og nem måde at gør det på
Avatar billede danco Nybegynder
29. april 2011 - 13:19 #1
Det kan på ingen tænkelig måde anbefales at sætte en sammensat streng ind i en database, gør du det mister du store dele af funktionaliteten der er intentionen med en database.

Hvorfor ville du gerne sætte din streng ind i en anden tabel?
29. april 2011 - 13:22 #2
Du skulle nok have gjort en lidt stoerre indsats for at forklare problemet bedre.  Hvad har du staaende i tabel karto_kunde? Er det noget i retning af dette:

tabel1
sekid email                    navn
22      mail1@domain1.dk hans
22      mail2@domain2.dk jens
22      mail3@domain3.dk peter
23      mail4@domain4.dk ole

Altsaa saaledes at der for hver sekid kan vaere adskillige forskellige emailadresser med tilhoerende navne?  Saaledes at sekid er en kategori, ikke en id for en email?

Hvis det er saaledes og du saa vil have alle adresser med sekid22 indsat i tabellen karto_mailgruppe kunne du goere saaledes:

$res = mysql_query("SELECT sekid, email, navn FROM karto_kunde WHERE sekid = 22");
while($row = mysql_fetch_array($res))
{
  $sekid = $row['sekid'];
  $email = $row['email'];
  $navn = $row['navn'];
  mysql_query(INSERT INTO karto_mailgruppe(sekid, email, navn) VALUES('$sekid', '$email', '$navn'));
}

Eller er det noget andet noget du har brug for?  Saa forklar.
Avatar billede Jvossipoff Nybegynder
29. april 2011 - 13:47 #3
danco > Det er når jeg laver en liste med adresser til en bestemt kunde. så vil jeg gerne kunne lave en gruppe og tildele dem den.

så de under deres login kan se noget ala
Segment 1 og 4
mail@domian.dk,mail@domian.dk,mail@domian.dk
Segment 11
mail@domian.dk,mail@domian.dk,mail@domian.dk
osv.

Christian_Belgien > Du har ret og du beskrever det rigtig godt.

navnet er et jeg giver det insert og er ikke taget fra karto_kunde.

Det dit forslag laver jeg en masse insert med en email i hvert. jeg vil gerne lave et insert med alle adresser i email fra
karto_kunde WHERE sekid = 22 fx
ind i
karto_mailgruppe
29. april 2011 - 14:34 #4
Jvossipoff, jeg tror du blander to ting sammen, (1) de raa data som du skal bevare i databasen, og (2) den maade du gerne vil have dataerne udskrevet.  Det foerste er mysql's job, det andet er php's job.  Hvis en kunde i segment 1 har tre email adresser mail1@domain1.dk, mailklodshans@domain2.dk, mailflagstang@domain3.dk vil du gerne have skrevet dem ud som:

Segment 1
mail1@domain1.dk, mailklodshans@domain2.dk, mailflagstang@domain3.dk
ikke sandt?

Men du skal IKKE gemme strengen "mail1@domain1.dk, mailklodshans@domain2.dk, mailflagstang@domain3.dk" i databasen.  Derimod skal du i databasen have noget i retning af:

Tabelxx
kunde segment mail
27    1      mail1@domain1.dk
27    1      mailklodskans@domain1.dk
27    1      mailflagstang@domain2.dk
27    2      mailkransekage@domain3.dk
28    5      mailnogetandet@sneglehus.ru 

Saa siger du at navnet ikke staar i karto_kunde.  Hvor faar du saa det navn fra du skal inserte i karto_mailgruppe?

Og hvordan ved du hvilke email adresser der hoerer til hver kunde?  Er der en kunde_id i karto_kunde?
Avatar billede Jvossipoff Nybegynder
29. april 2011 - 15:21 #5
jeg laver en form hvor jeg laver et select af de sekid som skal ligges ind i karto_mailgruppe

der kommer også et text feld hvor jeg skriver et navn til den samling af links jeg laver til kunden.

Men det jeg er ude efter er netop skriver jeg ikke skal.
Da kunden så bare kan kopier listen over i sin mail klient og så trykke send.

Det vil også være nemmere at lave et cvs udtræk når de står på denne måde

"mail1@domain1.dk, mailklodshans@domain2.dk, mailflagstang@domain3.dk" i databasen.
29. april 2011 - 18:57 #6
Saa proever vi igen.  Saa karto_kunde har (mindst) to kolonner, sekid og email.  Du har saa et eller andet sted en formular hvor du udfylder felterne sekid og navn og submitter, saaledes at du har, for eksempel, en $_POST['sekid'] og en $_POST['navn'] til raadighed.

Saa du har for eksempel dette i karto_kunde:

sekid email
22      mail1@domain1.dk
22      mail2@domain2.dk
22      mail3@domain3.dk
23      mail4@domain4.dk

Du vaelger sekid = 22 og navn = navn1 og du vil saa have en raekke udfyldt i karto_mailgruppe saaledes:

sekid navn emails
22 "navn1" "mail1@domain1.dk, mail2@domain2.dk, mail3@domain3.dk"

Er det korrekt?

Saa kunne det foregaa saaledes:

$sedid = $_POST['sedid'];
$navn = $_POST['navn'];

$res = mysql_query("SELECT email FROM karto_KUNDE where sekid = '$sedid'");
$emails = "";
while($row = mysql_fetch_array($res))
{
  $email = $row['email'];
  $emails .= "$email" . ", ";
}
$emails = substr($emails, 0, strlen($emails) - 2);
mysql_query("INSERT INTO karto_mailgruppe(sekid, emails, navn) VALUES('$sekid', '$navn', '$emails')");

Saa $emails skal indeholde listen af de enkelte $email adskildt af kommaer.  $emails starter som en tomstring og vokser, for hver $email der bliver trukket ud af karto_kunde, med emailadressen plus komma plus mellemrum.  Naar der ikke er flere emailadresser forkortes $emails med to saaledes at det sidste komma og det sidste mellemrum fjernes.

Jeg opretter dette som svar saa du kan lukke hvis dette var til hjaelp.  Hvis jeg stadig ikke har forstaaet dig korrekt saa forklar mere.
01. maj 2011 - 19:32 #7
Fik du dette svar?  Loeste det problemet?  I saa fald vil jeg bede dig lukke spoergsmaalet, for god ordens skyld og saa det ikke bliver staaende som aabent i min liste af indlaeg.  Hvis det ikke loeste problemet, saa forklar hvor det kommer til kort.
Avatar billede Jvossipoff Nybegynder
02. maj 2011 - 22:16 #8
Christian_Belgien > Skulle lige hjem for weekend opholdet med kæresten.

Men har her til aften prøvet det af og det virker lige som det skal. fandt lige ud af at det var et ; og ikke , som skulle mellem emails men det var jo til at rette.

Mange tak for hjælpen :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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