代码之家  ›  专栏  ›  技术社区  ›  Vecta

php if语句

  •  0
  • Vecta  · 技术社区  · 14 年前

    如果这是一个非常简单的问题,我很抱歉,但我仍然在学习PHP的诀窍。

    我正在用PHP编写一个邮件脚本,它获取表单的内容并将其发送到两封电子邮件中的一封。我把它做得很好,但我为之创作的人经过一些修改后又回来了,现在我正在挣扎。

    基本上,有两组单选按钮,如果选中“是”,则还需要填写另一个“附加信息”字段。如果勾选“否”,则其他字段可以保持空白。

    这就是我目前为止所拥有的:

    if ($var1 == "String" AND $var2 =="")
    {
        echo("Fill in the blah field");
    }
    elseif ($var3 == "Yes" AND $var4 == "") 
    {
        echo ("Fill in the blah blah field");
    }
    elseif ($var1 !="" AND $var2 !="" AND $var7 !="")
    {
        mail(....)
        echo(....)
    }
    

    我知道必须有更好的方法首先检查一个集合是否有效,然后检查另一个集合是否有效,然后检查是否填写了所有必需的字段…目前当我提交表单时,我得到的只是一个空白屏幕。

    谢谢你的帮助!

    2 回复  |  直到 14 年前
        1
  •  1
  •   mqsoh    14 年前

    您的描述和代码似乎与我无关,但我被名为“var”和“blah”字段的变量搞糊涂了。但是,根据你的描述,也许这会对你有所帮助。

    $set_2_required = !empty($_GET['radio_set_1'] && $_GET['radio_set_1'] == 'yes';
    
    if ($set_2_required && empty($_GET['radio_set_2'])){
        echo 'ERROR: You must fill out radio set 2.';
    } else {
        // Send your mail.
    }
    

    编辑:我认为我之前的评论包含了你所需要的所有逻辑部分,但也许这会更接近你实际写的东西。

    // With these ternary operators, you logic further down can rely on a NULL
    // value for anything that's not set or an empty string.
    $dropdown_1 = !empty($_GET['dropdown_1']) ? $_GET['dropdown_1'] : NULL;
    $dropdown_2 = !empty($_GET['dropdown_2']) ? $_GET['dropdown_2'] : NULL;
    $field_1 = !empty($_GET['field_1']) ? $_GET['field_1'] : NULL;
    $field_2 = !empty($_GET['field_2']) ? $_GET['field_2'] : NULL;
    
    // This 'valid' variable lets you avoid nesting and also return multiple errors
    // in the request.
    $valid = TRUE;
    if (!$field_1 && $dropdown_1 == '<string makes field required>'){
        echo 'ERROR: Field 1 is required for this dropdown selection.';
        $valid = FALSE;
    }
    if (!$field_2 && $dropdown_2 == '<string makes field required>'){
        echo 'ERROR: Field 2 is required for this dropdown selection.';
        $valid = FALSE;
    }
    
    // A final check if the logic gets complicated or the form on the front end
    // wants to check one thing to determine pass/fail.
    if (!$valid){
        echo 'ERROR: One or the other fields is required.';
    } else {
        // Everything's fine, send the mail.
    }
    
        2
  •  1
  •   froadie    14 年前

    我不确定这是否是你的代码中的一个错误,或者只是在复制和粘贴这篇文章时的一个错误,但是试着关闭你的引号。

    echo("Fill in the blah field");
    echo ("Fill in the blah blah field");