2012-04-17 5 views
0

私はナビゲーション項目を再配置するシステムを持っています。アレイはデータを保持していないようです

新しい順序を配列に格納し、次にforループを使用して配列を調べ、データベースを更新します。

<?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 
mysql_data_seek($return, 0); //reset the pointer to do the same query 
$i = 0; //the count for saving the new configuration 
while($row=mysql_fetch_assoc($return)){ 

    $id = $row['id']; 
    $title = $row['title']; 
    $order = $row['order']; 
    ?> 
    <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++){ 
        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> 
        <?php 
       } 
       ?> 
      </select> 
      <select class="select-small" name="<?php echo $bpageorder[$i]; ?>"> 
       <?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> 
     </div> 
    </div> 
    <?php 
    $i++; 
} 
?> 

この最初のコードは、アイテムを並べ替えることのできるメニューです。

最初に、現在の選択をロードして、順序を変更できるようにします。

function reorderChildren($pageid, $pageorder){ 
    global $database; 

    $count = count($pageid); 
    //run through each page one at a time and update the order of the menu 
    for($i=0; $i<$count; $i++){ 
     //set a few variables 
     $pid = $pageid[$i]; 
     $porder = $pageorder[$i]; 
     echo "pid = $pid porder = $porder"; 
     $q = "UPDATE tbl_navigation SET order = '$porder' WHERE pageid = '$pid' AND type = '$_SESSION[parent]'"; 
     $database->query($q); 
    } 
    return 0; 
} 

情報がここで渡されて終了し、問題がforループであるように見えることはありません。

これは誰でも見ることができますか?

これは使用された名前ではありません。私はそれらを確認しました。

アレイに情報を正しく保存していますか?

情報を転送する配列である$bpageid$bpageorderであることを明確にすることはできますか。

ありがとうございます!

+0

私は100%確実ではありませんが、あなたは[これを見てみてください](http://bobby-tables.com/)かもしれません。 – Bobby

+0

安全なフォーム、管理者のみのアクセスです。 – sark9012

答えて

0

loop.No値はその後

が割り当てられている間あなたはちょうどあなたが

<select class="select-small" name="<?php echo $bpageid[$i]; ?>"> 

を使用して、最初の後上部に$bpageid = array();をinitilizedましたが、何の価値はそう、この選択ボックスの名前が空白の$bpageid[$i]ではありません。

問題がある可能性があります。これをチェックし、必要に応じて行います。

+0

これを行う別の方法を提案できますか?私は選択された要素の値を保存し、それらを渡す方法を見つけることを試みています。選択された値の量は、現在追加されている数に応じて変わります。 – sark9012

0

select要素のオプションからjsonを作成して隠しフィールドに格納したり、PHPスクリプトに処理のためにajaxリクエストを送信したりすると、 "weight"値1,2,3などから注文することができます.... PHPとループでソートして表示する

+0

あなたが何を示唆しているのか分かりません。あまり知られていないJSON! – sark9012

+0

www.w3schools.com/json/json_intro.asp jsonの例json_decode()は、phpで使用するjson文字列をデコードするphp関数です – Gntem

+0

私は一見します。ありがとう。 – sark9012

1

シンプルな修正でした! 問題は選択名が上記のものよりむしろname = "bpageid []"である必要があるということでした。愚かな!