2017-06-26 7 views
0

私のサイト(CMS eFictionを使用しています)では、ログインした章を評価しない場合、1〜10の章で評価を付けることができますテーブルを-1とします。私はユーザーが複数のレーティングを残さないようにしたい。私のPHPの知識は非常に限られて、私はPHP/MySQL(eFiction)単一ユーザによる複数の評価の防止

dbquery("INSERT INTO ".TABLEPREFIX."fanfiction_reviews (item, type, reviewer, review, rating, date, uid, chapid) VALUES ('$item', 'ST', '$reviewer', '$review', '$rating', now(), '".(USERUID && isNumber(USERUID) ? USERUID : 0)."', '$chapid')"); 

on github here)コードがreview.phpにライン144の前に行くべきと考えている私はfanfiction_reviewsテーブルのと一致したエントリを見つけた場合、クエリを記述しようとしていますuid(user)とchapidを持っていて、評価を受けている場合は、すでに章を評価しているというエラーメッセージが表示されます。 ETA:以下の質問に答えるには、以前の評価を置き換えるのではなく、2番目の評価を無視するか、記録しないようにします。

私が言及したように、私のPHPは限られています、私はeFictionのどこか他の場所にあるものを模倣しようとしています。編集:私は致命的なMySQLのエラーを与えていたuseruid = '$uid'が最初に変更されました。私はuid = '$uid'にそれを変更し、ファイルに貼り付け以上により

$ratecount = dbquery("select count(rating) as count FROM ".TABLEPREFIX."fanfiction_reviews WHERE item = '$item' AND chapid = '$chapid' AND uid = '$uid' AND rating != '-1'"); 
if($ratecount != 0) $output .= write_error(_MULTIPLERATINGS); 

エラーを停止し、それは私に、「複数の格付エラー」というメッセージを与えるんが、それはまだ評価をロギングいます。評価を記録しないようにするにはどうすればいいですか(または評価が-1以外のものに変更する)

ありがとうございました!

+2

回答するときは、ユーザーが複数回料金を試行した場合に何をしたいかを指定できますか。 2番目のレーティングが最初のものに取って代わるべきか無視されるべきか? –

+0

なぜ '-1'をログに記録するのか、' -1'のために何を表示するのかを記録していなければ、アプリケーション側では書かないでください。その後、必要に応じてユニークなキー(ユーザID、チャプター、ブックIDなど)をカラムに設定することができます。 – chris85

+1

ようこそスタックオーバーフロー!コメントによって落胆しないでください。あなたのものは良い最初の質問であり、すぐに非常に良いものになります。 –

答えて

0

お試しif($ratecount.count != 0) $output .= write_error(_MULTIPLERATINGS);また、フォーマットするにはif($ratecount["count"] != 0) $output .= write_error(_MULTIPLERATINGS);とする必要があります。

結果セット内の最初の行の "count"フィールドにアクセスすることを示すために、結果セットをループするか、そこに[0]を入れる必要があります。あなたの走行距離は、dbquery()が何をするかによって異なります。 phpでデータベースに接続したり、データベースとやりとりするにはさまざまな方法があり、異なる実装では異なる方法で結果が返ってくる可能性があり、わずかに違う慣習に従うかもしれないことに注意してください。 AFAIK、dbquery()はPHPの標準関数ではありません。

+0

あなたの答えをありがとう、上記のコードを編集して、少なくとも私に致命的なmysqlエラーを与えないようにします。あなたが投稿した2つのメソッドを試しましたが、両方とも私にエラーを返します。 'if($ ratecount.count!= 0)'は私に "Catchable fatal error:クラスmysqli_resultのオブジェクトを文字列に変換できませんでした" '' county ''!= 0) '私に を渡す" Uncaught Error:reviews.phpの配列としてmysqli_result型のオブジェクトを使用できません。スタックトレース:#0 {main}行Xのreviews.phpでスローされました。 eFictionは非常に古く、おそらくPHPの正しい形式で書かれていないでしょう。 – MTT