我在mySQL中有两个表。
Table: Player
-----------------------------------------------------------
| name | T1 | T2 | T3 | T4 | T5 | id | weeknumber |
|--------|----|-----|-----|-----|-----|-----|-------------|
| | | | | | | | |
| | | | | | | | |
-----------------------------------------------------------
Table: Teams
-------------------------------------------------------------------------
| id | team1name | team2name | team1score | team2score | weeknumber |
|------|-----------|-----------|-------------|------------|-------------|
| | | | | | |
| | | | | | |
-------------------------------------------------------------------------
这个想法是,表“团队”正在通过另一个已经适合我的页面填充。 每周将有13个新团队。
表“播放器”必须从另一个页面填充,其中用户可以获得以下选项:
用户应该检查13个团队中的5个(自由选择),并且这些复选框的值(团队ID的ID)应该与文本中的名称一起存储为T1,T2,T3,T4,T5 -field。
<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>
编辑: 我的created.php包含以下内容:
if (isset($_POST['navn']) && $_POST['navn'] != "") {
if (isset($_POST['navn'])) {
if ($_POST['name'] == "" || $_POST['T1'] == "" || $_POST['T2'] == "" || $_POST['T3'] == "" || $_POST['T4'] == "" || $_POST['T5'] == "") {
echo 'XX';
}
} else {
require 'config.php';
$conn = Connect();
$name = $conn->real_escape_string($_POST['navn']);
$match1 = $conn->real_escape_string($_POST['kamp1']);
$match2 = $conn->real_escape_string($_POST['kamp2']);
$match3 = $conn->real_escape_string($_POST['kamp3']);
$match4 = $conn->real_escape_string($_POST['kamp4']);
$match5 = $conn->real_escape_string($_POST['kamp5']);
$WeekNumber = date('W');
$query = "INSERT into Spillere (navn,kamp1,kamp2,kamp3,kamp4,kamp5,ugenummer) VALUES('" . $name . "','" . $match1 . "','" . $match2 . "','" . $match3 . "','" . $match4 . "','" . $match5 . "','" . $WeekNumber . "')";
$success = $conn->query($query);
if (!$success) {
die("Couldn't enter data: ".$conn->error);
echo "Thanks";
}
}
}
我需要$_POST['TX']==""
将表Player T1填充到T5。
答案 0 :(得分:2)
未设置复选框的name属性。 PHP无法获取有关已选中复选框的任何信息(除非您应该使用Jquery来做其他一些事情)。重要的是要知道在POST数据中只能看到已选中的复选框。
为您的复选框命名,例如:
echo '<input class="btn" type="checkbox" name="team_checkbox_'.$row['id'].'"> ';
然后在脚本created.php中发布了您的数据,您可以通过运行相同的SQL查询并尝试
来捕获这些值if(isset($_POST['team_checkbox_'.$row['id']])){
// $row['id'] is checked
}
或者只检查所有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],...
答案 1 :(得分:0)
应该回顾这个答案,但解决方案在另一个答案: https://stackoverflow.com/a/47162431/1589379
您发布的代码存在很多小问题。最终,您应始终非常小心地保持所有内容正确缩进,并始终使用括号{}
,即使它们不需要。
您的原始代码:
while (...) {
if ($rows % 1 == 0)
$count++;
应该是:
while (...) {
if ($rows % 1 == 0) {
$count++;
}
这些调整会使您的代码在</form>
循环中有两个结束while
标记,并且没有开始标记。