0

閲覧者がページに賛成票または反対票を投じることができる、単純な非 MySQL PHP スクリプトが必要です。MySQL データベース駆動型でなければならない場合は、そうあるべきです。理想的には、そうではありません。

基本的に、このページのソースを Web ブラウザーで表示すると、次のようになります。

<h2>Stack Overflow Is Cool</h2>
<span id="author-info-etc">Written by Ben Dover on 01-01-2012 (+12) | (-3) Total Rank: +9</span>
<p>Once upon a time there was this really cool website called Stack Overflow where amazing people would help answer questions asked by people who destroyed their keyboards by throwing them against their computer screen in an act of utter frustration and despair.</p>

ソースファイルは次のようになります。

<span id="author-info-etc">Written by <?php echo $authorname; ?> on <?php echo $pubDate; ?> <?php include ('pagevotescript.php'); ?></span>

誰かがこの PHP スクリプトの作成を手伝ってくれませんか?

4

5 に答える 5

2

信頼できる投票システムが必要な場合は、MySQL などのデータベースを使用して投票を保存する必要があります。そうしないと、Web アプリはページが受け取った投票数をどのように知ることができますか?

データベース構造は次のようになります。

ページ

page_id | page_name
-------------------
1       | My Page
2       | Test

ユーザー

user_id | user_name
-------------------
1       | John     
2       | Sara
3       | Tom

投票

vote_id | user_id | page_id | vote_weight
-----------------------------------------
1       | 1       | 1       |  1
2       | 1       | 2       | -1
3       | 2       | 2       |  1
4       | 3       | 1       |  1

ユーザーが投票すると:

  1. そのページですでに投票しているかどうかを確認します。
  2. その場合、別の投票を拒否するか、既存の投票を更新します。
  3. 問題のページに投票していない場合は、新しい投票を挿入します。
于 2012-10-04T16:39:00.070 に答える
1

ページ データを MySQL に保存し、votes という列を作成するのが最も簡単です。このようにして、ページを表示すると同時に投票を取得し、ユーザーが対話するときに投票を簡単に上下させることができます。

MySQL がなければ、値をどこかのファイルに保存する必要があります。about-us.php と about-us.php.txt を使用できます。この場合、txt ファイルは単純な # であり、取得してから変更およびリセットできます。このようなもの:

// Open file for reading and writing
$fp = fopen('about-us.php.txt', 'w+');

//Retrieve contents of file as integar
$count = (int) fread($fp, filesize('about-us.php.txt'));

// Take the count and up it by 1
$count++;

// Write the changes
fwrite($fp, $count);

// Close the file
fclose($fp);
于 2012-10-04T16:39:33.367 に答える
0

ユーザーと投稿を含むデータベースが必要です。ユーザーは投稿に投票して、ユーザーの「評判」カウントを増減できる必要があります。このすべての情報を保存するには、すでにデータベースが必要です。

それでも「投票」情報を mysql データベース以外の場所に保存したい場合は、多くのオプションがあります。text fileNoSQLCouchdb、およびその他の多くのオプション。

データベースと通信する方法を学び、情報をファイルに保存するなどのことを行う方がはるかに簡単です。また、mysql は最も一般的に使用されるデータベースであるため、かなり賢明な選択です。

PS: mysql の学習を開始する場合は、 SQL インジェクションを回避するためにmysql_関数を使用するのではなく、 PDOのようなものを使用する必要があります。

于 2012-10-04T16:39:46.557 に答える
0

セッション間でデータを永続化する方法が必要なので、データベースが必要です.mysqlをインストールしたくない場合は、PHPの最新バージョンにはsqlite組み込みサポートが付属していると思います.

于 2012-10-04T16:38:57.997 に答える
0

ローテクなアプローチは、PHP でキーと値のストアを使用して値を格納することです。例としては、サーバーを必要とせず、通常のファイルのように動作する単一ファイル データベースを作成するdba_opendba_*などの PHP 内の関数があります。

例:

$db = dba_open("stats", "r", "gdbm");
$count = dba_fetch("/page/path", $db);
dba_insert("/page/path", $count + 1, $db);

注意として、これは、2 つ以上の同時リクエストが同じインクリメントされた値をフェッチして保存する微妙な競合状態の影響を受ける可能性があります。組み込みの SQLiteであっても、適切なデータベースを使用することをお勧めします。

于 2012-10-04T17:49:51.197 に答える