2012-04-13 43 views
0

我写了一个脚本,允许我重新排列菜单上的项目。用以前选择的选项预载一个表格

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

例如,如果有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 
} 
?> 
+0

你能举个例子吗?你喜欢它的样子吗? – Elen 2012-04-13 14:35:55

+0

我希望下拉菜单在下拉菜单上显示标题和顺序。因此,如果有5页,页面A,B,C,D和E,并且它们按照这个顺序排列......页面A 1,页面B 2,页面C 3,页面4 D,页面5 E对于两个下拉菜单x 5.跟我? – sark9012 2012-04-13 14:41:23

+0

不确定。你能修改你的文章来直观地表示所需的输出吗? – Elen 2012-04-13 14:44:26

回答

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,以我们先前添加的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> 
+0

这不是我所追求的,我会改变我的问题。 – sark9012 2012-04-15 17:37:32

+0

感谢您更改问题,这是我的想法......虽然无法测试,但我收到错误! '警告:mysql_data_seek()的错误参数计数' – sark9012 2012-04-16 08:57:32

+0

更改为mysql_data_seek($ return,0); – squarephoenix 2012-04-16 14:10:51