2012-04-13 42 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