Problem with a checkbox

  • (3 Pages)
  • +
  • 1
  • 2
  • 3

42 Replies - 2859 Views - Last Post: 03 March 2009 - 08:33 AM Rate Topic: -----

#1 rconner  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 23-February 09

Problem with a checkbox

Posted 23 February 2009 - 09:58 AM

hi I have a question about checkboxes. i have a website and on it there is a list of topics and I want visitors to check the topic that they want and after they enter their email, the script auto responds with the respective topic in an email form and if they decide to choose multiple topics, it just sends multiple emails (unless there is a way to have the script combine txt files into one.) So I got a script for an auto respond and that works. The script takes in the visitors email, and then email them a auto response as well as email me a copy of the topics they picked and their email. I tried to add some code to send an auto response for the different topics but that does not work. here is the code in full for the php:

<?
/*
##############################################################################
# PLEASE DO NOT REMOVE THIS HEADER!!!
#
# COPYRIGHT NOTICE
#
# FormMail.php v5.0
# Copyright 2000-2004 Ai Graphics and Joe Lumbroso (c) All rights reserved.
# Created 07/06/2000   Last Modified 10/28/2003
# Joseph Lumbroso, http://www.aigraphics.com, http://www.dtheatre.com
#				  http://www.dtheatre.com/scripts/
##############################################################################
#
# This cannot and will not be inforced but I would appreciate a link back
# to any of these sites:
# http://www.dtheatre.com
# http://www.aigraphics.com
# http://www.dtheatre.com/scripts/
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
##############################################################################
*/

// for ultimate security, use this instead of using the form
$recipient = "callbess@yahoo.com"; // youremail@domain.com

// bcc emails (separate multiples with commas (,))
$bcc = "";

// referers.. domains/ips that you will allow forms to
// reside on.
$referers = array ('bessiegthrasher.com','www.bessiegthrasher.com','68.178.254.125');

// banned emails, these will be email addresses of people
// who are blocked from using the script (requested)
$banlist = array ('*@somedomain.com', 'user@domain.com', 'etc@domains.com');

// field / value seperator
define("SEPARATOR", ($separator)?$separator:": ");

// content newline
define("NEWLINE", ($newline)?$newline:"\n");

// formmail version (for debugging mostly)
define("VERSION", "5.0");


// our mighty error function..
function print_error($reason,$type = 0) {
   build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet);
   // for missing required data
   if ($type == "missing") {
	  if ($missing_field_redirect) {
		 header("Location: $missing_field_redirect?error=$reason");
		 exit;
	  } else {
	  ?>
	  The form was not submitted for the following reasons:<p>
	  <ul><?
	  echo $reason."\n";
	  ?></ul>
	  Please use your browser's back button to return to the form and try again.<?
	  }
   } else { // every other error
	  ?>
	  The form was not submitted because of the following reasons:<p>
	  <?
   }
   exit;
}

// function to check the banlist
// suggested by a whole lot of people.. Thanks
function check_banlist($banlist, $email) {
   if (count($banlist)) {
	  $allow = true;
	  foreach($banlist as $banned) {
		 $temp = explode("@", $banned);
		 if ($temp[0] == "*") {
			$temp2 = explode("@", $email);
			if (trim(strtolower($temp2[1])) == trim(strtolower($temp[1])))
			   $allow = false;
		 } else {
			if (trim(strtolower($email)) == trim(strtolower($banned)))
			   $allow = false;
		 }
	  }
   }
   if (!$allow) {
	  print_error("You are using from a <b>banned email address.</b>");
   }
}

// function to check the referer for security reasons.
// contributed by some one who's name got lost.. Thanks
// goes out to him any way.
function check_referer($referers) {
   if (count($referers)) {
	  $found = false;

	  $temp = explode("/",getenv("HTTP_REFERER"));
	  $referer = $temp[2];
	  
	  if ($referer=="") {$referer = $_SERVER['HTTP_REFERER'];
		 list($remove,$stuff)=split('//',$referer,2);
		 list($home,$stuff)=split('/',$stuff,2);
		 $referer = $home;
	  }
	  
	  for ($x=0; $x < count($referers); $x++) {
		 if (eregi ($referers[$x], $referer)) {
			$found = true;
		 }
	  }
	  if ($referer =="")
		 $found = false;
	  if (!$found){
		 print_error("You are coming from an <b>unauthorized domain.</b>");
		 error_log("[FormMail.php] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);
	  }
		 return $found;
	  } else {
		 return true; // not a good idea, if empty, it will allow it.
   }
}
if ($referers)
   check_referer($referers);

if ($banlist)
   check_banlist($banlist, $email);

// This function takes the sorts, excludes certain keys and 
// makes a pretty content string.
function parse_form($array, $sort = "") {
   // build reserved keyword array
   $reserved_keys[] = "MAX_FILE_SIZE";
   $reserved_keys[] = "required";
   $reserved_keys[] = "redirect";
   $reserved_keys[] = "require";
   $reserved_keys[] = "path_to_file";
   $reserved_keys[] = "recipient";
   $reserved_keys[] = "subject";
   $reserved_keys[] = "sort";
   $reserved_keys[] = "style_sheet";
   $reserved_keys[] = "bgcolor";
   $reserved_keys[] = "text_color";
   $reserved_keys[] = "link_color";
   $reserved_keys[] = "vlink_color";
   $reserved_keys[] = "alink_color";
   $reserved_keys[] = "title";
   $reserved_keys[] = "missing_fields_redirect";
   $reserved_keys[] = "env_report";
   $reserved_keys[] = "submit";
   if (count($array)) {
	  if (is_array($sort)) {
		 foreach ($sort as $field) {
			$reserved_violation = 0;
			for ($ri=0; $ri<count($reserved_keys); $ri++)
			   if ($array[$field] == $reserved_keys[$ri]) $reserved_violation = 1;

			if ($reserved_violation != 1) {
			   if (is_array($array[$field])) {
				  for ($z=0;$z<count($array[$field]);$z++)
					 $content .= $field.SEPARATOR.$array[$field][$z].NEWLINE;
			   } else
				  $content .= $field.SEPARATOR.$array[$field].NEWLINE;
			}
		 }
	  }
	  while (list($key, $val) = each($array)) {
		 $reserved_violation = 0;
		 for ($ri=0; $ri<count($reserved_keys); $ri++)
			if ($key == $reserved_keys[$ri]) $reserved_violation = 1;

		 for ($ri=0; $ri<count($sort); $ri++)
			if ($key == $sort[$ri]) $reserved_violation = 1;

		 // prepare content
		 if ($reserved_violation != 1) {
			if (is_array($val)) {
			   for ($z=0;$z<count($val);$z++)
				  $content .= $key.SEPARATOR.$val[$z].NEWLINE;
			} else
			   $content .= $key.SEPARATOR.$val.NEWLINE;
		 }
	  }
   }
   return $content;
}

// mail the content we figure out in the following steps
function mail_it($content, $subject, $email, $recipient) {
   global $attachment_chunk, $attachment_name, $attachment_type, $attachment_sent, $bcc;

   $ob = "----=_OuterBoundary_000";
   $ib = "----=_InnerBoundery_001";
   
   $headers  = "MIME-Version: 1.0\r\n"; 
   $headers .= "From: ".$email."\n"; 
   $headers .= "To: ".$recipient."\n"; 
   $headers .= "Reply-To: ".$email."\n";
   if ($bcc) $headers .= "Bcc: ".$bcc."\n"; 
   $headers .= "X-Priority: 1\n"; 
   $headers .= "X-Mailer: DT Formmail".VERSION."\n"; 
   $headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$ob."\"\n";
   
		  
   $message  = "This is a multi-part message in MIME format.\n";
   $message .= "\n--".$ob."\n";
   $message .= "Content-Type: multipart/alternative;\n\tboundary=\"".$ib."\"\n\n";
   $message .= "\n--".$ib."\n";
   $message .= "Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
   $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
   $message .= $content."\n\n";
   $message .= "\n--".$ib."--\n";
   if ($attachment_name && !$attachment_sent) {
	  $message .= "\n--".$ob."\n";
	  $message .= "Content-Type: $attachment_type;\n\tname=\"".$attachment_name."\"\n";
	  $message .= "Content-Transfer-Encoding: base64\n";
	  $message .= "Content-Disposition: attachment;\n\tfilename=\"".$attachment_name."\"\n\n";
	  $message .= $attachment_chunk;
	  $message .= "\n\n";
	  $attachment_sent = 1;
   }
   $message .= "\n--".$ob."--\n";
   
   mail($recipient, $subject, $message, $headers);
}

// take in the body building arguments and build the body tag for page display
function build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet) {
   if ($style_sheet)
	  echo "<LINK rel=STYLESHEET href=\"$style_sheet\" Type=\"text/css\">\n";
   if ($title)
	  echo "<title>$title</title>\n";
   if (!$bgcolor)
	  $bgcolor = "#FFFFFF";
   if (!$text_color)
	  $text_color = "#000000";
   if (!$link_color)
	  $link_color = "#0000FF";
   if (!$vlink_color)
	  $vlink_color = "#FF0000";
   if (!$alink_color)
	  $alink_color = "#000088";
   if ($background)
	  $background = "background=\"$background\"";
   echo "<body bgcolor=\"$bgcolor\" text=\"$text_color\" link=\"$link_color\" vlink=\"$vlink_color\" alink=\"$alink_color\" $background>\n\n";
}

// check for a recipient email address and check the validity of it
// Thanks to Bradley miller (bradmiller@accesszone.com) for pointing
// out the need for multiple recipient checking and providing the code.
$recipient_in = split(',',$recipient);
for ($i=0;$i<count($recipient_in);$i++) {
   $recipient_to_test = trim($recipient_in[$i]);
   if (!eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,6}$", $recipient_to_test)) {
	  print_error("<b>I NEED VALID RECIPIENT EMAIL ADDRESS ($recipient_to_test) TO CONTINUE</b>");
   }
}

// This is because I originally had it require but too many people
// were used to Matt's Formmail.pl which used required instead.
if ($required)
   $require = $required;
// handle the required fields
if ($require) {
   // seperate at the commas
   $require = ereg_replace( " +", "", $require);
   $required = split(",",$require);
   for ($i=0;$i<count($required);$i++) {
	  $string = trim($required[$i]);
	  // check if they exsist
	  if((!(${$string})) || (!(${$string}))) {
		 // if the missing_fields_redirect option is on: redirect them
		 if ($missing_fields_redirect) {
			header ("Location: $missing_fields_redirect");
			exit;
		 }
		 $require;
		 $missing_field_list .= "<b>Missing: $required[$i]</b><br>\n";
	  }
   }
   // send error to our mighty error function
   if ($missing_field_list)
	  print_error($missing_field_list,"missing");
}

// check the email fields for validity
if (($email) || ($EMAIL)) {
   $email = trim($email);
   if ($EMAIL) $email = trim($EMAIL);
   if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$", $email))
	  print_error("your <b>email address</b> is invalid");
   $EMAIL = $email;
}

// check zipcodes for validity
if (($ZIP_CODE) || ($zip_code)) {
   $zip_code = trim($zip_code);
   if ($ZIP_CODE) $zip_code = trim($ZIP_CODE);
   if (!ereg("(^[0-9]{5})-([0-9]{4}$)", trim($zip_code)) && (!ereg("^[a-zA-Z][0-9][a-zA-Z][[:space:]][0-9][a-zA-Z][0-9]$", trim($zip_code))) && (!ereg("(^[0-9]{5})", trim($zip_code))))
	  print_error("your <b>zip/postal code</b> is invalid");
}

// check phone for validity
if (($PHONE_NO) || ($phone_no)) {
   $phone_no = trim($phone_no);
   if ($PHONE_NO) $phone_no = trim($PHONE_NO);
   if (!ereg("(^(.*)[0-9]{3})(.*)([0-9]{3})(.*)([0-9]{4}$)", $phone_no))
	  print_error("your <b>phone number</b> is invalid");
}

// check phone for validity
if (($FAX_NO) || ($fax_no)) {
   $fax_no = trim($fax_no);
   if ($FAX_NO) $fax_no = trim($FAX_NO);
   if (!ereg("(^(.*)[0-9]{3})(.*)([0-9]{3})(.*)([0-9]{4}$)", $fax_no))
	  print_error("your <b>fax number</b> is invalid");
}

// sort alphabetic or prepare an order
if ($sort == "alphabetic") {
   uksort($HTTP_POST_VARS, "strnatcasecmp");
} elseif ((ereg('^order:.*,.*', $sort)) && ($list = explode(',', ereg_replace('^order:', '', $sort)))) {
   $sort = $list;
}
   
// prepare the content
$content = parse_form($HTTP_POST_VARS, $sort);

// check for an attachment if there is a file upload it
if ($attachment_name) {
   if ($attachment_size > 0) {
	  if (!$attachment_type) $attachment_type =  "application/unknown";
	  $content .= "Attached File: ".$attachment_name."\n";
	  $fp = fopen($attachment,  "r");
	  $attachment_chunk = fread($fp, filesize($attachment));
	  $attachment_chunk = base64_encode($attachment_chunk);
	  $attachment_chunk = chunk_split($attachment_chunk);
   }
}

// check for a file if there is a file upload it
if ($file_name) {
   if ($file_size > 0) {
	  if (!ereg("/$", $path_to_file))
		 $path_to_file = $path_to_file."/";
	  $location = $path_to_file.$file_name;
	  if (file_exists($path_to_file.$file_name))
		 $location = $path_to_file.rand(1000,3000).".".$file_name;
	  copy($file,$location);
	  unlink($file);
	  $content .= "Uploaded File: ".$location."\n";
   }
}

// second file (see manual for instructions on how to add more.)
if ($file2_name) {
   if ($file_size > 0) {
	  if (!ereg("/$", $path_to_file))
		 $path_to_file = $path_to_file."/";
	  $location = $path_to_file.$file2_name;
	  if (file_exists($path_to_file.$file2_name))
		 $location = $path_to_file.rand(1000,3000).".".$file2_name;
	  copy($file2,$location);
	  unlink($file2);
	  $content .= "Uploaded File: ".$location."\n";
   }
}

// if the env_report option is on: get eviromental variables
if ($env_report) {
   $env_report = ereg_replace( " +", "", $env_report);
   $env_reports = split(",",$env_report);
   $content .= "\n------ eviromental variables ------\n";
   for ($i=0;$i<count($env_reports);$i++) {
	  $string = trim($env_reports[$i]);
	  if ($env_reports[$i] == "REMOTE_HOST")
		 $content .= "REMOTE HOST: ".$REMOTE_HOST."\n";
	  if ($env_reports[$i] == "REMOTE_USER")
		 $content .= "REMOTE USER: ". $REMOTE_USER."\n";
	  if ($env_reports[$i] == "REMOTE_ADDR")
		 $content .= "REMOTE ADDR: ". $REMOTE_ADDR."\n";
	  if ($env_reports[$i] == "HTTP_USER_AGENT")
		 $content .= "BROWSER: ". $HTTP_USER_AGENT."\n";
   }
}

// send it off
mail_it(stripslashes($content), ($subject)?stripslashes($subject):"Free Report Submission", $email, $recipient);
if (file_exists($ar_file)) {
   $fd = fopen($ar_file, "rb");
   $ar_message = fread($fd, filesize($ar_file));
   fclose($fd);
   mail_it($ar_message, ($ar_subject)?stripslashes($ar_subject):"RE: Free Report Submission", ($ar_from)?$ar_from:$recipient, $email);
}

if (isset($_POST["multi_field[1]"]))
{
   $fd = fopen($ar_file_1, "rb");
   $ar_message = fread($fd, filesize($ar_file_1));
   fclose($fd);
  mail_it($ar_message, ($ar_subject_1)?stripslashes($ar_subject_1):"RE: Free Report Submission", ($ar_from)?$ar_from:$recipient, $email);
}

// if the redirect option is set: redirect them
if ($redirect) {
   header("Location: $redirect");
   exit;
} else {
   echo "Thank you for your submission\n";
   exit;
}

// <----------	THE END	----------> //  


here is the html if you need it:
<html><head>
<style type="text/css">
.style1 {
	text-align: right;
}
</style>
</head>
<body bgcolor="#D8D7D7" link="maroon" alink="red" vlink="red">
<table cellspacing="0" width="310" cellpadding="0" border="0"><tr>
	<td class="style1">
			<table ALIGN="center" BORDER="0" CELLSPACING="0" CELLPADDING="0" style="width: 700">
				<tr>
					<td align=center>&nbsp;</td>
				</tr>
			</table>
			<br>
		<form method="post" enctype="multipart/form-data" action="formmail.php">			
<input type="hidden" name="require" value="name,email">
<input type="hidden" name="recipient" value="callbess@yahoo.com">
<input type="hidden" name="sort" value="order:name,email,phone_no,BuyerSeller,multi_field[]">
<input type="hidden" name="ar_file_1" value="report_1.txt">
<input type="hidden" name="ar_subject_1" value="10 Important Tips to Successful Real Estate Investing">
<input type="hidden" name="ar_file" value="autoresponder.txt">
<input type="hidden" name="ar_subject" value="Response from Bessie Thrasher">
<input type="hidden" name="ar_from" value="callbess@yahoo.com">
			<table width="90%" align="center">
				<tr>	
					<td class="header1" colspan="2"><b>Please check the info-e-mail(s) you would 
						like sent to you...</b>
					</td>
				</tr>
				<tr>
					<td class="body" colspan="2"><b><table width=100% align=center><tr>
<td width='10%' align='center'><input type='checkbox' name="multi_field[]" value='10 Important Tips to Successful Real Estate Investing'><font face='Arial' size='2'><b><img border='0' src='http://FileLibrary.MYAASite.Com/Content/images/redarrow.gif' width='8' height='10'></b></font></td>
<td width='90%'><font face='Arial' size='2'><b>10 Important Tips to Successful Real Estate Investing</b></font></td>
</tr>
<tr>
<td width='10%' align='center'><input type='checkbox' name="multi_field[]" value='5 Secrets to Buying the Best House for Your Money'><font face='Arial' size='2'><b><img border='0' src='http://FileLibrary.MYAASite.Com/Content/images/redarrow.gif' width='8' height='10'></b></font></td>
<td width='90%'><font face='Arial' size='2'><b>5 Secrets to Buying the Best House for Your Money </b></font></td>
</tr>
</table></b>
					</td>
				</tr>
				<tr>
					<td width="100%" colspan="2" class=header1>Please provide 
								the following...</td>
				</tr>
				<tr>
					<td width="10%" align="right" class=body><b>Name</b></td>
					<td width="90%"><input type=text name="name" size="20"></td>
				</tr>
				<tr>
					<td width="10%" align="right" class=body><b>Tel#</b></td>
					<td width="90%"><input type=text name="phone_no" size="20"><font face="Arial" size="1">Optional</font></td>
				</tr>
				<tr>
					<td width="10%" align="right" class=body><b>E-Mail</b></td>
					<td width="90%"><input type=text name="email" size="20"></td>
				</tr>
				<tr>
					<td width="10%" align="right" class=body><b>I am a: </b></td>
					<td width="90%"><input type="radio" name="BuyerSeller[]" value="Buyer" checked><font face="arial" size="2">Buyer</font>
									<input type="radio" name="BuyerSeller[]" value="Seller"><font face="arial" size="2">Seller</font>
				</td>
				</tr>
				<tr><td colspan=2><input type="submit" value="Send Reports!" onclick="java script:return PreValidateForm()"><input type="reset"></td></tr>
			</table>
			<p align=center><font size="1">By submitting this form with your telephone number you are consenting 
			for
			Bessie Thrasher
			and all authorized representatives to contact you even if your name is on a  
			Federal or State "Do not call List"<BR>
			<BR>
			Thank you for submitting your information. We will be in contact with you by 
			phone or email. </font>
	</p>
		</form>
		<hr>
		</TD></TR></TABLE>
		<script language="Javascript" version="1.2">
function PreValidateForm()
{
//check for no name
	if (document.form1.Name.value == ""){
		alert("You must enter a Name.");
		return false;
	}
	
//now if its here.. have to validate the email address.
	var sString;
	var aAt;
	var aDot;
	
	sString = document.form1.Email.value;
	aAt = sString.split('@');
	if (aAt.length == 2) {
		aDot = aAt[1].split('.');
		if (aDot.length >= 2) {
			// Its ok
			return true;
			//document.form1.submit();
		} else {
			// Failed Check
			alert("You must enter a valid Email Address (Needs a dot).");
			return false;
		}
	} else {
		// Failed Check
		alert("You must enter a valid Email Address (Needs an @).");
		return false;
	}
}
		</script>
</body></html>



The code that actually does not work was what I added near the bottom of the php code and at the top of the form of the html. Here:

if (isset($_POST["multi_field[1]"]))
{
   $fd = fopen($ar_file_1, "rb");
   $ar_message = fread($fd, filesize($ar_file_1));
   fclose($fd);
  mail_it($ar_message, ($ar_subject_1)?stripslashes($ar_subject_1):"RE: Free Report Submission", ($ar_from)?$ar_from:$recipient, $email);
}



<input type="hidden" name="ar_file_1" value="report_1.txt">
<input type="hidden" name="ar_subject_1" value="10 Important Tips to Successful Real Estate Investing">

<td width='10%' align='center'><input type='checkbox' name="multi_field[]" value='10 Important Tips to Successful Real Estate Investing'><font face='Arial' size='2'><b><img border='0' src='http://FileLibrary.MYAASite.Com/Content/images/redarrow.gif' width='8' height='10'></b></font></td>
<td width='90%'><font face='Arial' size='2'><b>10 Important Tips to Successful Real Estate Investing</b></font></td>


The part of the php that I added was simply a copy paste of the code that actually sent off the first auto response (that works) and I changed a couple variables. I am guessing that I did that part wrong because that I what does not work. If you have any ideas on how I can fix this that would be great. Thanks

This post has been edited by rconner: 23 February 2009 - 10:11 AM


Is This A Good Question/Topic? 0
  • +

Replies To: Problem with a checkbox

#2 rconner  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 23-February 09

Re: Problem with a checkbox

Posted 23 February 2009 - 01:20 PM

Actually I was looking through the forums here and figured the best plan would be to run a loop checking the value of each check box (seeing as they are in an array right now) and then send the email that corresponds with the check box selected and just have a generic subject title. So for example since the checkboxes are in an array multi_field[] I can have the emails also numbered (ex. report1,report2, report3,etc) then in my loop I would have it check the value of multi_field[1] and if checked it would email the same report (report1) which I think i can do by having the title of the email as an array also so when it is checking multi_field[1], it will be sending report[1].txt and so on as the array moves. Is this the right way to go about what I want to do? And since I have a set amount of check boxes I can use a for loop that stops if the counter number reaches a number above the amount of check boxes I have. how exactly should my for loop look (examples are nice as I can figure it out myself from those)?

I have taken qbasic and some c++ so I have some basic knowledge on programming and I know html rather well but I have no idea about php. Any help is greatly appreciated.

This post has been edited by rconner: 23 February 2009 - 01:21 PM

Was This Post Helpful? 0
  • +
  • -

#3 CTphpnwb  Icon User is online

  • D.I.C Lover
  • member icon

Reputation: 3075
  • Posts: 10,783
  • Joined: 08-August 08

Re: Problem with a checkbox

Posted 23 February 2009 - 01:41 PM

See tutorials:
http://www.dreaminco...wtopic86370.htm
Was This Post Helpful? 0
  • +
  • -

#4 rconner  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 23-February 09

Re: Problem with a checkbox

Posted 23 February 2009 - 01:53 PM

View PostCTphpnwb, on 23 Feb, 2009 - 12:41 PM, said:



I saw that piece of code in another thread about check boxes but I do not understand where that goes. Does it go directly into my html or do I put it into the php file that my from is running through?
Was This Post Helpful? 0
  • +
  • -

#5 CTphpnwb  Icon User is online

  • D.I.C Lover
  • member icon

Reputation: 3075
  • Posts: 10,783
  • Joined: 08-August 08

Re: Problem with a checkbox

Posted 23 February 2009 - 01:59 PM

View Postrconner, on 23 Feb, 2009 - 03:53 PM, said:

Does it go directly into my html or do I put it into the php file that my from is running through?

I think you're trying to run before you can walk. Start slower:

Put this in a text file called Helloworld.php
<?php
$myvariable = "Hello World! ";
echo $myvariable;



When you get that to work, add a loop to it that will echo the variable ten times. When you get that to work, reread the tutorial.
Was This Post Helpful? 0
  • +
  • -

#6 rconner  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 23-February 09

Re: Problem with a checkbox

Posted 23 February 2009 - 02:30 PM

View PostCTphpnwb, on 23 Feb, 2009 - 12:59 PM, said:

View Postrconner, on 23 Feb, 2009 - 03:53 PM, said:

Does it go directly into my html or do I put it into the php file that my from is running through?

I think you're trying to run before you can walk. Start slower:

Put this in a text file called Helloworld.php
<?php
$myvariable = "Hello World! ";
echo $myvariable;



When you get that to work, add a loop to it that will echo the variable ten times. When you get that to work, reread the tutorial.

alright I understand what your tutorial says. Only problem is is it possible to not make my form WITH the php but simply run the form through the php, like I have it doing now. The form runs through formmail.php and everything works except for the part that I added, which makes less sense to me seeing as how I have no idea what isset function is for. I can tell on your script you run the loop in the array, check to see if it's value is set to checked or not then outputs the name of the checkbox. Can I replace your $checkboxname with multi_field[], run that through the loop and do the same if statement you used. Like this

var_dump($_POST);
foreach (multi_field[] as $checkbox){
if($_POST[$checkbox]=="on")
{
$checked = "checked";} else {
unset($checked);}
[code to send email goes here]}



then for the html of my form I change the value of each check box from whatever I have it as to $checked.

would that be somewhat right or am I completely off the mark because I understood what your tutorial was doing but that was creating the form through the php and since I have to have it mixed in with the rest of my site and have another script already running through it, that did not fit in very well. I wanted to just add a loop statement to check each box and if it is checked to send a seperate email with what the checkbox topic was
Was This Post Helpful? 0
  • +
  • -

#7 CTphpnwb  Icon User is online

  • D.I.C Lover
  • member icon

Reputation: 3075
  • Posts: 10,783
  • Joined: 08-August 08

Re: Problem with a checkbox

Posted 23 February 2009 - 02:47 PM

Sure, it's possible, but that requires that you understand what your script is doing. Don't think of it as php on one side and html on the other. Php generates html.

isset() checks to see if a variable has been set:
<?php
if(isset($x)) {
	echo "x is set to ".$x."<br>";
} else {
	echo "x is not set.<br>";
}
$y = "some value";
if(isset($y)) {
	echo "y is set to ".$y."<br>";
} else {
	echo "y is not set.<br>";
}
?>

Was This Post Helpful? 0
  • +
  • -

#8 rconner  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 23-February 09

Re: Problem with a checkbox

Posted 24 February 2009 - 06:49 AM

Someone wouldnt happen to know where my problem lies in this code:

for ($i=1; $i<=1; $i++)
{
if (isset($_POST['multi_field[$i]'])) 
{ 
   $fd = fopen($ar_file_($i), "rb");
   $ar_message = fread($fd, filesize($ar_file_($i)));
   fclose($fd);
   mail_it($ar_message, ($ar_subject)?stripslashes($ar_subject):"RE: Free Report Submission", ($ar_from)?$ar_from:$recipient, $email); } else {
}}



I placed that in the formmail.php but it won't work so I must have done something wrong. This bit of code that is just before it does work

mail_it(stripslashes($content), ($subject)?stripslashes($subject):"Free Report Submission", $email, $recipient);
if (file_exists($ar_file)) {
   $fd = fopen($ar_file, "rb");
   $ar_message = fread($fd, filesize($ar_file));
   fclose($fd);
   mail_it($ar_message, ($ar_subject)?stripslashes($ar_subject):"RE: Free Report Submission", ($ar_from)?$ar_from:$recipient, $email);
}



so I thought by copying the code it should work as well but I guess I must have done something wrong. I was trying to do a for loop (for testing purposes just doing it once) to check some checkboxes and if coming out true it would send off the file ar_file_1 (or 2, 3, 4 etc depending on where in the for loop it is)

any help is appreciated.
Was This Post Helpful? 0
  • +
  • -

#9 thehat  Icon User is offline

  • awake ? web();
  • member icon

Reputation: 106
  • View blog
  • Posts: 951
  • Joined: 28-February 08

Re: Problem with a checkbox

Posted 24 February 2009 - 07:01 AM

Does it not work at all, or only runs your loop once? The loop you have created will only execute once. Let me break it down for you:

for ($i=1; $i<=1; $i++)

What this says is: $i starts with a value of one. At the end of every iteration of the loop, increment $i by 1. Do the iteration if $i is less than or equal to 1.

So as you can see, your loop will run the first time because $i is equal to one, but after that is will fail because $i becomes 2. If this is what you intended, then there is no need to have a for loop in there at all.
Was This Post Helpful? 0
  • +
  • -

#10 rconner  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 23-February 09

Re: Problem with a checkbox

Posted 24 February 2009 - 07:19 AM

well i have like 30 check boxes but for testing purposes i was running the loop a single time in order to see if it would even send that first email after i check the box but it didnt. the second bit of code i posted though works because it still sends that file (that file is sent no matter what, the first part of code should send only if the checkbox is checked). I do not know if maybe the parts of code were the isset tag is and I put $i in brackets was right. The checkboxes are named multi_field[1],multi_field[2], etc. so i figured i could put $i in the brackets to have the code checking every checkbox (as high as I set the for loop for) but was that the right way to do it?
Was This Post Helpful? 0
  • +
  • -

#11 thehat  Icon User is offline

  • awake ? web();
  • member icon

Reputation: 106
  • View blog
  • Posts: 951
  • Joined: 28-February 08

Re: Problem with a checkbox

Posted 24 February 2009 - 07:32 AM

Ah, I think I see what you're trying to do. Have you tried:
if (isset($_POST['multi_field['.$i.']']))



If I remember correctly, php won't translate the variable $i when the string is wrapped with single quotes. By that logic, this should work too:
if (isset($_POST["multi_field[$i]"]))


This post has been edited by thehat: 24 February 2009 - 07:33 AM

Was This Post Helpful? 0
  • +
  • -

#12 CTphpnwb  Icon User is online

  • D.I.C Lover
  • member icon

Reputation: 3075
  • Posts: 10,783
  • Joined: 08-August 08

Re: Problem with a checkbox

Posted 24 February 2009 - 07:59 AM

I think this should do it:
if (isset($_POST[$multi_field[$i]])) {

<?php

$multi_field = array("test","One","two");
		echo '<br><form name="aForm" method="post" action='.$_SERVER['php_self'].'>
';

		echo '<input type="submit" name="One" value="Click Here">
</form>';

for($i=0;$i<3;$i++) {
	if (isset($_POST[$multi_field[$i]])) {
		echo "<br>Yes, multi_field[$i] was posted.<br>";
	} else {
		echo "<br>No, multi_field[$i] was not posted.<br>";
	}
}

?>


This post has been edited by CTphpnwb: 24 February 2009 - 08:07 AM

Was This Post Helpful? 0
  • +
  • -

#13 thehat  Icon User is offline

  • awake ? web();
  • member icon

Reputation: 106
  • View blog
  • Posts: 951
  • Joined: 28-February 08

Re: Problem with a checkbox

Posted 24 February 2009 - 08:11 AM

That makes more sense, I was confused by this:

View Postrconner, on 24 Feb, 2009 - 02:19 PM, said:

The checkboxes are named multi_field[1],multi_field[2], etc.

Was This Post Helpful? 0
  • +
  • -

#14 CTphpnwb  Icon User is online

  • D.I.C Lover
  • member icon

Reputation: 3075
  • Posts: 10,783
  • Joined: 08-August 08

Re: Problem with a checkbox

Posted 24 February 2009 - 08:17 AM

View Postthehat, on 24 Feb, 2009 - 10:11 AM, said:

That makes more sense, I was confused by this:

View Postrconner, on 24 Feb, 2009 - 02:19 PM, said:

The checkboxes are named multi_field[1],multi_field[2], etc.

:D
Well, if they're actually named multi_field[1],multi_field[2], etc., then my method is wrong. I think the names should be contained in an array called multi_field, so that's what I based my answer on.
Was This Post Helpful? 0
  • +
  • -

#15 rconner  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 23-February 09

Re: Problem with a checkbox

Posted 24 February 2009 - 08:19 AM

hmm right I tried that but the code still doesn't work. I changed the code to this:

for ($i=1; $i<=1; $i++)
{
if (isset($_POST['multi_field[1]']))
{ 
   $fd = fopen($ar_file_1, "rb");
   $ar_message = fread($fd, filesize($ar_file_1));
   fclose($fd);
   mail_it($ar_message, ($ar_subject)?stripslashes($ar_subject):"RE: Free Report Submission", ($ar_from)?$ar_from:$recipient, $email); } else {
}}



So if my code for the if statement and the for loop is correct then the problem lies in the code that is supposed to mail the file. I am stuck now since I have no idea what to do next. I figured that the code i was using was the code that actually send out the auto response email seeing as how it is the only bit of code in the whole php file that has anything to do with ar_file (which is the txt that goes into the body of the email) so i am not sure what next to do.
Was This Post Helpful? 0
  • +
  • -

  • (3 Pages)
  • +
  • 1
  • 2
  • 3