PHP:$ _POST [“startId $ i”])!=“”

时间:2011-04-09 00:05:07

标签: php forms

我正在尝试处理动态创建的表单,因此长度不一。 while循环似乎工作正常。但是,“if”声明不是;它应该只打印startId $ i和corId $ i 当且仅当填写了表单的特定文本字段时。代码为表单上的每个文本字段打印一行,无论是否是空的还是没有。

$i = 0;
while(!is_null($_POST["startId$i"])){                                                       
    if(($_POST["startId$i"]) != ""){
        echo "startId: " . $_POST["startId$i"] . " ---<br>";
        echo "corId: " . $_POST["corId$i"] . " ---<br>";

    }
    $i++;
}

3 个答案:

答案 0 :(得分:3)

$i = 0;
while(isset($_POST["startId$i"])){                                                       
    if( !empty($_POST["startId$i"]) ){
        echo "startId: " . $_POST["startId$i"] . " ---<br>";
        echo "corId: " . $_POST["corId$i"] . " ---<br>";

    }
    $i++;
}

您可以使用字段名称进行管理吗?

如果是,更好的方法是使用name="startId[0]"name="corId[0]"命名输入,依此类推......

然后在PHP中你只需:

$startIds = $_POST['startId'];
$corIds   = $_POST['corId'];

foreach ( $startIds as $k => $startId ) {
    if ( !empty($startId) ) {
        $corId = $corIds[$k];
        echo "startId: " . $startId . " ---<br>";
        echo "corId: " . $corId . " ---<br>";
    }
}

答案 1 :(得分:1)

在这种情况下你应该使用empty()

if(!empty($_POST["startId$i"])) {
   ...
}

答案 2 :(得分:0)

我建议检查$ _POST的真实内容。您可以通过var_dump($_POST);

执行此操作

例如,您可能会发现空字段包含空格。在这种情况下,trim()功能可能有所帮助。

例如:

while(isset($_POST["startId$i"])){                                                       
    if(trim($_POST["startId$i"])){
        echo "startId: " . $_POST["startId$i"] . " ---<br>";
        echo "corId: " . $_POST["corId$i"] . " ---<br>";
    }
    $i++;
}