Флажок PHP - вернуть «Да» вместо 1 как? - PullRequest
0 голосов
/ 27 июля 2011

У меня есть простая контактная форма с флажком, после подтверждения и подтверждения я повторяю результаты формы.Я бы хотел, чтобы элемент флажка возвращал ДА, если он отмечен, и НЕТ, если пусто.

Вот мой фрагмент:

 $subject = "Website Contact Form Enquiry";

//If the form is submitted
if(isset($_POST['submit'])) {

    //Check to make sure that the name field is not empty
    if(trim($_POST['contactname']) == '') {
        $hasError = true;
    } else {
        $name = trim($_POST['contactname']);
    }

    //Check to make sure sure that a valid email address is submitted
    if(trim($_POST['email']) == '')  {
        $hasError = true;
    } else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
        $hasError = true;
    } else {
        $email = trim($_POST['email']);
    }

    //Check to make sure comments were entered
    if(trim($_POST['message']) == '') {
        $hasError = true;
    } else {
        if(function_exists('stripslashes')) {
            $comments = stripslashes(trim($_POST['message']));
        } else {
            $comments = trim($_POST['message']);
        }
    }

    if(isset($_POST['tour']) &&
       $_POST['tour'] == 'yes')
    {
        $tour = true;
    }
    else
    {
        $tour = false;
    } 

    //If there is no error, send the email
    if(!isset($hasError)) {
        $emailTo = 'info@bgv.co.za'; //Put your own email address here
        $body = "Name: $name \n\nEmail: $email \n\nComments:\n $comments";
        $headers = 'From: My Site <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;

        mail($emailTo, $subject, $body, $headers);
        $emailSent = true;

    }
}

Вот эхо

        <?php if(isset($emailSent) && $emailSent == true) { //If email is sent ?>
        <div id="sadhu">
        <p class="general_site">Name:</p><p class="general_siter"><strong><?php echo $name;?></strong></p>
        <p class="general_site">Email:</p><p class="general_siter"><strong><?php echo $email;?></strong></p>
        <p class="general_site">Message:</p><p class="general_siter"><strong><?php echo $comments;?></strong></p>
        <p class="general_site">Tour:</p><p class="general_siter"><strong><?php echo $tour;?></strong></p>
        </div>
        <?php } ?>

Ответы [ 5 ]

0 голосов
/ 27 июля 2011

Флажки логические. У них либо есть ценность, либо нет. Какое значение они имеют на самом деле не имеет значения. Все, что вам нужно сделать, это проверить наличие или отсутствие значения и действовать соответственно.

$tour = isset($_POST['tour'])? 'Yes': 'No';
0 голосов
/ 27 июля 2011

Одна вещь, о которой пока не упоминалось, это то, что если флажок не установлен, вы не получите никакого значения!И фактическое значение, которое вы только что установили в HTML как:

0 голосов
/ 27 июля 2011

Я думаю, что вы могли бы сделать (но я предполагаю, потому что не ясно, какой элемент является флажком):

if(isset($_POST['tour']) &&
   $_POST['tour'] == 'yes')
{
    $tour = 'Yes';
}
else
{
    $tour = 'No';
} 

В вашем случае вы повторяете 1, потому что вы повторяете истину, которая преобразуется в 1, или ложь, которая преобразуется в 0

0 голосов
/ 27 июля 2011

В вашей форме флажок должен иметь значение

<input type="checkbox" name="tour" value="yes"/>

Так что в PHP вы должны сделать

if(isset($_POST['tour']) &&
   $_POST['tour'] == 'yes')
{
    $tour = "yes";
}
else
{
    $tour = "no";
} 
0 голосов
/ 27 июля 2011

Вы не контролируете, какое значение клиент возвращает вам.Если они возвращают 0 или 1 вместо Да или Нет, вы можете перевести это с помощью:

echo ($name == 1) ? "Yes" : "No

Это троичный оператор;он позволяет вам возвращать другое значение в зависимости от того, выполняется ли условие ($ name == 0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...