Link to home
Start Free TrialLog in
Avatar of kenitech
kenitech

asked on

Insert multiple comma or linebreak seperated values from textarea into MySQL

I have a mailing tool that I want to allow users to paste in multiple email addresses.
For arguments sake, let's say the are seperated by linebreaks.

example:
<textarea name="emails">
email1@host.com
email2@host.com
email3@host.com
</textare>

On submit I would like the emails to be added one by one in a loop. Each name is a new row in my table and the email is added to the field 'email'. I'm assuming the values need to be put into an array, and then for the number of values in the array (x), the sequel will run x times. I just don't know the exact syntax.
Avatar of ExpertAdmin
ExpertAdmin

It would be good to know what programming language you are using for the database interaction. If you are using ASP, you can use the <b>Join() </b> method of the string object to turn the textarea text into an array, then loop through the array as you indicated.

M@
in ASP/VB(.net) this can be done with

ResultText=Replace(OriginalText,vbCRLF,",")

which would replace all CRLF with commas and ResultText will equal  

<textarea name="emails">email1@host.com,email2@host.com,email3@host.com,</textare>

Better Still..

ResultTextArray as String()=split (OriginalText,vbcrlf)
 
for tCount as integer = 1 to ResultTextArray.length
DoWhateveroperationYouAreTryToDo(ResultextArray(tCount))
next

Is that what you mean?
Avatar of kenitech

ASKER

hey, i'm totally sorry. i'm using PHP.
hmmm...

I have to let a PHP person handle this one then.

M@
It looks like you could use a preg_split function in PHP to get the array, then use a for...each contruct to insert each element.

I don't use PHP much so this is based on some research and I am sure of the exact syntax.

M@
hey, i just solved this one.
here's a solution that seems to work.
do i close this question??
i probably should've posted it in PHP in the first place..

//Characters to delimit by
$patterns[0] = '/,/';
$patterns[1] = '/:/';
$patterns[2] = '/\n/';

//the form post variable
$emails_added = $_POST["add_mail"];

//split out the values on an array bases on the above
$emails_split = explode(',' , preg_replace($patterns,',', $emails_added));

//loop through insert based on number of values in array
for ($i=0; $i<count($emails_split); ) {
     $db->execute("insert into my_mailer (email) values ('" . $emails_split[$i] . "')");
     $i++;
}
ASKER CERTIFIED SOLUTION
Avatar of CetusMOD
CetusMOD
Flag of Netherlands image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial