Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将多个复选框中的值发布到SQL_Php_Html_Mysql_Arrays_Sorting - Fatal编程技术网

Php 将多个复选框中的值发布到SQL

Php 将多个复选框中的值发布到SQL,php,html,mysql,arrays,sorting,Php,Html,Mysql,Arrays,Sorting,我在mySQL中有两个表 Table: Player ----------------------------------------------------------- | name | T1 | T2 | T3 | T4 | T5 | id | weeknumber | |--------|----|-----|-----|-----|-----|-----|-------------| | | | | | | |

我在mySQL中有两个表

Table: Player
-----------------------------------------------------------
|  name  | T1 | T2  | T3  | T4  | T5  | id  | weeknumber  | 
|--------|----|-----|-----|-----|-----|-----|-------------|
|        |    |     |     |     |     |     |             |
|        |    |     |     |     |     |     |             |
-----------------------------------------------------------

Table: Teams
-------------------------------------------------------------------------
|  id  | team1name | team2name | team1score  | team2score | weeknumber  | 
|------|-----------|-----------|-------------|------------|-------------|
|      |           |           |             |            |             |
|      |           |           |             |            |             |
-------------------------------------------------------------------------
这个想法是,表格“Teams”通过另一个已经适合我的页面填充。 每周将有13支新球队

表“Player”必须从另一个页面填充,用户可以从该页面获得以下选项:

  • 名称:文本字段
  • 13个复选框(这些复选框需要存储来自表团队的值ID)
用户应在13个团队中选择5个(自由选择),这些复选框的值(团队ID的ID)应与文本字段中的名称一起存储为T1、T2、T3、T4、T5

<form method="post" action="created.php" class="form-style-7">  
    <h2>Tilmeld en spiller </h2>
    <ul>
        <li>
            <label for="name">Navn</label>
            <input type="text" name="navn" value="<?php echo $navn;?>">
            <span>Indtast spillerens navn</span>
        </li>
        <li>
 <?php


$count = $rows = 0;

$sql = "SELECT * FROM Teams WHERE weeknumber='$WeekNumber' ORDER BY id";
$result = $conn->query($sql); 

if ($result->num_rows > 0) {

    echo '
        <table class=""><tr><th colspan="3">Igangværende - Uge ' . $WeekNumber . '</th></tr>
        <tr class="underhead"><td>#</td><td>Kamp</td><td>Mål</td></tr>
    ';

    // Output af data
    while($row = $result->fetch_assoc()) {
        if ($rows % 1 == 0) {
            $count++;
        }
        $rows++;

        echo '<tr>';
        echo '<td>';
        echo '';
        echo '<input type="hidden" name="ID" value="' . $row['id'] . '" >';
        echo '<input class="btn" type="checkbox" name="" > ';
        echo ' </form>';
        echo '</td>';
        echo '<td>' . $count . '</td>';
        echo '<td>' . $row["team1name"]. ' - ' . $row["team2name"] . '</td>

        </form>';
    } 

    echo '</table>';
}


mysqli_close($conn);
?>

        </li>
        <li id="buttontilmeld">
            <input type="submit" name="submit" value="Tilmeld" >  
        </li>
    </ul>
</form>

其中我需要
$\u POST['TX']==”
来填充table Player T1到T5。

应该检查这个答案,但解决方案在这里的另一个答案中:

遵循良好的编码标准 你发布的代码有很多小问题。最后,您应该始终非常小心地保持所有内容正确缩进,并且始终使用括号
{}
,即使不需要它们

您的原始代码:

while (...) {
    if ($rows % 1 == 0)
        $count++;
应该是:

while (...) {
    if ($rows % 1 == 0) {
        $count++;
    }

这些调整将使您的代码在
while
循环中有两个结束标记,而没有开始标记,这一点更加清楚

应对该答案进行审查,但解决方案在此处的另一个答案中:

遵循良好的编码标准 你发布的代码有很多小问题。最后,您应该始终非常小心地保持所有内容正确缩进,并且始终使用括号
{}
,即使不需要它们

您的原始代码:

while (...) {
    if ($rows % 1 == 0)
        $count++;
应该是:

while (...) {
    if ($rows % 1 == 0) {
        $count++;
    }

这些调整将使您的代码在
while
循环中有两个结束标记,而没有开始标记,这一点更加清楚

未设置复选框的名称属性。PHP无法获取有关选中复选框的任何信息(除非您应该使用Jquery来执行其他操作)。重要的是要知道,只有选中的复选框才会在POST数据中可见

为复选框指定名称,例如:

echo '<input class="btn" type="checkbox" name="team_checkbox_'.$row['id'].'"> ';
或者只需检查所有POST数据:

$t = array();
foreach($_POST as $post_param_name => $value){
  if(substr($post_param_name, 0, 14) == 'team_checkbox_'){
    // substr($post_param_name, 14) is the ID of one of the checked groups

    $t[] = substr($post_param_name, 14);

  }
}

现在$t是一个数组,包含复选框的团队ID。因此,您可以在SQL中保存:T1=$t[1],…

复选框的name属性未设置。PHP无法获取有关选中复选框的任何信息(除非您应该使用Jquery来执行其他操作)。重要的是要知道,只有选中的复选框才会在POST数据中可见

为复选框指定名称,例如:

echo '<input class="btn" type="checkbox" name="team_checkbox_'.$row['id'].'"> ';
或者只需检查所有POST数据:

$t = array();
foreach($_POST as $post_param_name => $value){
  if(substr($post_param_name, 0, 14) == 'team_checkbox_'){
    // substr($post_param_name, 14) is the ID of one of the checked groups

    $t[] = substr($post_param_name, 14);

  }
}

现在$t是一个数组,包含复选框的团队ID。因此,您可以在您的SQL中保存:T1=$t[1],…

什么不起作用?您使用的是嵌套表单,这是您的代码在这里失败的一个主要原因,这里没有添加任何内容。在created.php中,我有以下内容:*if(isset($\u POST['navn'])&$\u POST['navn']!=“”“{*/if(isset($\u POST['navn']){if($\u POST['name'])=“”“=“”|u POST['T1]==“||$$邮政['T2']==”|$$邮政['T3']==“|$$邮政['T4']==“|$$邮政['T5']=”{我需要$$邮政['TX']=”{的地方根据选中的五个复选框填充table Players T1到T5。为什么PHP代码中有,关闭哪个表单?删除这些行。对不起,我从created.PHP添加了代码。什么不起作用?您使用的是嵌套表单,这是代码在这里失败的一个主要原因,这里有一些东西不起作用。在created.PHP I'v中我们得到了以下结果:*如果(isset($u POST['navn'])和&$u POST['navn']!=”){if(isset($u POST['navn']){if($u POST['name']=”| u POST['T1']=”| u POST['T2']=”|如果(isset($u POST['T3'])=”)=“| POST['T4']=”=”=“| u POST['T4'=”=”=”)=“|如果我需要的话,我会在哪里发邮件['T5'=”根据选中的五个复选框填充table Players T1到T5。为什么PHP代码中有,关闭哪个表单?请删除这些行。对不起,我已从created.PHP添加了代码。谢谢,这有助于标记复选框。但我看不出这如何仅使用5个选中的团队复选框。$行['id'],并将其分为T1、T2、T3、T4和T5……不客气,但是,似乎您接受了错误的帖子作为最佳答案,这可能会让其他搜索模拟解决方案的人感到困惑。@ARN,我已经向您投票,并链接到我的答案。谢谢,这有助于我标记复选框。但我看不出这只需要5 c他勾选了团队复选框“.$row['id']”,并将其分为T1、T2、T3、T4和T5……不客气,不过,似乎你接受了错误的帖子,认为这是最佳答案,这可能会让其他搜索类似解决方案的人感到困惑。@ARN,我已经向你投了赞成票,并链接到了我的答案。