我正忙于为我的足球队创建一个网站。我遇到的问题是创建一个带有下拉框的web表单来选择和插入匹配数据。我已经能够在phpmyadmin中添加一个匹配项,在那里我可以选择team_home和team_away,这样关系数据库似乎可以工作。
我有以下两张表:
团队
- id(pk-ai)
- 名称
火柴
- id(pk-ai)
- 日期
- team_home(外键->表teams字段名)
- team_away(外键->表teams字段名)
- 记分_主页
- 记分方式
那么,我如何制作一个带有下拉框的web表单,以便将匹配项添加到我的数据库中呢?
更新:
我已经用下拉框处理了表格,但当我提交表格时,我收到了以下错误:
错误:无法添加或更新子行:外键约束失败(
roflz
.matches
,constraintmatches_ibfk_1
foreign key(team_home
)REFERENCESteams
(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))
好吧,你有一个非常基本的问题。我对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>
这将创建下拉框。您需要做的是在"value"中设置您的团队id(使用php),并在"option"标签之间设置团队名称。当您提交表格时,特定选定团队的"价值"将在请求中传递。
好的,试试这个。。
<?
...
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>
但不要忘记将其包装在"form"标记中。
这个问题有点宽泛,在确定结果之前必须涵盖很多内容,它几乎是在询问如何建立一个网站,而这本身可能需要数年的学习时间。也就是说,这两个链接应该给你什么你需要开始。
W3C表单
W3C MySql简介和教程
请注意phpmyadmin后面有多少代码(只需查看其源代码),您会发现没有简单的一键完成。
您可以尝试类似的方法
<?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>
希望这能有所帮助。。:)
错误:无法添加或更新子行:外键约束失败(roflz.matches,constraint matches_ibfk_1 foreign key(team_home)REFERENCES teams(name))
这就是你需要知道的全部,等等。。。。外键约束失败等等。。。。参考团队
您正在更新比赛,但由于比赛使用球队的外键,您无法在不在球队中的比赛中添加内容