2016-07-22 8 views
1

私には「注文」という列を持つページがあります。私が新しいアイテムを追加するとき、そのアイテムの1 + maxがオーダーになるはずです。しかし、私が8 9 10を持っているようにこれらの値の間の項目を削除すると、9で項目を削除すると新しい項目は11の値を持ち、8 10になります11.しかし8 9 10が必要です。 PHP?私は機能を作りますか?それはmax + 1で新しい項目を追加するために働くが、削除してもうまくいかない場合。 マイコード:削除アイテム注文変更PHP

$queryMaxOrd = mysql_query("select max(ord) from article where user_id=" .$_SESSION['userId']); 
$row = mysql_fetch_row($queryMaxOrd); 
$valueMaxOrd = $row[0] + 1; 
$_SESSION['a'] = $valueMaxOrd; 

とINSERTクエリ....

任意のアイデア?

+0

私はあなたのテーブルにレコードを追加すると思います。 MAX値を常に選択すると、このユーザーと接続している最大値が得られます。ベストは –

+0

を使用して更新することをお勧めしますが、最大値+1を持つものを挿入しても欲しいです – johnwilliam25

+0

maxの代わりにsumを使用しようとしています –

答えて

0

まず、mysql_ *を削除してmysqli_ *またはpdoを使用することを検討してください。あなたのコードはSQLインジェクションに脆弱です。

コード構造を使用すると、各注文を新しいレコードとしてテーブルに追加することができます。したがって、1人のユーザーで5つの注文がある場合、テーブルは次のようになります。

user: Adiiia | order: 5 
user: Adiiia | order: 3 
user: Adiiia | order: 7 
user: Adiiia | order: 2 
user: Adiiia | order: 9 

あなたはMySQLへ言っているデータベースを照会

は:私が user: Adiiiaを持っているレコードの最大数を取得します。結果は、あなたが、レコードの合計をカウントしたい場合は、 sum

select sum(ord) from article where user_id='".$_SESSION['userId']."' 

を使用する必要があり、結果は26

でなければなりませんあなたができる最善のことは、新しいを作成することである9

する必要がありますテーブルorders_sum

このような構造にする必要があります。

Total_orders | User 

ユーザーが削除除去順マイナス一桁を持っている場合は、1つまたは他を追加することで、テーブルを更新することができ、新たな秩序を持っています。

このようなものです。

Total_orders | User 
    5  | Adiiia 

更新したい:

select Total_orders from orders_sum where User='Adiiia' 

ユーザーがテーブルを取得することで持っているどのように多くの注文下さい。

select Total_orders from orders_sum where User='Adiiia' 

テーブルをフェッチすることによって、ユーザーが持っているどのように多くの注文検索:

$orders = $row['Total_orders']; 
$plus_orders = $row['Total_orders'] + 1; 

update orders_sum set Total_orders='".$plus_orders."' where user='Adiiia' 

削除する

$orders = $row['Total_orders']; 
$minus_orders = $row['Total_orders'] - 1; 

update orders_sum set Total_orders='".$minus_orders."' where user='Adiiia' 
0

プライマリキーarticle_idを持つ記事テーブルは、user_idの記事を削除した後に記事テーブルを表示します。 user_idのすべてのarticle_idを取得します。次に、そのユーザーのすべてのarticle_idの順序を更新します。

$queryArticle = mysql_query("select article_id from article where user_id=" .$_SESSION['userId']." order by article_id asc"); 
$allArticle = []; 
while($rowArticle = mysql_fetch_assoc($queryArticle)){ 
    $allArticle[] = $rowArticle['article_id']; 
} 

$query = "UPDATE article SET ord = (CASE order "; 
foreach($allArticle as $order => $article_id) { 
    $query .= " WHEN {$article_id} THEN {$order}"; 
} 
$query .= " END CASE) WHERE article_id IN (" . implode(",", $allArticle) . ")"; 
関連する問題