0

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

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

例如,如果有 5 页(关于我们、使命与愿景、奖项、环境政策、地点),则顺序为 1-5。

当前表单的屏幕截图

正如您从屏幕截图中看到的那样,代码生成了 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
}
?>
4

1 回答 1

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'];

这将直接从数据库而不是从您的数组中循环每个 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;
      }

现在添加一个变量以使数组中的当前选项值等于当前行的值

<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>
于 2012-04-13T16:29:30.217 回答