2011-01-05 1 views
2

私はPHPの& mysqlを使ってWebアプリケーションを書くことに取り組んでおり、何かにアプローチする最善の方法について疑問を抱いていました。アプリケーションはシンプルで、テキストを含むボックス( "セル")の表示を扱います。 ここに問題があります: セルA、セルB、セルDの3つのセルが表示されています。データベースにはそれぞれ、表示される順序を示す「優先度」があります。今は順番に表示されますが、Cell Cを追加してBとDの間に配置する場合は、まずCell Dの優先順位を変更してmakeを実行する必要がありますセルCが真ん中にある部屋。将来の変更に柔軟に対応しながらデータの順序をどのように処理すればよいですか?

私はおそらく、新しいセルが隣のセルから離れるほど優先される優先順位を持つことができると考えましたが、それは最終的には上記と同じ方法で失敗します。

また、私は優先度フィールドを別の方法で使用することを検討しました。順序を示すために抽象的な番号を使用するのではなく、先行するセルのID番号を入れることができます。このようにして、セルを表示した後、私の関数はselectクエリを実行して、 "priority"フィールドが現在のセルのidと等しいセルを見つけて表示します。しかし、問題は、セルが削除された場合、そのセルの次のセル(したがって、残りのセル)がもう表示されなくなることです。

この問題に取り組む最も良い方法は何ですか?

答えて

1

10進数の値をとり、優先度でソートする優先度の列があります。小数では、他のものを変更することなく、新しいアイテムを右のアイテムに合わせるのは非常に簡単です。初歩的な

+1

詳しくは、左と右の項目の優先度を追加し、2で割って新しく挿入されたCの優先度を得ることができます – Mark

0

$resultに格納されたデータを複製することは、私は初歩的な、述べたように...おそらく、リソースの無駄ですが
// $result is what our database query returned. sample data used. 
$result = array(
    'name'=>'Leeroy Jenkins', 
    'age'=>'28', 
    'gender'=>'male', 
    'note'=>'At least I\'ve got chicken.' 
); 

// $data contains all of the current record's information. 
// the order of these is irrelevant. 
$data[0] = $result['name']; 
$data[1] = $result['age']; 
$data[2] = $result['gender']; 
$data[3] = $result['note']; 

// $priority is the order what we want the information displayed in. 
// change this to the preferred order using the numerical indexes from above. 
// this could even be read from the database, if desired. 
$priority = array(2, 1, 0, 3); 

// write out our information. 
foreach ($priority as $item) { 
    echo '<td>' . $data[$item] . '</td>' . PHP_EOL; 
} 

0

私のフォーラムコードでは、単に、最後に追加し、上または下のボタンを使用して選択したセルを交換するだけで、各セルの上/下ボタンを提供します。

関連する問題