【问题标题】:PHP Dropdown and databasePHP下拉和数据库
【发布时间】:2016-07-21 13:10:04
【问题描述】:

我是 php 新手。我的表单中有一个下拉菜单,下拉选项来自数据库,我正在尝试将下拉菜单中的选定选项插入到我数据库中的单独表中。查询似乎正在执行,但团队名称值没有被插入到数据库中。这是表单的代码。任何帮助深表感谢!

<form class="form-register" method="POST" enctype="multipart/form-data">
Match Type
  <select class="form-control" name="MatchType" value="Match Type">
<option value="Select one">Select One</option>
<option value="T20">Twenty20 Match</option>
<option value="OneDay">One-Day Match</option>
<option value="Test">Test Match</option> </select>
Home Team
<?php  
mysql_select_db('cricket_system');
$sql = "SELECT TeamName FROM teams";
  echo "<select class='form-control' name='Team1' value='Team1'>";
    while ($row = mysql_fetch_array($result)) {
      echo "<option value='". $row['TeamName']."'>". $row['TeamName']."</option>";
    }
 echo "</select> "; 
 ?> 
  Away Team
  <?php  
mysql_select_db('cricket_system');
    $sql1 = "SELECT TeamName FROM teams";
    $result1 = mysql_query($sql1);
   echo "<select class='form-control' name='Team2' value='Team2'>";
    while ($row = mysql_fetch_array($result1)) {
      echo "<option value='". $row['TeamName']."'>". $row['TeamName']."</option>";
    }
 echo "</select> "; 
 ?>   
   Date (yyyy/mm/dd)
<input type="text" id="Date" name="Date" class="form-control" placeholder="Date (yyyy/mm/dd)" required>
<br><button class="signupbutton" type="submit" name="submit" >Add Match</button> <br> <br>
 </form>
<?php
include('includes/database.php');
mysql_select_db('cricket_system');
if(isset($_POST['submit'])){
 $Team1 = $_POST['Team1'];
 $Team2 = $_POST ['Team2'];
 $MatchType = $_POST['MatchType'];
  $insert = "INSERT INTO matches (Team1, Team2, Date, MatchType) values 
  ('$Team1', '$Team2', '$Date', '$MatchType')";
  $add = mysql_query($insert);
  if ($add) {
      echo "<script>alert('Match has been successfully added.')</script>";
  }
  else {
      echo mysql_error();
  }
}
mysql_close();
?>

【问题讨论】:

标签: php database forms dropdown


【解决方案1】:

第一个下拉列表的 SQL 永远不会被填充,因为永远不会设置 $result 变量,因此 $_POST["Team1"] 是 null 或空/未设置。第一个下拉菜单永远不会起作用。尝试添加以下内容:

$result = mysql_query($sql);

我的建议是添加代码,然后在所有值都在两个团队下拉列表中后再次提交。

作为一个简单的检查,在分配团队名称时执行以下操作

$Team1 = isset($_POST['Team1']) ? $_POST['Team1'] : '';

如果这会在数据库表中为 Team1 插入一个空值,则证明上面的下拉菜单有问题

【讨论】:

  • 如果你看我的代码,我已经有 $result = mysql_query($sql);
  • 还是没看到。 Away Team 有一个 $result1 = mysql_query($sql1);,但 Home Team 没有。
【解决方案2】:

您缺少我在代码中添加的$Date variable

<form class="form-register" method="POST" enctype="multipart/form-data">
Match Type
  <select class="form-control" name="MatchType" value="Match Type">
<option value="Select one">Select One</option>
<option value="T20">Twenty20 Match</option>
<option value="OneDay">One-Day Match</option>
<option value="Test">Test Match</option> </select>
Home Team
<?php  
mysql_select_db('cricket_system');
$sql = "SELECT TeamName FROM teams";
  echo "<select class='form-control' name='Team1' value='Team1'>";
    while ($row = mysql_fetch_array($result)) {
      echo "<option value='". $row['TeamName']."'>". $row['TeamName']."</option>";
    }
 echo "</select> "; 
 ?> 
  Away Team
  <?php  
mysql_select_db('cricket_system');
    $sql1 = "SELECT TeamName FROM teams";
    $result1 = mysql_query($sql1);
   echo "<select class='form-control' name='Team2' value='Team2'>";
    while ($row = mysql_fetch_array($result1)) {
      echo "<option value='". $row['TeamName']."'>". $row['TeamName']."</option>";
    }
 echo "</select> "; 
 ?>   
   Date (yyyy/mm/dd)
<input type="text" id="Date" name="Date" class="form-control" placeholder="Date (yyyy/mm/dd)" required>
<br><button class="signupbutton" type="submit" name="submit" >Add Match</button> <br> <br>
 </form>
<?php
include('includes/database.php');
mysql_select_db('cricket_system');
if(isset($_POST['submit'])){
 $Team1 = $_POST['Team1'];
 $Team2 = $_POST ['Team2'];
$Date= $_POST ['Date'];
 $MatchType = $_POST['MatchType'];
  $insert = "INSERT INTO matches (Team1, Team2, Date, MatchType) values 
  ('$Team1', '$Team2', '$Date', '$MatchType')";
  $add = mysql_query($insert);
  if ($add) {
      echo "<script>alert('Match has been successfully added.')</script>";
  }
  else {
      echo mysql_error();
  }
}
mysql_close();
?>

【讨论】:

  • 您最好只突出显示您修改的几行代码而不是整个代码:)
  • 我原来的代码中有这个,只是不小心在这里漏掉了。还是不行。
  • 为什么$sql没有被执行?
  • @UmairKhan 没有错误,查询应该在警报出现时执行,并且其他字段正在添加到数据库中,只是两个团队在数据库中留空。
  • 你应该从选择标签中删除值
猜你喜欢
  • 2012-08-13
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
相关资源
最近更新 更多