0

我正在尝试在被分配为 php 变量的模板 html 表单中使用 php 函数。我知道我可以使用标准 $ 变量,它们会显示正常,但我不知道如何使用函数。

本质上,我有一个包含一组值的数据库,我想用这些值来填充下拉选择表单。我需要在几个地方显示表单,因此使用变量模板化表单是有意义的。

到目前为止,我有以下 PHP。任何帮助将不胜感激!该数组工作正常 - 但在我正在努力的表单中显示它。

$query = "SELECT 
  property.propertyid,
  property.reference,
  property.userid, 
  users.userid,
  users.username
FROM 
  property
    LEFT JOIN users ON property.userid = users.userid
WHERE 
  property.userid = ".$varuserid."
  ";

$result = mysql_query($query) or die(mysql_error());
$listarr=array();  
while($qy = mysql_fetch_array($result)){
$listarr[] = "<option value=\"".$qy['propertyid']."\">".$qy['reference']."</option>";
}

$form = <<<HTML
<form name="insert" method="post" action="?page=account&amp;a=insert&amp;form=1">
  <table width="100%" border="0" cellpadding="4" cellspacing="0">
    <tr> 
      <td width="24%" align="left" valign="top">Property ID</td>
      <td width="76%">      
        <select name="propertyid" size="1">

foreach($listarr as $key => $value) { echo $value }

        </select>
      </td>
    </tr>
    <tr> 
      <td align="left" valign="top">&nbsp;</td>
      <td>
      <input name="userid" type="hidden" id="userid" value=$varuserid />
      <input type="submit" name="submit" value="Insert transaction!" /></td>
    </tr>
  </table>
</form>
HTML;

谢谢,西蒙enter code here

4

2 回答 2

0

这是我倾向于做的:

<select name="propertyid" size="1">    
<?php foreach($listarr as $key => $value) { ?>
    <option value="<?php echo $value; ?>"><?php echo $value; ?></option> 
<?php } ?>
</select>

这样你仍然可以在页面上看到格式:)

于 2012-05-08T01:18:08.783 回答
0

您不能在heredoc中使用循环,但可以使用变量。

由于您已经有了列表,您可以做的是:

while($qy = mysql_fetch_array($result)){
    $listarr[] = "<option value=\"".$qy['propertyid']."\">".$qy['reference']."</option>";
}
$list = implode(" ", $listarr);

在你的heredoc中:

<select name="propertyid" size="1">
    {$list}
</select>

编辑:请注意,您需要对 heredoc 中包含的所有变量执行此操作,因此:

<input name="userid" type="hidden" id="userid" value={$varuserid} />
                                                     ^          ^
于 2012-05-08T01:19:51.057 回答