0
<?php
$sample = 0;
    if($sample ==0)
    {   
        $displayinner = '<option value =' . $row['privilege_ID'] . '>' . $row['privilege_name'] . '</option>';
        $displayouter = '<td><label>Privileges:</label></td>
          <td><select name = "Privilege" id = "Privilege" multiple="multiple">
              <?php
                $PrivilegeNames = mysql_query("SELECT * FROM privilege");
                while($row = mysql_fetch_array($PrivilegeNames))
                    echo $displayinner;
              ?>
            </select></td>
          </tr>
          <tr>';
        echo $displayouter;
    }
?>

内部にデータがないドロップダウンボックスのみを取得します。助けてください、私は何が間違っていますか?

4

4 に答える 4

1

ええ、うまくいきません - 多くの問題があり、「テンプレート」コードが解析されてエラーが発生し、<?phpそのようなブロックをネストすることはできません。必要なものを取得するには、まずこれを試してください。

$displayouter = '<td><label>Privileges:</label></td><td><select name = "Privilege" id = "Privilege" multiple="multiple">';

$PrivilegeNames = mysql_query("SELECT * FROM privilege");
while($row = mysql_fetch_array($PrivilegeNames)) {
    $displayouter .= '<option value =' . $row['privilege_ID'] . '>' . $row['privilege_name'] . '</option>';
}

$displayouter .= '</select></td></tr><tr>';

echo $displayouter;

$displayouter後で変数が必要ない場合は、echo代わりにすべてを使用するか、これがテンプレート コードの場合は PHP ブロックから完全に抜け出すことができます。.=既存の変数にデータを追加するの使用に注意してください。

ここにはセキュリティ ホールの可能性がたくさんありますが、機能するコードを確認するのに役立つことを願っています。htmlspecialchars 1 つには、すべての未知の HTML 出力で必ず使用してください。

于 2012-08-30T23:34:18.593 に答える
0
<?php
$sample = 0;
if($sample == 0)
{   
    $displayPre     = '<td><label>Privileges:</label></td>
      <td><select name = "Privilege" id = "Privilege" multiple="multiple">';
    $displayPost    = '</select></td>
      </tr>
      <tr>';
    $PrivilegeNames = mysql_query("SELECT * FROM privilege");

    echo $displayPre;

    while($row = mysql_fetch_array($PrivilegeNames))
        echo '<option value =' . $row['privilege_ID'] . '>' . $row['privilege_name'] . '</option>';

    echo $displayPost;
}

?>

内側の php タグが正しく解析されませんでした。上記のコードを試してみてください。前部と後部を含むフォームが実装されているため、文字列内に新しい php ブロックを配置する必要はありません。

于 2012-08-30T23:37:32.080 に答える
0

Wesley Murch は近くにいますが、いくつか不足しています: 値を引用し、htmlentitiesXSS インジェクションを防ぐために使用します。

$displayouter = '<td><label>Privileges:</label></td><td><select name = "Privilege" id = "Privilege" multiple="multiple">';

$PrivilegeNames = mysql_query("SELECT * FROM privilege");
while($row = mysql_fetch_array($PrivilegeNames)) {
    $displayouter .= '<option value="' . htmlentities($row['privilege_ID']) . '">' . htmlentities($row['privilege_name']) . '</option>';
}

$displayouter .= '</select></td></tr><tr>';

echo $displayouter;
于 2012-08-30T23:39:10.687 に答える
0

私は構文をテストしていませんが、いくつか間違った場所を作っています。

<?php 
$sample = 0; 
     if($sample ==0) 
     {    
          $displayinner = '<option value =' . $row['privilege_ID'] . '>' . $row['privilege_name'] . '</option>';
?>
          <td><label>Privileges:</label></td> 
             <td><select name = "Privilege" id = "Privilege" multiple="multiple"> 
<?php
                     $PrivilegeNames = mysql_query("SELECT * FROM privilege"); 
                     while($row = mysql_fetch_array($PrivilegeNames)) 
                          echo $displayinner; 
?>
                </select></td> 
             </tr> 
             <tr>
<?php
     } 
?> 
于 2012-08-30T23:46:26.050 に答える