使用先前选择的选项预加载表单

时间:2012-04-13 14:33:11

标签: php mysql html

我写了一个脚本,允许我重新排序菜单上的项目。

代码选择(显示)页面标题以及页面在菜单上显示的顺序。

例如,如果有5页(关于我们,使命和愿景,奖项,环境政策,地点),订单将为1-5。

Screenshot of current form

正如您从屏幕截图中看到的那样,代码会生成5个下拉列表,所有下拉列表都包含5个页面选项。在另一个下拉列表中,您将获得1-5。

我要做的是让菜单加载菜单已经直接进入该表单的名称和页面顺序。

因此,每个下拉列表都会有一个页面标题以及另一个下拉列表中的相应订单。然后,如果需要,用户可以更改它。

我如何更改代码才能实现此目的?

<?php
$apageid = array();
$apagename = array();
$apageorder = array();

$q = "SELECT g.id, g.title, n.order FROM tbl_general g INNER JOIN tbl_navigation n ON n.pageid = g.id WHERE n.type = '$_SESSION[parent]' ORDER BY n.order";
$return = $database->query($q);
while($row=mysql_fetch_assoc($return)){
    $apageid[] = $row['id'];
    $apagename[] = $row['title'];
    $apageorder[] = $row['order'];
}

$count = count($apageid);
$bpageid = array();
$bpageorder = array();
?>
<div class="form-holder">
<?php

//run through each page one at a time and update the order of the menu
for($i=0; $i<$count; $i++){
    ?>
    <div class="form-row">
        <div class="form-label">
            Page Name
        </div>
        <div class="form-field">
            <select class="select-small" name="<?php echo $bpageid[$i] ?>">
                <?php
                for($j=0; $j<$count; $j++){
                    ?>
                    <option value="<?php echo $apageid[$j]; ?>"><?php echo $apagename[$j]; ?></option>
                    <?php
                }
                ?>
            </select>
            <select class="select-small" name="<?php echo $bpageorder[$i] ?>">
                <?php
                for($k=0; $k<$count; $k++){
                    ?>
                    <option value="<?php echo $apageorder[$k]; ?>"><?php echo $apageorder[$k]; ?></option>
                    <?php
                }
                ?>
            </select>
        </div>
    </div>
    <?php
}
?>

1 个答案:

答案 0 :(得分:2)

好吧,我知道你需要什么。

改变这个:

for($i=0; $i<$count; $i++){

到此:

mysql_data_seek( $return ); //reset the pointer to do the same query
while($row=mysql_fetch_assoc($return)){

$id = $row['id'];
$title = $row['title'];
$order = $row['order'];

这将直接从db而不是数组循环每个id字段。此外,我们现在在循环期间为每个字段都有变量。现在将id的数组var更改为我们之前添加的id var:

<select class="select-small" name="<?php echo $id; ?>">

现在,对于页面名称,选择字段可以将其添加到第二个for循环:

for($j=0; $j<$count; $j++){
      if($apageid[$j] == $id) {
      $selected = true;
      } else {
      $selected = false;
      }

现在添加一个变量,使数组中的当前选项值“selected”,如果它等于当前行的值

<option value="<?php echo $apageid[$j]; ?>" <? echo ($selected == true) ? 'selected="selected"' : ''; ?>><?php echo $apagename[$j]; ?></option>

然后对底部的选择执行相同的操作:

<select class="select-small" name="<?php echo $order; ?>">
            <?php
            for($k=0; $k<$count; $k++){
                if($apageorder[$k] == $order) {
                    $selected = true;
                } else {
                    $selected = false;
                }
                ?>
                <option value="<?php echo $apageorder[$k]; ?>" <? echo ($selected == true) ? 'selected="selected"' : ''; ?>><?php echo $apageorder[$k]; ?></option>
                <?php
            }
            ?>
        </select>