难以在变量内连接条件和$ _POST变量

时间:2014-05-05 07:26:38

标签: php

我想添加这行代码

<?php echo(isset($_POST['AgentID'])&&($_POST['AgentID']=='')?' selected="selected"':'');?>

$agentData.='<option value="'.$row['AgentID'].'">'.$row['AgentID'].' - '.$row['AgentName'].'</option>';
因为&#34;我有困难。 &#34;和&#39; &#39;由于$ _POST变量有&#39; &#39;还

整个代码是:

<select name="AgentID" id="agentIDSentakushi">
      <option value="" <?php echo(isset($_POST['AgentID'])&&($_POST['AgentID']=='')?' selected="selected"':'');?>>--</option>
      <?php
                   $setsu = dbSetsuzoku();
                   $sql = 'SELECT AgentID,AgentName FROM agentdb ORDER BY AgentID';
                   $agentData='';
                   $result = $setsu->query($sql);
                    while ($row = $result->fetch(PDO::FETCH_ASSOC))
                     {
                        $agentData.='<option value="'.$row['AgentID'].'">'.$row['AgentID'].' - '.$row['AgentName'].'</option>';
                     }
                    echo $agentData;
                    $setsu = null;
                  ?>
    </select>

2 个答案:

答案 0 :(得分:0)

为了简化它,请执行:

while ($row = $result->fetch(PDO::FETCH_ASSOC))
{
  $selected = (isset($_POST['AgentID']) && $_POST['AgentID']==$row['AgentID'])?'selected="selected"':'';
  $agentData.='<option value="'.$row['AgentID'].'"'.$selected.'>'.$row['AgentID'].' - '.$row['AgentName'].'</option>';
}

$selected这是一个变量,用于检查$_POST['AgentID'] 设置是否等于$_POST['AgentID'],如果条件如果是,那么将选择该选项。

答案 1 :(得分:0)

我正在使用这样的vsprintf

$setsu = dbSetsuzoku();
$sql = "
    SELECT
        AgentID,
        AgentID AS AgentID_2, -- notice how I duplicated it here
        AgentName
    FROM agentdb
    ORDER BY AgentID
";
$agentData = '';
$result = $setsu->query($sql);
while ($row = $result->fetch(PDO::FETCH_ASSOC))
{
    $selected = (isset($_POST['AgentID']) && $_POST['AgentID'] == $row['AgentID']) ? ' selected' : '';
    $agentData .= vsprintf("<option value='%d'$selected>%d - %s</option>", $row);
}
echo $agentData;
$setsu = null;

这里的技巧是选择参数,然后在SQL查询中以相同的顺序(和数量)打印,因为您将返回的数组直接传递给vsprintf并从SQL查询返回的数组需要与vsprintf占位符的顺序相同。为您节省大量令人困惑的文字:)