如果表字段不为空,则设置表单字段

时间:2010-07-05 20:03:48

标签: php

我有以下代码:

$theinput = new inputSmartSearch($db,
    "chooseproduct", "Choose Product", $therecord["product"],
    "Choose Product", TRUE, NULL, NULL, TRUE, $required=true);
$theinput->setAttribute("class","important");
if(isset($therecord["product"]) || isset($therecord["cost"])) {
    $theinput->setAttribute("value",
        $therecord["product"] . ", " . $therecord["cost"]);
}

inputSmartSearch是我正在使用的CMS系统的一种表单字段。

我希望在默认情况下设置表单的值,只要它不为空,以避免使用“,”作为默认值。

var_dump($therecord["product"]); 

显示字符串(0)“”,因此它肯定是空的。

为什么“,”仍然被设置为我的表单字段的默认值?

2 个答案:

答案 0 :(得分:1)

isset()检查变量是否已设置且不是NULL,您需要检查它是否为空。使用!empty()替换isset(),如下所示:

if (
    !empty($therecord["product"])||
    !empty($therecord["cost"])
) {
    $parts = array();
    if (!empty($therecord["product"])) {
        $parts[] = $therecord["product"];
    }
    if (!empty($therecord["cost"])) {
        $parts[] = $therecord["cost"];
    }
    $theinput->setAttribute("value", implode(', ', $parts));
}

编辑:现在只在需要时放入逗号

答案 1 :(得分:0)

你想:

$myValue = ($therecord["product"]) ? $therecord["product"] . ", " . $therecord["cost"] : '';
$theinput->setAttribute("value",$myValue );

这将检查$ therecord [“product”]是否为空,如果是,则make $ myValue ='';

你的总是打印“,”;因为没有什么可以告诉你的。

您可能还需要以下其中一项:

if(isset($therecord["product"]) || isset($therecord["cost"])) {
    $myValue = '';
    if(!(empty($therecord["product"])) $myValue .= $therecord["product"].', ';
    if(!(empty($therecord["cost"])) $myValue .= $therecord["sot"];
    else $myValue = substr($myValue, 0, -2);
    $theinput->setAttribute("value", $myValue);
}

<强>更新

你有:

if(isset($therecord["product"]) || isset($therecord["cost"])) {
    $theinput->setAttribute("value",
        $therecord["product"] . ", " . $therecord["cost"]);
}

这告诉我,如果变量$ therecord [“product”]或$ therecord [“cost”] exsits(即使为空)然后将值设置为$ therecord [“product”],$ therecord [“成本“]因此它可能最终得到以下任何输出:

1) myprod, mycost
2) myprod,
3) , mycost
4) ,