2011-08-17 9 views
3

私の友人は、お気に入りのお気に入りリストにページを追加する機能を持つウェブサイトを作成しました。最近お気に入りのリストから1ページを削除することについて多くの不満がありました。コードにエラーがあり、ページを削除する代わりにページを追加するように見えます。お気に入りのリストからページを削除します。 (PHP)

さらに詳しい説明:各ページには特定のIDがありますので、お気に入りに何かを追加するとID番号が追加され、カンマで区切られます。好きなページを削除して同じことをすると数字を検索して削除しますが、時にはそれはしません!私は理由を知らない...それは私に "ページは正常に削除されました"と伝えますが、私はそれが削除されていないと私は前に削除されたいくつかの古いページを返します参照してくださいdonot!あなたはここに

は私の過去の経験から、コード

if($_REQUEST['do'] == 'delfav') 
{ 
    $mn_Id = safe($_REQUEST['mn_Id'],true); 
    $page = 'favorite'; 
    if(isset($mn_Id)) 
    { 
     $fav = explode(',' , $_SESSION['user']['Favorites']); 
     if(in_array($mn_Id,$fav)) 
     { 
      echo $ind = array_search($mn_Id , $fav); 
      unset($fav[$ind]); 
      $new = implode(',' , $fav); 
      $ss = $db->query("UPDATE users SET Favorites = '".$new."' WHERE Id = '".$_SESSION['user']['Id']."' "); 
      if($ss) 
      { 
       $msg = 'the page was successfully deleted'; 
      } 
      else 
      { 
       $msg = 'error occurred please try again later'; 
      } 
     } 
     else 
     { 
      $msg = 'This page is not in your favorite list'; 
     } 
    } 
} 
+1

あなたの友人は、SQLテーブル内でネストされたCSVテーブルを実際に使用しないでください。 –

+1

提案はありますか? – shnisaka

+1

はい: 'あなたの友人は、SQLテーブル内でネストされたCSVテーブルを実際に使用するべきではありません。ライブに入る前にこれを修正して、純粋なSQLのものを削除することもできます。 –

答えて

5

データベースに関連するコードを変更できない場合は、代わりに次のコードをテストすることができます。

(...)

if(isset($mn_Id)) 
{ 
    $fav = explode(',' , $_SESSION['user']['Favorites']); 
    if(in_array($mn_Id,$fav)) 
    { 
     $fav = array_diff($fav, array($mn_Id)); 
     $new = implode(',' , $fav); 
     $ss = $db->query("UPDATE users SET Favorites = '".$new."' WHERE Id = '".$_SESSION['user']['Id']."' "); 

(...)

このため

echo $ind = array_search($mn_Id , $fav); 
unset($fav[$ind]); 

変更は、これを交換した場合は
$fav = array_diff($fav, array($mn_Id)); 
+0

ありがとうございます! – shnisaka

+0

私は助けてうれしい – leticia

1

に..ですコードをチェックしてくださいすることができます - とphresenelが言ったように - ウルテーブル内のCSVを使用しないでください。私はあなたのリストの長さについてはわかりませんが、私はPHP文字列を何度も壊すことに成功しました。あなたのCSV(あなたの 葬儀 のサイトです)を維持したい場合は、本当にその設定を解除して、目的の変数の設定を解除します(前後のリストをエコーし​​ます)。 しかし、あなたがそれを改善したいなら、私はお気に入りのために別のテーブルを使うことを勧めます。好きなWebサイトで使用されているIDともう1つの列の2つの列しかない表(4つのエントリのリストは、それぞれが同じユーザーIDを持つ4つのレコードに変換されます)。ユーザーIDとWebサイトの検索だけを削除するには、見つかった場合はその行を削除します。追加するには、新しい行を追加するだけです。これは、いくつかのDBベストプラクティスに違反するかもしれない非常に単純化されたアプローチです。

関連する問題