Question

I'm building an email form. In this email form, there is a star rating with radio buttons:

<span class="star-rating">
    <input type="radio" name="rating" id="rating" value="1"><i></i>
    <input type="radio" name="rating" id="rating" value="2"><i></i>
    <input type="radio" name="rating" id="rating" value="3"><i></i>
    <input type="radio" name="rating" id="rating" value="4"><i></i>
    <input type="radio" name="rating" id="rating" value="5"><i></i>
</span>

If I send the form to my email address, it shows me the star rating empty.

Here is the code to get the rating:

$rating = $_Post['rating'];

And this is the full code:

<?php

if(isset($_POST['email']) or isset($_POST['first_name']) or isset($_POST['last_name']) or isset($_POST['subject']) or isset($_POST['message']) or isset($_POST['rating'])) {



    // Mediatube Contact Informations

    $email_to = "info@mediatube.ch";

    $email_subject = "Contact to info@mediatube";





    function died($error) {

        // your error code can go here

        echo "We are very sorry, but there were error(s) found with the form you submitted. ";

        echo "These errors appear below.<br /><br />";

        echo $error."<br /><br />";

        echo "Please go back and fix these errors.<br /><br />";

        die();

    }



    // validation expected data exists

    if(!isset($_POST['email']) ||

        !isset($_POST['first_name']) ||

        !isset($_POST['last_name']) ||

        !isset($_POST['subject']) ||

        !isset($_POST['message']) ||

        !isset($_POST['rating'])) {

        died('We are sorry, but there appears to be a problem with the form you submitted.');      

    }


    $email = $_POST['email']; // required

    $first_name = $_POST['first_name']; // required

    $last_name = $_POST['last_name']; // required

    $subject = $_POST['subject']; // required

    $message = $_POST['message']; // required

    $rating = $_Post['rating']; // required



    $error_message = "";

    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';

  if(!preg_match($email_exp,$email)) {

    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';

  }

    $string_exp = "/^[A-Za-z .'-]+$/";

  if(!preg_match($string_exp,$first_name)) {

    $error_message .= 'The First Name you entered does not appear to be valid.<br />';

  }

  if(!preg_match($string_exp,$last_name)) {

    $error_message .= 'The Last Name you entered does not appear to be valid.<br />';

  }

  if(strlen($message) < 2) {

    $error_message .= 'The Message you entered do not appear to be valid.<br />';

  }

  if(strlen($error_message) > 0) {

    died($error_message);

  }

    $email_message = "Email sent by Email Form at Mediatube.\n\n";



    function clean_string($string) {

      $bad = array("content-type","bcc:","to:","cc:","href");

      return str_replace($bad,"",$string);

    }


    $email_message .= "Email: ".clean_string($email)."\n";

    $email_message .= "First Name: ".clean_string($first_name)."\n";

    $email_message .= "Last Name: ".clean_string($last_name)."\n";

    $email_message .= "Subject: ".clean_string($subject)."\n";

    $email_message .= "Message: ".clean_string($message)."\n";

    $email_message .= "Rating: ".clean_string($rating)."\n";





// create email headers

$headers = 'From: '.$email."\r\n".

'Reply-To: '.$email."\r\n" .

'X-Mailer: PHP/' . phpversion();

@mail($email_to, $email_subject, $email_message, $headers); 

?>



<!-- html success code -->



Thank you for contacting us. We will be in touch with you very soon.



<?php

}

?>

What is wrong, what can I do?

Thanks for your replying!

Was it helpful?

Solution

There are lot of mistakes in our code.

You can't have multiple ids with same name so you have to change this.

Also your code

 $rating = $_Post['rating'];

change to

$rating = $_POST['rating'];

OTHER TIPS

Upper case POST as i think it is case sensitive.

$rating = $_POST['rating'];

Assume that these inputs are correctly wrapped in a form which is being posted to a seperate PHP page just echo $rating; and ensure you have the correct value. Can find more on PHP POST Function here.

Also unrelated - as @Pwner added. You shouln't have multiple elements with the same ID, to style these you should use CSS Classes. Learn more on ID vs Classes here.

I changed this code

$rating = $_Post['rating'];

to this code

$rating = $_POST['rating'];

Now it works :)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top