0

私は自分のサッカー チームのウェブサイトを作成するのに忙しくしています。私が問題を抱えているのは、一致データを選択して挿入するためのドロップダウン ボックスを備えた Web フォームを作成することです。team_home と team_away を選択するだけで phpmyadmin に一致を追加できるので、リレーショナル データベースが機能しているようです。

次の2つのテーブルがあります。

チーム

  • id (pk - ai)
  • 名前

マッチ

  • id (pk - ai)
  • 日にち
  • team_home (外部キー -> テーブル team フィールド名)
  • team_away (外部キー -> テーブル team フィールド名)
  • スコアホーム
  • スコアアウェイ

では、データベースに一致を追加できるように、ドロップダウン ボックスを含む 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 team (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> 

これにより、ドロップダウンボックスが作成されます。あなたがする必要があるのは、「value」にチームID(phpを使用)を設定し、 「option」タグの間にチーム名を設定することです。フォームを送信すると、選択した特定のチームの「価値」がリクエストで渡されます。

OK、これを試してみてください。

<?
...
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」タグで囲むことを忘れないでください。

于 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 team (name))

これはあなたが知る必要があるすべてです、何とか何とか....外部キー制約は何とか何とか失敗します....参照チーム

試合を更新していますが、試合はチームへの外部キーを使用するため、チームにない試合に何かを追加することはできません

于 2012-04-05T09:27:32.960 に答える