Printable Version of Topic

Click here to view this topic in its original format

HTMLHelp Forums _ Server-side Scripting _ Mail form problem

Posted by: ApoMarn Feb 5 2018, 11:20 AM

Can anyone tell me what I'm doing wrong here?

$email_message = .......
$email_message = "Medium: ".$medium."\r\n";
$email_message = .....

<FORM action="inspection_copies.php" method="post">
...
<p><input type="radio" name="medium" value="CD-ROM" checked> CD-ROM
<br><input type="radio" name="medium" value="USB drive"> USB drive
...
</FORM></b>

The rest of the form works perfectly but the radio button line sends only the title (Medium) without any value.

Posted by: Christian J Feb 5 2018, 04:13 PM

The example doesn't show how you create the $medium variable, e.g. by using $_POST['medium'] or similar.

Posted by: CharlesEF Feb 5 2018, 07:54 PM

In this section, each line over writes the previous value.

QUOTE
$email_message = .......
$email_message = "Medium: ".$medium."\r\n";
$email_message = .....

Posted by: ApoMarn Feb 9 2018, 04:38 AM

QUOTE(Christian J @ Feb 5 2018, 09:13 PM) *

The example doesn't show how you create the $medium variable, e.g. by using $_POST['medium'] or similar.


Below is the complete text of the mailform input. I have added the radio buttons to an existing form by following an example from an HTML handbook. According to the handbook this is all that's needed, but it doesn't work.

<FORM action="inspection_copies.php" method="post">
<P>Your name:&nbsp; &nbsp; &nbsp; <INPUT size=40 name="name" value="<?php echo getValue('name'); ?>" />
<P>Name and address of school: <br>
<Textarea name="school" rows=6 cols=47><?php echo getValue('school'); ?></TEXTAREA>
<P>Telephone:&nbsp; &nbsp; &nbsp; &nbsp;<INPUT size=40 name="phone" value="<?php echo getValue('phone'); ?>" />
<P>Your e-mail:&nbsp; &nbsp; &nbsp;<INPUT size=40 name="email" value="<?php echo getValue('email'); ?>" />
<P>Title(s) required: <br>
<textarea name="titles" rows=6 cols=47><?php echo getValue('titles'); ?></TEXTAREA>
<p><input type="radio" name="medium" value="CD-ROM" checked> CD-ROM
<br><input type="radio" name="medium" value="USB drive"> USB drive
<P>Comments (e.g. USB drive):<br>
<Textarea name="comments" rows=3 cols=47><?php echo getValue('comments'); ?></TEXTAREA>
<P><input type="submit" value="Send" name="submit">
</FORM>

Posted by: CharlesEF Feb 9 2018, 05:04 AM

We need to see the PHP code. How do you assign $medium? As Christian J pointed to you must be using '$medium = $_POST['medium']' or similar somewhere.

Posted by: ApoMarn Feb 13 2018, 12:17 PM

QUOTE(CharlesEF @ Feb 9 2018, 10:04 AM) *

We need to see the PHP code. How do you assign $medium? As Christian J pointed to you must be using '$medium = $_POST['medium']' or similar somewhere.


if (count($errors) == 0) {
$email_message .= "Name: ".clean_string($full_name)."\r\n";
$email_message .= "School: ".clean_string($school)."\r\n";
$email_message .= "Email: ".clean_string($email_from)."\r\n";
$email_message .= "Telephone: ".clean_string($phone)."\r\n";
$email_message .= "Titles requested: ".clean_string($titles)."\r\n";
$email_message .= "Medium: ".$medium."\r\n";
$email_message .= "Comments: ".clean_string($comments)."\r\n";
$headers = 'From: ' . $email_from . "\r\n".'Reply-To: ' . $email_from."\r\n" . 'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
header("Location: $thankyou_page");

I have also tried:
$email_message .= "Medium: ".clean_string($medium)."\r\n";
Do I still need '$medium = $_POST['medium']'?
If so, where does it go?

Posted by: ApoMarn Feb 13 2018, 12:19 PM

That shouldread:

I have also tried:
$email_message .= "Medium: ".clean_string($medium)."\r\n";

Posted by: CharlesEF Feb 13 2018, 03:26 PM

QUOTE(ApoMarn @ Feb 13 2018, 11:17 AM) *

I have also tried:
$email_message .= "Medium: ".clean_string($medium)."\r\n";
Do I still need '$medium = $_POST['medium']'?
If so, where does it go?

Of course you need it. When you submit a form all the field values contained in that form are sent to the server in the $_POST array. To use those values in a PHP script you need to grab the values from the $_POST array. Since your code uses a '$medium' variable then the '$medium' variable MUST be set somewhere in your code (where? before you use the variable), '$medium = ????'. So, if you want the value sent from the form then you MUST have '$medium = $_POST['medium']' somewhere. In fact, every form value you use should have the same type of assignment.

Posted by: ApoMarn Feb 14 2018, 07:06 AM

Cracked it
Thanks

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)