1

私はまだ、タフで終わりのない探求を続けています。サッカー賭博システムの作成. これは実際に何かを作るためだけでなく、自分のスキルを向上させるためでもあります。

このプロジェクトでは、私が使用します(使用する場合):

  • ワードプレス
  • ナビキャット
  • SQL
  • PHP

「ベット」というデータベーステーブルがあります。次の列が含まれています。

  • ID (各試合に継続的に増加する番号を割り当てるためだけに)
  • gameid (現在の試合の ID)
  • userid (ユーザー ID)
  • ホームベット(ユーザーのホームベット)
  • awaybet (ユーザーのアウェイベット)

PHP ベースのフォームを作成しました。ユーザーは、ホームベットアウェイベットの 2 つの数字 (試合のゴールスコアに対応) を入力できます。そこを介して、ユーザーが送信ボタンを押すたびに呼び出されるinsert.php ファイルがユーザー ID ( userid ) を取得し、もちろん、新しく作成された賭けに連続した番号を割り当てます。

私の問題はその時です。サイトに投稿された新しい試合ごとにどのように割り当てればよいかわかりません。これは、SQL Selectステートメントを介してgameid で情報を呼び出すことによって行われます

PHPフォーム

<form action="/scripts/insert.php" method="post" name="gameid"> <!-- Not sure if name="gameid" serves a purpose or just a test - I'm sorry. -->
        <div id="betting-structure">
            <div class="main-betting-bg">
                <div class="right-betting-team">
                    <h8 class="centering-teamname1">Arsenal</h8><img src="/images/pl-logo-arsnl.png"> <!-- Homebet -->
                </div>

                <div class="center-betting-input" align="center">
                    <input type="text" name="homebet" class="bets" /><span class="versus">VS</span><input type="text" name="awaybet" class="bets" />
                </div>

                <div class="left-betting-team">
                    <img src="/images/pl-logo-arsnl.png"> <h8 class="centering-teamname2">Arsenal</h8> <!-- Awaybet -->
                </div>      
            </div>

            <div class="extra-betting-bg"> <!-- Just design -->

            </div>
        </div>

        <div id="submit-button-area" align="center">
            <input type="submit" value="" class="submit-button"> <!-- Submit-button -->
        </div>
</form>

最終質問

ゲーム IDを adivまたは多分 a <form>(または状況に最も適したもの)に割り当てて、データベース テーブル "Bets" に登録するにはどうすればよいですか?

必要な場合、これを理解するためにどのコードスニペットが必要になるかわかりません。

編集1:

INSERT.PHP ファイル

<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

global $wpdb, $current_user;
get_currentuserinfo();

$sql= $wpdb->prepare("INSERT INTO `bets` (`userid`, `gameid`, `homebet`, `awaybet`) VALUES (%d, %d, %d, %d)", $current_user->ID, $_POST['gameid'], $_POST['homebet'], $_POST['awaybet']);

$wpdb->query($sql)
?>

EDIT 2 - 変更されたInsert.php-file!

<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

global $wpdb, $current_user;
get_currentuserinfo();

//make sure the bets exist in $_POST
if ((isset($_POST['bets'])) && is_array($_POST['bets'])){
    //loop through the bets getting the gameid and bet information
    foreach($_POST['bets'] as $gameid=>$bet){
        //prepare sql
        $sql= $wpdb->prepare("INSERT INTO `bets` (`userid`, `gameid`, `homebet`, `awaybet`) VALUES (%d, %d, %d, %d)", $current_user->ID, $gameid, $bet['homebet'], $bet['awaybet']);
        //run sql
        $wpdb->query($sql)
    } // This is line 15!
}
?>
4

3 に答える 3

2

<input>非表示の要素を使用できます。

<input type="hidden" name="gameid" value="5280" />

編集: そうすれば、 and のように、あなたのまたはあなたが使用しているものに表示され$_POSTます。homebetawaybet

EDIT2:コメントで提起された質問を明確にする:

<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

global $wpdb, $current_user;
get_currentuserinfo();

for($n=1;$n<=8;$n++) {
    $sql= $wpdb->prepare("INSERT INTO `bets` (`userid`, `gameid`, `homebet`, `awaybet`) VALUES (%d, %d, %d, %d)", $current_user->ID, $_POST["gameid$n"], $_POST["homebet$n"], $_POST["awaybet$n"]);
    $wpdb->query($sql)
}


?>
于 2012-06-13T22:48:38.330 に答える
1

を URL に適用するgameidと、次のようになります。

http://yourdomain.com/betpage/?gameid=123

次に、メソッドgameidを使用して を取得します。$_GET

$gameid = $_GET['gameid'];

ただし、変数をサニタイズすることを忘れないでください。

于 2012-06-13T22:51:14.717 に答える
1

zebediah49 の回答のコメントに基づいて、誰かが同じページで複数の試合のホーム/アウェイ ベットに記入する場合は、配列を使用してフォーム要素に名前を付けることをお勧めします。このようなもの:

<form action="/scripts/insert.php" method="post" name="gameid"> <!-- Not sure if name="gameid" serves a purpose or just a test - I'm sorry. -->
        <div id="betting-structure">
            <!--Team1 vs Team2-->
            <div class="main-betting-bg">
                <div class="right-betting-team">
                    <h8 class="centering-teamname1">Team1</h8><img src="/images/pl-logo-arsnl.png"> <!-- Homebet -->
                </div>

                <div class="center-betting-input" align="center">
                    <input type="text" name="bets[$gameid][homebet]" class="bets" /><span class="versus">VS</span><input type="text" name="bets[$gameid][awaybet]" class="bets" />
                </div>

                <div class="left-betting-team">
                    <img src="/images/pl-logo-arsnl.png"> <h8 class="centering-teamname2">Team2</h8> <!-- Awaybet -->
                </div>      
            </div>

            <div class="extra-betting-bg"> <!-- Just design -->

            </div>

            <!--Team3 vs Team4-->
            <div class="main-betting-bg">
                <div class="right-betting-team">
                    <h8 class="centering-teamname1">Team3</h8><img src="/images/pl-logo-arsnl.png"> <!-- Homebet -->
                </div>

                <div class="center-betting-input" align="center">
                    <input type="text" name="bets[$gameid][homebet]" class="bets" /><span class="versus">VS</span><input type="text" name="bets[$gameid][awaybet]" class="bets" />
                </div>

                <div class="left-betting-team">
                    <img src="/images/pl-logo-arsnl.png"> <h8 class="centering-teamname2">Team4</h8> <!-- Awaybet -->
                </div>      
            </div>

            <div class="extra-betting-bg"> <!-- Just design -->

            </div>

            <!--Team5 vs Team6-->
            <div class="main-betting-bg">
                <div class="right-betting-team">
                    <h8 class="centering-teamname1">Team5</h8><img src="/images/pl-logo-arsnl.png"> <!-- Homebet -->
                </div>

                <div class="center-betting-input" align="center">
                    <input type="text" name="bets[$gameid][homebet]" class="bets" /><span class="versus">VS</span><input type="text" name="bets[$gameid][awaybet]" class="bets" />
                </div>

                <div class="left-betting-team">
                    <img src="/images/pl-logo-arsnl.png"> <h8 class="centering-teamname2">Team6</h8> <!-- Awaybet -->
                </div>      
            </div>

            <div class="extra-betting-bg"> <!-- Just design -->

            </div>
        </div>

        <div id="submit-button-area" align="center">
            <input type="submit" value="" class="submit-button"> <!-- Submit-button -->
        </div>
</form>

フォーム要素bets[$gameid][homebet]に andという名前を付けたことに注意してくださいbets[$gameid][awaybet]。これには、ゲーム ID が php によってエコーされる必要があります (したがって$gameid=123、フィールドがbets[123][homebet]andの場合bets[123][awaybet])。フォームが送信されると、次のような単純な foreach ループを使用して処理できます。

<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

global $wpdb, $current_user;
get_currentuserinfo();

//make sure the bets exist in $_POST
if(isset($_POST['bets'] && is_array($_POST['bets'])){
    //loop through the bets getting the gameid and bet information
    foreach($_POST['bets'] as $gameid=>$bet){
        //prepare sql
        $sql= $wpdb->prepare("INSERT INTO `bets` (`userid`, `gameid`, `homebet`, `awaybet`) VALUES (%d, %d, %d, %d)", $current_user->ID, $gameid, $bet['homebet'], $bet['awaybet']);
        //run sql
        $wpdb->query($sql);
    }
}
?>

数値を確認し、SQL インジェクションを防ぐために、フィールドでいくつかの検証を行う必要があることに注意してください。

于 2012-06-14T00:00:10.793 に答える