【问题标题】:If...elseif not working for more than 2 conditions?If...elseif 不能在超过 2 个条件下工作?
【发布时间】:2015-07-19 15:41:35
【问题描述】:

我在 html 中创建了一个带有多个按钮的表单,这些按钮的名称不同(sub1,2,3..so on),但对所有按钮都设置了相同的值(value="Update")。我遇到了一个问题,当单击任何按钮时,它可以控制我的所有输入框,因此我搜索了解决此问题的方法,并遇到了 if..elseif 语句的 php 脚本,但是当我尝试运行它时,只有前两个 if 和 elseif 条件被编译,其余条件被忽略。 下面是我的php代码,所以请大家帮我解决这个问题。我相信我的问题也会对其他人有所帮助:)

<?php 
if($_POST['header']){
    if(isset($_POST['header']) && trim($_POST['header']) != ""){
$fp = fopen("assets/config_header.php", 'w');
fwrite($fp, '<?php');
fwrite($fp, ' ');
fwrite($fp, '$header = "'.trim($_POST['header']).'";');
fwrite($fp, ' ');
fwrite($fp, '?>');
fclose($fp); 
}
}
elseif($_POST['color']) {
    if(isset($_POST['color']) && trim($_POST['color']) != ""){
$fp = fopen("assets/config_header5.php", 'w');
fwrite($fp, '<?php');
fwrite($fp, ' ');
fwrite($fp, '$color= "'.trim($_POST['color']).'";');
fwrite($fp, ' ');
fwrite($fp, '?>');
fclose($fp);

}
}
elseif($_POST['headline']) {
if(isset($_POST['headline']) && trim($_POST['headline']) != ""){
$fp = fopen("assets/config_header1.php", 'w');
fwrite($fp, '<?php');
fwrite($fp, ' ');
fwrite($fp, '$headline = "'.trim($_POST['headline']).'";');
fwrite($fp, ' ');
fwrite($fp, '?>');
fclose($fp); 
}
}
elseif($_POST['color1']) {
if(isset($_POST['color1']) && trim($_POST['color1']) != ""){
$fp = fopen("assets/config_header6.php", 'w');
fwrite($fp, '<?php');
fwrite($fp, ' ');
fwrite($fp, '$color1= "'.trim($_POST['color1']).'";');
fwrite($fp, ' ');
fwrite($fp, '?>');
fclose($fp);
}
}
elseif($_POST['subhead']) {
if(isset($_POST['subhead']) && trim($_POST['subhead']) != ""){
$fp = fopen("assets/config_header2.php", 'w');
fwrite($fp, '<?php');
fwrite($fp, ' ');
fwrite($fp, '$subhead = "'.trim($_POST['subhead']).'";');
fwrite($fp, ' ');
fwrite($fp, '?>');
fclose($fp); 
}
}
elseif($_POST['color2']) {
if(isset($_POST['color2']) && trim($_POST['color2']) != ""){
$fp = fopen("assets/config_header7.php", 'w');
fwrite($fp, '<?php');
fwrite($fp, ' ');
fwrite($fp, '$color2= "'.trim($_POST['color2']).'";');
fwrite($fp, ' ');
fwrite($fp, '?>');
fclose($fp);

}
}
elseif($_POST['prodname']) {
if(isset($_POST['prodname']) && trim($_POST['prodname']) != ""){
$fp = fopen("assets/config_header3.php", 'w');
fwrite($fp, '<?php');
fwrite($fp, ' ');
fwrite($fp, '$prodname= "'.trim($_POST['prodname']).'";');
fwrite($fp, ' ');
fwrite($fp, '?>');
fclose($fp);

}
}
elseif($_POST['vidid']) {
if(isset($_POST['vidid']) && trim($_POST['vidid']) != ""){
$fp = fopen("assets/config_header4.php", 'w');
fwrite($fp, '<?php');
fwrite($fp, ' ');
fwrite($fp, '$vidid= "'.trim($_POST['vidid']).'";');
fwrite($fp, ' ');
fwrite($fp, '?>');
fclose($fp);

}

}

?>

在此先感谢 :) 是的,如果有任何更短的方法来执行此任务,请告诉我 :)

【问题讨论】:

  • 之前关闭if时不需要else if
  • 是否要检查第二个 if 条件内的条件??
  • @Drudge 不,我不希望它被嵌套,而是在 else if 阶梯中
  • @JoshStevens 先生,您能否详细说明一下,或者您能否编写至少最多 4 个条件的正确代码?由于我是 php 语言的新手,我在此之前曾在 c++ 和 java 中工作过,所以这真的对我有很大的帮助。
  • 如果所有 post 变量都驻留在一个 html 表单中,您不必检查 isset,因为它总是在提交表单时设置。它将为空或带有值。

标签: php html forms if-statement


【解决方案1】:

你的代码是这样的

<?php 
if($_POST['header']){
    if(isset($_POST['header']) && trim($_POST['header']) != "")
    {
        //some code
    }
}

:
:
:
:
elseif($_POST['vidid']) 
{
    if(isset($_POST['vidid']) && trim($_POST['vidid']) != "")
    {
        //some code
    }
}

?> 

但是if elseif一定是这样的

if{
}
elseif{
}
else{
}

但您的代码不包含您在 if 或 else if 中添加的 else。您首先在上部检查 post 方法中的标题 如果然后使用 isset 。如果您使用 isset 则不需要单独检查 null isset 将为您检查。您可以直接检查空字符串为什么使用修剪。

所以你的代码应该是这样的

<?php 
if((isset($_POST['header']) && $_POST['header']!= "")
    {
        //some code
    }

:
:
:
:
if(isset($_POST['vidid']) && $_POST['vidid'] != "")
    {
        //some code
    }

?> 

如果仍然不起作用,则意味着 $_post 中的参数名称与实际不匹配,或者它们确实为空。

【讨论】:

    【解决方案2】:

    试试这个。

    <?php
    $options = array(
        "header" => "assets/config_header.php", 
        "color" => "assets/config_header5.php", 
        "headline" => "assets/config_header1.php", 
        "color1" => "assets/config_header6.php", 
        "subhead" => "assets/config_header2.php", 
        "color2" => "assets/config_header7.php", 
        "prodname" => "assets/config_header3.php", 
        "vivid" => "assets/config_header3.php"
    );
    
    foreach ($options as $key => $file) {
        if($_POST[$key]) {
            if(isset($_POST[$key]) && trim($_POST[$key]) != ""){
                $fp = fopen($file, 'w');
                fwrite($fp, '<?php');
                fwrite($fp, ' ');
                fwrite($fp, '$' . $key . ' = "'.trim($_POST[$key]).'";');
                fwrite($fp, ' ');
                fwrite($fp, '?>');
                fclose($fp);
                break;
            }
        }
    }
    

    【讨论】:

    • 这是更好的方法 - 如果你不使用关闭 php 标记。
    猜你喜欢
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2021-07-11
    • 2020-01-09
    • 2017-08-19
    • 2022-10-14
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多