试图制作动态选项表格

时间:2013-04-11 10:46:45

标签: php forms dynamic

好的,我试了几天,我不能这样做,所以我尝试一步一步地先把它从数据库中正确地获取并在表格中显示它是数据库

CategoryID  |  CategoryName  |    ParentID

----------------------------------------
1           | FirstMenuCat1  |      0
2           | FirstMenuCat2  |      0
3           | SubMenuCat1    |      1
4           | SubMenuCat2    |      1
5           | SubMenuCat3    |      2

这是我最后的尝试,所以我知道我从数据库中获取了正确的数据,但我不知道如何使它成为一个表单:

<?php
require_once ('mysqli_connect.php');
$q = "SELECT CategoryName FROM menus where ParentID = '0' ORDER by CategoryID";
$r = @mysqli_query ($dbc, $q) or die("Error: ".mysqli_error($dbc));

/* associative array */
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){
printf ("%s\n", $row["CategoryName"]);



}
 ?>

这是我试图做到的,但它不起作用     

/* associative array */
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){

foreach($row){
                echo "<option value=\"". urlencode( $_ ) ."\" $selected >$_</option>\n";
                $selected = ""; // only the first element will be marked as selected
}

}
 ?>

有什么想法吗?

4 个答案:

答案 0 :(得分:0)

检查

echo '<select name="" id="">';
/* associative array */
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){

// Check the $_ correctly
foreach($row){
        echo "<option value='". urlencode( $_ ) ."'>$_</option>\n";
}

}

echo '</select>';

注意*:默认情况下,第一个元素将被选为dd。

答案 1 :(得分:0)

不确定,但我认为这就是你需要的

$optionString = '';
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC))
{

   $value         = urlencode($row['CategoryName']);
   $optionString .= "<option value='{$value}'>{$row['CategoryName']}</option>";


 }

 echo "<select>$optionString</select>";

答案 2 :(得分:0)

通过查看选项标记,我认为您正在尝试创建一个组合框列表。如果是那么首先不要使用\ n。组合框列表中的选项已逐行显示。

其次,您尚未打印选择标记。没有它,列表将无法正确呈现。请尝试以下代码:

echo "<select name='mylist'>";

$selected = "selected";
while (($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) !== FALSE){
   echo "<option value='". $row['key']."' $selected >".$row['value']."</option>";
   $selected = ""; // only the first element will be marked as selected
}

echo "</select>";
希望它可能有所帮助。

答案 3 :(得分:0)

$selected = 'selected';

$htmlSelect = '<select name="elementName" id="elementId">';

while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){
    $htmlSelect .= '<option value="' . urlencode( $_ ) . '" ' . $selected . ' >' . $_ . '</option>';
    $selected = ""; // only the first element will be marked as selected
}

$htmlSelect .= '</select>';

echo $htmlSelect;

注1:最好在元素属性上使用双引号"而不是单引号'。有些浏览器不喜欢单引号。

注2:无法理解您在foreach声明中再次使用while的原因。

注3:如果您不记得选择了哪个选项,则无需指定选择了哪个元素,默认情况下将首先选择一个元素。