2016-03-24 4 views
0

Okie dokie。私が自分自身を正しく説明できるかどうかを見てみましょう。私はそうのように、彼らのグループので、一緒にデータをプルアップされてきた特定の配列を削除するには?

row1 (labeled "claimed") = Item1, Item2, Item3, Item4 
row2 (labeled ctype) = Thing1, Thing2, Thing3, Thing4 

Item1, Thing1 
Item2, Thing2... 

このコードを使用して:私のデータベースの二つの別々の行では、私は次のようになり、データを持っている

<?php 
$select=mysqli_query($connect, "SELECT * FROM `$table_members` WHERE email='$_SESSION[USR_LOGIN]'"); 
while($row1=mysqli_fetch_assoc($select)) { 
    $name1=$row1['name']; 
    $claim = $row1['claimed']; 
    $type1 = $row1['ctype']; 
    if ($claim != 'None') { 
     $type2 = explode(', ', $type1); 
     $decks = explode(', ', $claim); 
     echo "<table id=\"memtable\"><tr><th>Name</th><th>Claimed</th><th>Type</th></tr>"; 
     foreach(array_combine($decks, $type2) as $deck => $type3){ 
      echo "<tr><td>"; 
      echo "$name1</td><td>"; 
      echo "$deck</td><td>"; 
      echo "$type3</td><td>"; 
     } 
    } 
} 
?> 

問題は、メンバーがフォームを送信した後で、そのアイテムに基づいてアイテムとアイテムをデータベースから削除したいということです。たとえば、私はドロップダウンを持っています

-Item1 
-Item2... 

彼らはItem2を選択してフォームを送信します。今、私は私のデータベースからアイテム2とThing2を削除したい、今の行は次のようになります。

row1 (labeled "claimed") = Item1, Item3, Item4 
row2 (labeled ctype) = Thing1, Thing3, Thing4 

唯一の特定のインスタンスが削除されるように、私はそれをコーディングする方法を見つけ出すように見えることはできません。 私はそれが次のようなものだと仮定します。

foreach(array_combine($decks, $type2) as $deck => $type3){ 
$gone = "DELETE FROM `$table_members` WHERE claimed='$deck' AND ctype='$type3'"; 
      mysqli_query($connect, $gone); 
} 

ETAの:私は解決策を見つけました!誰もが事の同じタイプを探しているために、ここで私がやったことだ:

$remove = $_POST['remove;'] 

$select1=mysqli_query($connect, "SELECT * FROM `$table_members` WHERE email='$_SESSION[USR_LOGIN]'"); 
while($row1=mysqli_fetch_assoc($select1)) { 
    $claim = $row1['claimed']; 
    $type1 = $row1['ctype']; 
} 
$type2 = explode(', ', $type1); 
$decks = explode(', ', $claim); 
for($i=0;$i<count($decks);$i++){ 
    if($decks[$i]===$remove){unset($decks[$i]); unset($type2[$i]);} 
} 
$decks = implode(', ',$decks); 
$type2 = implode(', ',$type2); 
$gone = "UPDATE `$table_members` set claimed='$decks', ctype='$type2' where email='$_SESSION[USR_LOGIN]'"; 
    mysqli_query($connect, $gone); 
+0

あなたはデータを正規化する必要があります。 –

+0

申し訳ありませんが、私は本当にそれを説明する方法が分かりませんでした。 –

答えて

0

は私が正しくあなたのシナリオを理解していれば見てみましょう。

あなたのテーブル内のデータは、このようなものになります。

$email = $_SESSION['USR_LOGIN']; 
foreach(array_combine($decks, $type2) as $deck => $type3) 
{ 
    $gone = "UPDATE `$table_members` set claimed=REPLACE(claimed,'$deck, ',''), ctype=REPLACE(ctype,'$type3, ', '') where email='$email'"; 
    mysqli_query($connect, $gone); 
} 
:あなただけ一度に一つの項目を削除したい場合は、その場合には

------------------------------------------------------------------------- 
| Name | ctype       | claimed     | 
-------------------------------------------------------------------------- 
| Jhon | Thing1, Thing2, Thing3, Thing4 | Item1, Item2, Item3, Item4 | 
------------------------------------------------------------------------- 

を、私はあなたの最良の選択肢はなると思います

テーブルにデータがどのように構成されているかのサンプルを投稿できる場合は、より良い例を提供できると思います。

+0

それは、それが表の中でどのように編成されているかです。私は前にREPLACEを使ったことがないので、これは私の新しい領域です。それはほとんど機能しましたが、2番目のエントリを削除しようとすると、最初のANDと2番目のエントリが削除されました。もうすぐだ! –

+0

実際には、もう一度見て、それは最後のものを除くすべてのものを取り除いた。 –

関連する問題