1

我仍在艰难而无尽的追求中奋战;创建一个足球投注系统。这不仅是为了实际创造一些东西,也是为了提高我的技能。

在这个项目中,我使用(如果有的话):

  • WordPress
  • Navicat
  • SQL
  • PHP

我有一个名为“Bets”的数据库表。它包含以下列;

  • ID(只是为每个匹配分配一个不断增长的数字)
  • gameid(当前比赛的 id)
  • userid(用户 id)
  • homebet(用户 homebet)
  • awaybet(用户 awaybet)

我创建了一个基于 PHP 的表单,用户可以在其中输入两个数字 - homebetawaybet - 对应于比赛中的进球数。通过那里,每次用户按下提交按钮时都会调用一个insert.php文件,它会获取用户 ID(用户 ID),当然还会为新创建的赌注分配一个连续的数字。

我的问题是;我不知道我应该如何分配网站上发布的每个新匹配 - 这是通过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)
?>

编辑 2 - 修改后的Insert.php文件!

<?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" />

编辑:这样它就会出现在你$_POST或你正在使用的任何东西中,就像homebetand一样awaybet

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

您可以将 应用gameid到 URL 所以它会是这样的:

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]bets[$gameid][awaybet]。这需要由 php 回显 gameid(所以如果$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 回答