【问题标题】:Correct use of an If statement in echo?在 echo 中正确使用 If 语句?
【发布时间】:2012-11-29 22:25:42
【问题描述】:

我有一个名为$position 的变量,它有一个从数据库中选择的值。 我在下拉菜单中将$position 值显示为页面加载时的选定值时遇到问题。 $position 变量确实会在此代码之外回显正确的值。

我阅读了三元运算符方法,所以我在这里使用它而不是普通的 IF 语句,但它仍然不起作用。我的代码正确吗?我应该使用其他方法吗?

谢谢

我的代码

$number = $_GET['id'];
$number = mysqli_real_escape_string($connect,$number);

$stmt = $connect->prepare("SELECT s_code, s_type, s_position, s_idno, s_firstnames, s_email, s_cellno FROM smco WHERE s_ainumber = ?") or die(mysqli_error());

$stmt->bind_param('s', $number);

$stmt->execute();

$stmt->bind_result($code, $type, $position, $idno, $name, $email, $cell);

$stmt->fetch();

$stmt->close();

echo "<td width=\"62%\" align=\"left\">
<p><b>Position:</b></p>
<select name=\"position\">
<option value=\"AQ\" (($position == 'AQ') ? \"selected='selected'\")>Account Queries</option>
<option value=\"KM\" (($position == 'KM') ? \"selected='selected'\")>Key Account Manager</option>
<option value=\"MD\" (($position == 'MD') ? \"selected='selected'\")>Managing Director</option>
<option value=\"RB\" (($position == 'RB') ? \"selected='selected'\")>Rebates</option>
<option value=\"BY\" (($position == 'BY') ? \"selected='selected'\")>Store Buyer</option>
<option value=\"OW\" (($position == 'OW') ? \"selected='selected'\")>Store Owner</option>
</select>
</td>";

【问题讨论】:

  • @swapnesh - 我没有在这里显示它,因为它在其他地方正确显示,但我在上面添加了它

标签: php html mysql


【解决方案1】:
echo '<option value="">' . (true ? 'true' : 'false') . '</option>';

在你的情况下:

echo "<option value=\"AQ\"" . (($position == 'AQ') ? ' selected="selected"' : '') . ">Account Queries</option>";

【讨论】:

    【解决方案2】:

    你必须像这样连接字符串:

    echo "foo is " . ($foo == true ? "true" : "false") . " whatever echo";
    

    【讨论】:

      【解决方案3】:

      我不确定你的问题是否正确,但你可以简化一下。

      只要写一个这样的函数:

      function is_postion($value, $position){
      
          if($value == $position) echo 'selected="selected"';
      
          return;
      
      
      }
      

      然后简单地将它放在 HTML 中,而不是使用 echo 来处理整个事情。所以:

      <option value="AQ" <?php is_position('AQ', $position); ?> >Account Queries</option>
      

      【讨论】:

        【解决方案4】:
        <td width='62%' align='left'>
            <p><b>Position:</b></p>
        
            <select name='position'>
                <option value='AQ' <?php echo $position == 'AQ' ? 'selected' : '' ?>>Account Queries</option>
                <option value='KM' <?php echo $position == 'KM' ? 'selected' : '' ?>>Key Account Manager</option>
                <option value='MD' <?php echo $position == 'MD' ? 'selected' : '' ?>>Managing Director</option>
                <option value='RB' <?php echo $position == 'RB' ? 'selected' : '' ?>>Rebates</option>
                <option value='BY' <?php echo $position == 'BY' ? 'selected' : '' ?>>Store Buyer</option>
                <option value='OW' <?php echo $position == 'OW' ? 'selected' : '' ?>>Store Owner</option>
            </select>
        </td>
        

        【讨论】:

          【解决方案5】:

          首先,您不需要将所有 HTML 包装到 echo 中。仅将 PHP 用于动态部分就足够了。 其次,您将 PHP 代码放在字符串中。所以,它没有奏效。 第三,使用 (expr) 时? :(三元运算符)你错过了错误的分支。

          试试这个。

             <td width="62%" align="left">
                  <p><b>Position:</b></p>
                  <select name="position">
                  <option value="AQ"<?=$position == 'AQ' ? "selected='selected'" : ""?>>Account Queries</option>
                  <option value="KM"<?=$position == 'KM' ? "selected='selected'" : ""?>>Key Account Manager</option>
                  <option value="MD"<?=$position == 'MD' ? "selected='selected'" : ""?>>Managing Director</option>
                  <option value="RB"<?=$position == 'RB' ? "selected='selected'" : ""?>>Rebates</option>
                  <option value="BY"<?=$position == 'BY' ? "selected='selected'" : ""?>>Store Buyer</option>
                  <option value="OW"<?=$position == 'OW' ? "selected='selected'" : ""?>>Store Owner</option>
                  </select>
          </td>
          

          【讨论】:

          • 我将 HTML 包装在 echo 中,因为代码是 if 语句的一部分,对此我没有表示抱歉。
          • 由你决定。我更喜欢把 PHP 移出来,因为代码更具可读性,而且 PHP 不需要在大字符串处理上浪费资源。
          【解决方案6】:

          这对你有用:

              echo "<td width=\"62%\" align=\"left\">
          <p><b>Position:</b></p>
          <select name=\"position\">
          <option value=\"AQ\"  ".(($position == "AQ") ? "Selected=selected" : "")." >Account Queries</option>
          <option value=\"KM\" ".(($position == "KM") ? "Selected='selected'" : "")." >Key Account Manager</option>
          <option value=\"MD\" ".(($position == "MD") ? "Selected='selected'" : "")." >Managing Director</option>
          <option value=\"RB\" ".(($position == "RB") ? "Selected='selected'" : "")." >Rebates</option>
          <option value=\"BY\" ".(($position == "BY") ? "Selected='selected'" : "")." >Store Buyer</option>
          <option value=\"OW\" ".(($position == "OW") ? "Selected='selected'" : "").">Store Owner</option>
          </select>
          </td>";
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-12-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多