0

我正忙着为我的足球队创建一个网站。我遇到的问题是创建一个带有下拉框的 Web 表单来选择和插入匹配数据。我已经能够在 phpmyadmin 中添加一个匹配项,我可以在其中选择 team_home 和 team_away,因此关系数据库似乎可以工作。

我有以下两张桌子:

团队

  • 身份证 (pk - ai)
  • 姓名

火柴

  • 身份证 (pk - ai)
  • 日期
  • team_home(外键 -> 表团队字段名称)
  • team_away(外键 -> 表团队字段名称)
  • score_home
  • score_away

那么如何制作带有下拉框的 Web 表单,以便将匹配项添加到我的数据库中呢?

更新:

我的表单可以使用下拉框,但是在提交表单时出现以下错误:

错误:无法添加或更新子行:外键约束失败 ( roflz. matches, CONSTRAINT matches_ibfk_1FOREIGN KEY ( team_home) REFERENCES teams( name))

我已经发布了我的提交表单代码和 insertmatch.php 代码

提交表单代码

$sql="SELECT id, name FROM Teams";
$result=mysql_query($sql);

$options="";

while ($row=mysql_fetch_array($result)) {

$id=$row["id"];
$name=$row["name"];
$optionshometeam.="<OPTION VALUE=\"$id\">".$name;
$optionsawayteam.="<OPTION VALUE=\"$id\">".$name;
}
?>

<form action="insertmatch.php" method="post">
<SELECT NAME=Teams>
<OPTION VALUE=0>Home Team
<?=$optionshometeam?>
</SELECT> 
<SELECT NAME=Teams>
<OPTION VALUE=0>Away team
<?=$optionsawayteam?>
</SELECT>
Score Home team: <input type="text" name="score_home" />
Score Away team: <input type="text" name="score_away" />
Match Date: <input type="text" name="score_away" />
<input type="submit" />
</form>

insertmatch.php 代码

mysql_select_db("roflz", $con);

$sql="INSERT INTO matches (team_home, team_away, score_home, score_away, date)
VALUES
('$_POST[team_home]','
$_POST[team_away]','
$_POST[score_home]',' 
$_POST[score_away]'
$_POST[date]')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Match added";

mysql_close($con);
?>

那么是什么导致了这个错误呢?

错误:无法添加或更新子行:外键约束失败(roflz.matches,CONSTRAINT matches_ibfk_1 FOREIGN KEY (team_home) REFERENCES teams (name))

4

4 回答 4

3

好吧,你有非常基本的问题。我对php不太了解,但我可以建议你一些你可以执行的合乎逻辑的事情。

<select>
  <option value="t1">Team 1</option>
  <option value="t2">Team 2</option>
  <option value="t3">Team 3</option>
  <option value="t4">Team 4</option>
</select> 

这将创建下拉框。您需要做的是在“值”和“选项”标签之间的团队名称中设置您的团队 ID(使用 php)。当您提交表单时,特定选定团队的“价值”将在请求中传递。

好的试试这个..

<?
...
mysql cnx code
...

$sql="SELECT id, name FROM Teams";
$result=mysql_query($sql);

$options="";

while ($row=mysql_fetch_array($result)) {

    $id=$row["id"];
    $name=$row["name"];
    $options.="<OPTION VALUE=\"$id\">".$name;
}
?>
...
html code
...

<SELECT NAME=Teams>
<OPTION VALUE=0>Choose
<?=$options?>
</SELECT> 

但不要忘记将其包装在“表单”标签中。

于 2012-04-04T16:55:57.143 回答
2

这个问题有点宽泛,在确定结果之前必须解决很多问题,它几乎是在问如何建立一个网站,而这本身可能需要数年时间来学习。也就是说,这 2 个链接应该为您提供开始所需的内容。

W3C 表格

W3C MySql介绍和教程

请注意 phpmyadmin 背后有多少代码(只需浏览其源代码),您会发现没有简单的 1 单击方式来完成它。

于 2012-04-04T17:29:56.133 回答
0

你可以尝试类似的东西

<?php
$db = "database_name";
$con = mysql_connect("localhost","username","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db($db, $con);

$query = "SELECT * FROM YOUR_TABLE";
$result = mysql_query($query);
?>

此外,在您的 html 正文部分中,在您的表单中,您可以使用它来生成下拉框

<select>
<?php
while($info = mysql_fetch_array($result)){
$name = $info["table_column_name"];
echo '<option value="'.$name.'">'.$name.'</option>';
}
?>
</select>

希望这可以帮助..:)

于 2012-04-04T17:52:14.433 回答
0

错误:无法添加或更新子行:外键约束失败(roflz.matches,CONSTRAINT matches_ibfk_1 FOREIGN KEY (team_home) REFERENCES teams (name))

这就是您需要知道的全部内容,等等等等......外键约束失败等等......参考团队

您正在更新比赛,但由于比赛使用球队的外键,您无法在比赛中添加不在球队中的内容

于 2012-04-05T09:27:32.960 回答