I apologize if this isn't the right place to post this.. but I was hoping someone could help me out with a foreach loop.
I'm using the code from here http://drupal.org/node/68265 for a custom form in a page. I've modified it to display select menus - and they work just great except I can't get it to send anything other than a number. I've been all through the api stuff and have tried various methods for writing a foreach loop for the select menus, but everything seems to conflict with common.inc. Here's my modified code (hopefully this will display correctly):
<?php
$form['name'] = array( '#type' => 'textfield', '#title' => t('Username'), '#default_value' => $object['name'], '#size' => 30, '#maxlength' => 128, '#required' => TRUE, );
$form['eMail'] = array( '#type' => 'textfield', '#title' => t('E-mail Address'), '#default_value' => $object['eMail'], '#size' => 30, '#maxlength' => 128, '#required' => TRUE, );
//account option $account = array( '--'.t('Select').'--', t('Model'), t('Photographer'), t('Crew'), );
$form['assign'][$i] = array( '#type' => 'select', '#title' => t('Account purpose'), '#default_value' => $object['assign'][$i], '#options' => $account, '#required' => TRUE, '#description' => t('Choose which account your're applying for.'), );
$form['location'] = array( '#type' => 'textfield', '#title' => t('Location'), '#default_value' => $object['location'], '#size' => 30, '#maxlength' => 128, '#required' => TRUE, '#description' => t('Enter your city, state and country'), );
$form['age'] = array( '#type' => 'textfield', '#title' => t('Age'), '#default_value' => $object['age'], '#size' => 15, '#maxlength' => 128, '#required' => TRUE, '#description' => t('Enter your age'), );
//experience options $experience = array( '--'.t('Select').'--', t('Amateur/ Hobbyist'), t('Experienced Hobbyist'), t('Semi Professional'), t('Professional'), );
$form['exlevel'] = array( '#type' => 'select', '#title' => t('Experience Level'), '#default_value' => $object['exlevel'], '#options' => $experience, '#required' => TRUE, '#description' => t('Enter your experience level.'), );
//travel options $travel = array( '--'.t('Select').'--', t('Yes'), t('w/ expenses paid'), t('w/o expenses paid'), t('Only in my state'), t('Only in my city'), t('Depends on assignment'), t('No'), );
$form['willtravel'] = array( '#type' => 'select', '#title' => t('Will travel'), '#default_value' => $object['willtravel'], '#options' => $travel, '#required' => TRUE, '#description' => t('Are you willing to travel?'), );
$form['nudity'] = array( '#type' => 'textfield', '#title' => t('Nudity Level'), '#default_value' => $object['nudity'], '#size' => 30, '#maxlength' => 128, '#required' => TRUE, '#description' => t('Enter your level of experience or willingness for nude assignments.'), ); $form['compensation'] = array( '#type' => 'textfield', '#title' => t('Compensation'), '#default_value' => $object['compensation'], '#size' => 30, '#maxlength' => 128, '#required' => TRUE, '#description' => t('Example: DOA (Depends on Assignment), TFP, TFCD, Paid only, etc.'), ); $form['website'] = array( '#type' => 'textfield', '#title' => t('Web Site'), '#default_value' => $object['website'], '#size' => 30, '#maxlength' => 128, '#required' => FALSE, '#description' => t('If you have a personal web site, enter it here.'), ); $form['message'] = array( '#type' => 'textarea', '#title' => t('additional information'), '#default_value' => $object['message'], '#size' => 30, '#maxlength' => 128, '#rows' => 7, '#required' => FALSE, );
$form['file1'] = array( '#type' => 'file', '#title' => t('Four images are required for review.'), ); $form['file2'] = array( '#type' => 'file', ); $form['file3'] = array( '#type' => 'file', ); $form['file4'] = array( '#type' => 'file', );
$form['submit'] = array( '#type' => 'submit', '#value' => t('send email'), );
$form['#attributes']['enctype'] = 'multipart/form-data';
$output = drupal_get_form('contactform', $form); return $output;
// validation function for the contact form function contactform_validate($form_id, $form_values) { // first we validate if there is a email injection $finds = array("/bcc:/i", "/Content-Type:/i", "/Mime-Type:/i", "/MIME-Version:/i", "/multipart/mixed/i", "/boundary=/i", "/subject:/i", "/cc:/i", "/to:/i"); foreach($form_values as $value) foreach($finds as $find) if(preg_match($find,$value)) form_set_error('', '<h2 class="red center">Stop spamming</h2>');
// then we validate the email-adress if (!valid_email_address($form_values['eMail']) && !empty($form_values['eMail'])) form_set_error('', t('Please check the spelling of your email-adress.')); }
// submit function for the contact form function contactform_submit($form_id, $form_values) {
$from = $form_values['name'].' <'.$form_values['eMail'].'>'; $recipient = 'MX michelle@steelveils.com'; $subject = 'Application'; $account = $form_values['assign']; $location = $form_values['location']; $age = $form_values['age']; $experience = $form_values['exlevel']; $travel = $form_values['willtravel']; $nudity = $form_values['nudity']; $compensation = $form_values['compensation']; $website = $form_values['website']; $body = wordwrap($form_values['message']); $reply = 'Thank you for your application. Your application for an account is currently pending approval. Once it has been granted, you will receive further instructions in eMail.'; $goto = 'app-rec';
if (!flood_is_allowed('contact', variable_get('contact_hourly_threshold', 8))) { $output = t("You cannot send more than %number messages per hour. Please try again later.", array('%number' => variable_get('contact_hourly_threshold', 3))); drupal_set_message('<h3 class="red center">'.$output.'</h3>'); drupal_goto($goto); }else{ $attachment = FALSE; $trenner = md5(uniqid(time())); $headers .= "MIME-Version: 1.0\n"; $headers .= "From: $from\nReply-to: $from\nReturn-path: $from\nErrors-to: $from\nX-Mailer: Drupal\n"; $headers .= "Content-Type: multipart/mixed;\n\tboundary=$trenner\n"; $message .= "\n--$trenner\n"; $message .= "Content-Type: text/plain; charset=UTF-8;"."\n\n"; // sets the mime type $message .= "Account type: " .$account. "\n"; $message .= "Location: " .$location."\n"; $message .= "Age: " .$age."\n"; $message .= "Experience Level: " .$experience."\n"; $message .= "Will Travel: " .$travel."\n"; $message .= "Nudity Level: " .$nudity."\n"; $message .= "Compensation: " .$compensation."\n"; $message .= "Web Site: " .$website."\n"; $message .= $body. "\n"; $message .= "\n\n";
for($i=1;$i<=4;$i++){ $file = file_check_upload('file'.$i); if($file->filename){ $file->filepath = str_replace("\","\\",$file->filepath); $message .= "--$trenner"."\n"; $message .= "Content-Type:$file->filemime;\n\tname=$file->filename\n"; $message .= "Content-Transfer-Encoding: base64\n"; $message .= "Content-Disposition: attachment;\n\tfilename=$file->filename\n\n"; $filedata = fread(fopen($file->filepath, "rb"), $file->filesize); $message .= chunk_split(base64_encode($filedata)); $message .= "\n\n"; $attachment = TRUE; } } $message .= "--$trenner--";
// send Mail if($attachment) // use the php mail function if we have attachments mail($recipient, $subject, $message, $headers); else user_mail($recipient, $subject, $account, $location, $age, $experience, $travel, $nudity, $compensation, $website, $body, "From: $from\nReply-to: $from\nX-Mailer: Drupal\nReturn-path: $from\nErrors-to: $from");
// Reply user_mail($from, $subject, wordwrap($reply), "From: $recipient\nReply-to: $recipient\nX-Mailer: Drupal\nReturn-path: $recipient\nErrors-to: $recipient");
// Log the operation: flood_register_event('contact'); watchdog('mail', t('%name-from use contact form', array('%name-from' => theme('placeholder', $form_values['name'] ." <$from>"),)));
drupal_set_message('Your message has been sent to us'); drupal_goto($goto); } }
?>
Thanks! Michelle