2012-04-13 10 views
0

私は、メニュー上のアイテムを並べ替えるためのスクリプトを書いています。以前に選択したオプションのフォームをあらかじめロードする

コードは、ページのタイトルとページに表示されるメニューの順序を選択(表示)します。

たとえば、5つのページ(About Us、Mission &ビジョン、賞、環境方針、地域)がある場合、注文は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

+0

ドロップダウンで、タイトルとその順序をドロップダウン自体に表示します。したがって、5ページ、ページA、B、C、D、Eがあり、それらの順番になっている場合....ページA 1、ページB 2、ページC 3、ページ4 D、ページ5 Eの2つのドロップダウン私は? – sark9012

+0

わかりません。希望の出力を視覚的に表現するために投稿を修正できますか? – Elen

答えて

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フィールドストレートDBからの代わりに、あなたのアレイからこの

変更。また、ループ中に各フィールドに変数があります。今、私たちは前に追加した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> 
+0

それは私が後になったことではない、私は私の質問を変更します。 – sark9012

+0

質問を変更していただきありがとうございます、これは私が心に留めていたものです...しかし、それをテストすることはできませんが、エラーが発生しています! '警告:mysql_data_seek()のパラメータ数が間違っています' – sark9012

+0

mysql_data_seek($ return、0)に変更されました。 – squarephoenix

関連する問題