2012-02-21 13 views
0

ページの並べ替えを目的としたコードを書きました。メニューシステムのページの並べ替え

<form action="process.php" method="post" /> 
<?php 
$apageid = array(); 
$apagename = 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]'"; 
$return = $database->query($q); 
while($row=mysql_fetch_assoc($return)){ 
    $apageid[] = $row['id']; 
    $apagename[] = $row['title']; 
    $apageorder[] = $row['order']; 
} 

$count = count($pageid); 

$bpageid = array(); 
$bpageorder = array(); 

//run through each page one at a time and update the order of the menu 
for($i=0; $i++; $i<$count){ 
//set a few variables 
$pid = $pageid[$i]; 
$porder = $pageorder[$i]; 

?> 
<select name="<?php $bpageid[$i] ?>"> 
    <?php 
    for($j=0; $j++; $j<$count){ 
     ?> 
     <option value="<?php $apageid[$j] ?>"><?php echo $apagename[$j]; ?></option> 
     <?php 
    } 
    ?> 
</select> 
<select name="<?php $bpageorder[$i] ?>"> 
    <?php 
    for($j=0; $j++; $j<$count){ 
     ?> 
     <option value="<?php $apageorder[$j] ?>"><?php echo $apageorder[$j]; ?></option> 
     <?php 
    } 
    ?> 
</select> 
<?php 
} 
?> 
<input type="submit" name="navigation" value="Reorder pages" /> 
</form> 

例えば、7つのメニュー項目があった場合、コードべき全7及びディスプレイ7ドロップダウンボックス内の7つのオプションでそれぞれをループ。各ドロップダウンの隣には、ボックスの順番である1〜7の数字を入力します。これにより、各ドロップダウンでメニュー項目が選択され、そのメニュー項目に注文番号が割り当てられます。もちろん

、スクリプトが提出されたとき、私はコードは、現在送信ボタンが、何も表示されていない

2つの項目がなどなど衝突しないことを検証します。

誰でも問題を見ることができますか? $pageidはまた

$count = count($pageid); 

定義されることはありませんので

答えて

0

おかげで、ここでこの$countはゼロおそらく、なぜあなたは、ID、タイトルと順序のための3つの異なるアレイを保っていますか?おそらく、多次元配列上のすべてを持っていてforeachループを使うのであれば、もっと明確になります。

+0

これはリミッターとインクリメントを組み合わせたもので、3つのループすべてで間違った方法です! – sark9012

+0

forループは、特に入れ子になっていると厄介なことがあります。そのため、配列とイテレータを扱う際に常にforeachループを使用するようにしてください –