4

私はWeb開発に非常に慣れていません(HTMLの経験は限られています)。私はディベートウェブサイトを作成しています。現在、各討論はMySQLデータベースに保存されています。ユーザーがデータベースに情報を送信するときに、新しいページを作成する必要があります。このページには、ユーザーの討論と、コメントおよび評価機能が含まれています。

私が抱えている問題は、これまでに行った調査から、討論ごとに新しいWebページを作成するための解決策が見つからないことです。ユニークなウェブページにデータを書き込む方法について誰か提案がありますか?

ありがとう、ジョージ

4

3 に答える 3

2

PHPとMySQLを使用していると仮定しましょう。

私はこれを可能な限り非常に単純に保ちます。おそらく基本的な例でこれらのファイルに加えて、希望に満ちた説明的なSQLテーブル(討論、コメントなど)が必要です。

  • /debatelist.php | すべてのディベートをディベートするためのフォームをディベートします
  • /debateprocessor.php | 'オールインワン'データ操作ファイル。
  • /debate_detail.php | 討論の索引が指す詳細ページ。

ディベートを作成するためのフォーム

<form action='debateprocessor.php' action='POST'>
<input type='hidden' name='action' value='create'/>
<input type='text name='debate_name'/>
/// Other inputs - debate topic, debate author, subject etc? same as above
</form>

次に、フォームデータをdebateprocessor.phpに送信し、そこでサニタイズして準備します。

$ _GET ['action'] = "create" #thisは、ディベートを作成していることを示しています$ _GET ['debate_name'] = "SomeDebate"

debateprocessor.php-あなたはそれを引き込みたいと思うでしょう:

if (mysql_real_escape_text($_GET['action'])) == 'create'){
    $debate_name = mysql_real_escape_text($_GET['debate_name']);
    //sanitize other variables as above

    //Insert debate name
    mysql_query=("INSERT INTO debates (debate_id,debate_name) VALUES ('$debate_name'");

}

アクションに注意してくださいif($ action =='foo'){//何かをする; }ステートメント-これにより、更新(コメント、討論名の編集など)をすべて1つのファイルで処理できるようになります。フォーム内のアクションの他の値は、「edit」、「add_comment」などです。これらすべてを実行するために個別のファイルを使用できますが、これにより、すべてを1つ実行できます。テーブルを変更するアクションごとに、上記のようなelseifsまたはその他のifステートメントを追加するだけです。

したがって、ディベートを表示すると、テーブルにディベートのマスターリストのようなものが表示されます。

debatelist.php

<?
$getDebates = mysql_query("SELECT * FROM debates";); 
$rowNum = 0;

while($row = mysql_fetch_array($getDebates))
{
    $thisDebate = $row['debate_name'];
    $thisDebateID = $row['debate_id'];;

    echo
    "
        <tr>
        <td>
           <a href='debate_detail.php?debateid=$thisDebateID'>
            $thisDebate
        </a>
        </td>

    </tr>
    ";
    $rowNum++;
}

これにより、eaへのリンクを含むディベート名のリストが出力されます。PK、ディベートIDによってプルされた特定のディベートのdebate_detail.phpページ。そのファイルでは、SELECTの同様の組み合わせを使用します('WHERE debate_id ='xyz'のみを使用し、debate_id ='zyx' = debate_id='zyx'のコメントなどのテーブルを結合する可能性があります。

于 2012-12-03T01:51:30.810 に答える
1

要求されたURIを調べるスクリプトを作成し(クエリ文字列は最も簡単に調べることができますfoo.php?debate=1$_GET['debate'])、それを使用して、必要な議論を一意に識別する情報(たとえば、主キーに使用する列の値)を取得します。データベーステーブル内)。

データベースでその行を検索し、コンテンツをページに出力します。

(SQLインジェクションを防御する方法でデータベースにデータを送信し、XSSを防御するためにエスケープまたはサニタイズせずにユーザー入力をHTMLにエコーバックしないようにしてください)。

于 2012-12-02T19:53:07.037 に答える
0

PHPなどのテンプレートエンジンを使用する必要があります。討論ごとに、たとえば討論ID1の場合などに異なるクエリ文字列を渡します。

www.example.com/debates?id=1

次に、phpコードで、このクエリパラメータの値を確認し、それを使用してデータベースから正しい情報を抽出し、ページを動的に作成できるようにします。

于 2012-12-02T19:53:13.117 に答える