HTML选项列表信息不在PHP echo中显示

时间:2017-10-02 00:41:22

标签: php html

我已经获得了一组代码,我试图在php代码中移动以利用' php'逻辑特征。我已经完成了其中的大部分工作但是我在选项列表中苦苦挣扎。我已经浏览了论坛,但似乎无法找到与此相近的内容。

以下是我的原始选项列表:

<div class="plan">
    <label for="g2c3m">Month</label>
        <select id="g2c3m" name="g2c3m">
        <option value=""></option>
        <option <?php echo ($row["g2c3m"] === "1")?"selected" : ""; ?> >1</option>
        <option <?php echo ($row["g2c3m"] === "2")?"selected" : ""; ?> >2</option>
        <option <?php echo ($row["g2c3m"] === "3")?"selected" : ""; ?> >3</option>
        <option <?php echo ($row["g2c3m"] === "4")?"selected" : ""; ?> >4</option>
        <option <?php echo ($row["g2c3m"] === "5")?"selected" : ""; ?> >5</option>
        <option <?php echo ($row["g2c3m"] === "6")?"selected" : ""; ?> >6</option>
        <option <?php echo ($row["g2c3m"] === "7")?"selected" : ""; ?> >7</option>
        <option <?php echo ($row["g2c3m"] === "8")?"selected" : ""; ?> >8</option>
        <option <?php echo ($row["g2c3m"] === "9")?"selected" : ""; ?> >9</option>
        <option <?php echo ($row["g2c3m"] === "10")?"selected" : ""; ?> >10</option>
        <option <?php echo ($row["g2c3m"] === "11")?"selected" : ""; ?> >11</option>
        <option <?php echo ($row["g2c3m"] === "12")?"selected" : ""; ?> >12</option> 
    </select>
</div>

我尝试将这个基于html的代码转换为基于php的代码。以下是我提出的建议:

echo "<div class=\"plan\">";
    echo "<label for=\"g2c3m\">Month</label>";
        echo "<select id=\"g2c3m\" name=\"g2c3m\">";
        echo "<option value=\"\"></option>";
        echo "<option ".$row['g2c3m']." === \"1\")?\"selected\" : \"\"; >1</option>";
        echo "<option ".$row['g2c3m']." === \"2\")?\"selected\" : \"\"; >2</option>";
        echo "<option ".$row['g2c3m']." === \"3\")?\"selected\" : \"\"; >3</option>";
        echo "<option ".$row['g2c3m']." === \"4\")?\"selected\" : \"\"; >4</option>";
        echo "<option ".$row['g2c3m']." === \"5\")?\"selected\" : \"\"; >5</option>";
        echo "<option ".$row['g2c3m']." === \"6\")?\"selected\" : \"\"; >6</option>";
        echo "<option ".$row['g2c3m']." === \"7\")?\"selected\" : \"\"; >7</option>";
        echo "<option ".$row['g2c3m']." === \"8\")?\"selected\" : \"\"; >8</option>";
        echo "<option ".$row['g2c3m']." === \"9\")?\"selected\" : \"\"; >9</option>";
        echo "<option ".$row['g2c3m']." === \"10\")?\"selected\" : \"\"; >10</option>";
        echo "<option ".$row['g2c3m']." === \"11\")?\"selected\" : \"\"; >11</option>";
        echo "<option ".$row['g2c3m']." === \"12\")?\"selected\" : \"\"; >12</option>";
        echo "</select>";
echo "</div>";

选项列表显示正确,但是当我将信息提交给服务器时,它不能正常回显。

我相信我遵循了有关引号的正确\规则,但它无效。

我错过了什么?我会永远感激任何帮助。

2 个答案:

答案 0 :(得分:2)

这不是您问题的答案,但无论如何都会对您有所帮助。

在编写模板代码时,很多时候打开和关闭PHP代码是完全可以接受的。 PHP可以根据需要关闭和打开(只要它不在表达式的中间)。所以你可以运行一个if语句,关闭php,打印出HTML,然后像这样重新打开PHP:

<?php if (condition): ?>
    <p>Hello World</p>
<?php else: ?>
    <p>Goodbye World</p>
<?php endif; ?>

或for循环:

<?php foreach($results as $row): ?>
    <tr>
        <td><?php echo $row['name'] ?></td>
    </tr>
<?php endforeach; ?>

这使用了alternative syntax(if / endif,foreach / endforeach),它非常适合模板化。

答案 1 :(得分:1)

让我们比较两种风格中的一行:

<option <?php echo ($row["g2c3m"] === "1")?"selected" : ""; ?> >1</option>
echo "<option ".$row['g2c3m']." === \"1\")?\"selected\" : \"\"; >1</option>";

第一个有一个三元运算符(如果$row["g2c3m"] === "1"则输出选择其他任何东西。

在第二个版本中,您没有该运算符。而是输出php代码。

正确

echo "<option ". (($row['g2c3m'] === "1")? "selected" : "" ) . " >1</option>";

这样仍然可以评估三元运算符,而不是简单地输出为字符串。

注意:我并非100%确定三元运算符可以像在线一样使用。您可能需要多行。 bei concatenation,使用变量或多个回声。