【问题标题】:2 condition for the radio button option2 单选按钮选项的条件
【发布时间】:2018-10-03 06:44:57
【问题描述】:

我对 php 语言很陌生。目前我正在制作一个表单并让用户单击提交,输出将发送到我的电子邮件(使用 phpmailer)。

现在一切正常,但我只想做一个小调整,如果用户对单选按钮回答“是”,那么用户需要检查至少 1 个复选框才能处理表单,而 如果用户对单选按钮回答“否”,则如果他们不选中复选框,则不会显示错误。需要一些关于如何调整代码以使其成为那样的想法。

HTML 表单

<div class="form-group">
        <p>Have you worn contact Lens before?</p>
        <input type="radio" name="lenses"  value="Yes"/> Yes<br>
        <input type="radio" name="lenses"  value="No"/> No<br>
</div>
<div class="form-group">
        <p>If yes, which type of disposable contact lens have you worn before?</p>
        <input type="checkbox" name="disposable_lens[]"  value="Monthly"/> Monthly<br>
        <input type="checkbox" name="disposable_lens[]"  value="Daily Disposables"/> Daily Disposables<br>
</div>

PHP

if(isset($_POST["submit"]))
{
if(empty($_POST["lenses"]))
{
    $error .= '<p><label class="text-danger">Lenses is required</label></p>';
}
else
{
    $lenses = clean_text($_POST["lenses"]);
}
if(empty($_POST["disposable_lens"]))
{
    $error .= '<p><label class="text-danger">Disposable_lens is required</label></p>';
}
else
{
    $disposable_lens = array_map('clean_text', $_POST["disposable_lens"]);

这是 phpmailer 的正文消息,以防你们想看

$mail->Body = join('', array(
        "Outlet: ",
        $_POST['outlet'],
        "<br/>",
        "Full Name: ",
        $_POST['fullname'],
        "<br/>",
        "Email Address: ",
        $_POST['email'],
        "<br/>",
        "Phone Number:",
        $_POST['contact_no'],
        "<br/>",
        "Have you worn contact lens before?: ",
        $_POST['lenses'],
        "<br/>",
        "If yes, which type of disposable contact lens have you worn before?: ",
        join(', ', $_POST['disposable_lens']),
        "<br/>",
        "Appointment Date ",
        $_POST['date'],
        "<br/>",
        "Appointment Time ",
        $_POST['time']
        ));                                     

【问题讨论】:

  • 您可以制作一个 Javascript 脚本,如果选中“否”,它将在您的复选框上添加 disabled 属性。
  • 不确定join 是否是在 PHP 中设置电子邮件正文的最快方法...

标签: php html checkbox radio-button


【解决方案1】:

您可以在 php 中执行类似的操作...您可以在 cmets 中添加一些 javascript,如 @Rameleu 所建议的。这将改善用户体验。

if(isset($_POST["submit"])) {
    // Check if lenses is yes or no (not emty)
    if(empty($_POST["lenses"])) {
        $error .= '<p><label class="text-danger">Lenses is required</label></p>';
    }
    else {
        // When lenses is yes and no disposable lens is checked
        if($_POST["lenses"] == "yes" && count($_POST["disposable_lens"]) == 0) {
            $error .= '<p><label class="text-danger">Disposable_lens is required</label></p>';
        }
        // When lenses is yes and one (or more) disposable lens is checked
        elseif($_POST["lenses"] == "yes" && count($_POST["disposable_lens"]) > 0) {
            $lenses = clean_text($_POST["lenses"]);
            $disposable_lens = array_map('clean_text', $_POST["disposable_lens"]);
        }
        // When lenses is no
        elseif($_POST["lenses"] == "no") {
            $lenses = clean_text($_POST["lenses"]);

            // Can they still use the checkboxes? Then you'ld need this
            if(count($_POST["disposable_lens"]) > 0) {
                $disposable_lens = array_map('clean_text', $_POST["disposable_lens"]);
            }
        }
    }
}

【讨论】:

  • 非常感谢它有效。但是关于 phpmailer 设置有新问题。如果我选择“否”而不选中任何复选框,则会出现两个错误,但我的邮件仍在发送。错误是:- 注意:第 140 行未定义索引:disposable_lens 警告:join():第 140 行传入的参数无效我可以隐藏此错误,因为邮件工作正常吗?
  • 如果有任何错误,不应发送电子邮件。因此,将电子邮件函数包装在 if 语句中,并防止它首先被发送:)
【解决方案2】:

function show() {	
    var x = document.getElementById("myDIV");    
        x.style.display = "block";   
}

function hide(){
 var x = document.getElementById("myDIV");    
        x.style.display = "none";   
}
#myDIV { display:none; }
<form action="" method="POST">
<div class="form-group">
        <p>Have you worn contact Lens before?</p>
        <input onclick="show()" type="radio" name="lenses"  value="Yes"/> Yes<br>
        <input onclick="hide()"type="radio" name="lenses"  value="No"/> No<br>
</div>
<div class="form-group" id="myDIV">
        <p>If yes, which type of disposable contact lens have you worn before?</p>
        <input  type="checkbox" name="disposable_lens[]"  value="Monthly"/> Monthly<br>
        <input  type="checkbox" name="disposable_lens[]"  value="Daily Disposables"/> Daily Disposables<br>
</div>
<?php echo $error; ?>
<input type="submit" name="submit" value="submit">
</form>
    if(isset($_POST["submit"])) {
if(empty($_POST["lenses"])) {
    $error .= '<p><label class="text-danger">Lenses is required</label></p>';
}

else {
    if($_POST["lenses"] == "Yes" && empty($_POST["disposable_lens"])) {
        $error .= '<p><label class="text-danger">Disposable_lens is required</label></p>';
    }
    else{
        $disposable_lens[] =  $_POST["disposable_lens"];
    }   
}

if(!empty($_POST["disposable_lens"])) {
    $disposablelens = implode(",",$disposable_lens[0]);
}
    if(empty($error)) {
        echo "Have you worn contact Lens before? ".$_POST["lenses"]."<br>";
        echo "If yes, which type of disposable contact lens have you worn before? ".$disposablelens;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 2013-08-24
    • 2016-09-29
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多