php - 从多个表格数据输入页面填充下拉列表

标签 php mysql select

我需要在我的数据输入页面上添加另一个下拉菜单,并想出了一种在两个表格中显示日期的方法,但它在每个表格中都加倍了,即艺术家下拉菜单显示:

将N加到X
将 N 添加到 X
空气
空气
阿蒙·托宾
阿蒙·托宾
等等

贡献者下拉菜单显示:

乔布洛
乔布洛
迪克瓦德
迪克瓦德
等等

这是我将表格数据加倍的地方:

SELECT artists.id, artists.artists_name, contributors.id, contributors.contributors_name FROM artists, contributors ORDER BY artists.artists_name, contributors.contributors_name";

这里是上下文:

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO news (artistid, contributorid, title, blog_entry, rating) VALUES (%s, %s, %s, %s, %s)",
                   GetSQLValueString($_POST['artistid'], "text"),
                   GetSQLValueString($_POST['contributorid'], "text"),
                   GetSQLValueString($_POST['title'], "text"),
                   GetSQLValueString($_POST['blog_entry'], "text"),
                   GetSQLValueString($_POST['rating'], "text"));

mysql_select_db($database_em, $em);
$Result1 = mysql_query($insertSQL, $em) or die(mysql_error());

$insertGoTo = "add_post.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_em, $em);
$query_listPosts = "SELECT artists.id, artists.artists_name, contributors.id, contributors.contributors_name FROM artists, contributors ORDER BY artists.artists_name, contributors.contributors_name"; 
$listPosts = mysql_query($query_listPosts, $em) or die(mysql_error());
$row_listPosts = mysql_fetch_assoc($listPosts);
$totalRows_listPosts = mysql_num_rows($listPosts);
?>

这是我在页面中呈现它的方式:

<p>
<label for="artistid">Artist:</label>
</p>
<p><select name="artistid">
<option value="0">Not registered</option>
<?php
do {  
?>
<option value="<?php echo $row_listPosts['id']?>"><?php echo $row_listPosts['artists_name']?></option>
<?php
} while ($row_listPosts = mysql_fetch_assoc($listPosts));
$rows = mysql_num_rows($listPosts);
if($rows > 0) {
  mysql_data_seek($listPosts, 0);
  $row_listPosts = mysql_fetch_assoc($listPosts);
}
?>
</select></p>
<p>
<label for="contributorid">Contributor:</label>
</p>
<p><select name="contributorid">
<option value="0">Not registered</option>
<?php
do {  
?>
<option value="<?php echo $row_listPosts['id']?>"><?php echo $row_listPosts['contributors_name']?></option>
<?php
} while ($row_listPosts = mysql_fetch_assoc($listPosts));
$rows = mysql_num_rows($listPosts);
if($rows > 0) {
  mysql_data_seek($listPosts, 0);
  $row_listPosts = mysql_fetch_assoc($listPosts);
}
?>
</select></p>

虽然我现在可以使用这个加倍,但当我向我的数据输入页面添加更多下拉菜单时,它会成为一个问题,所以任何我如何解决这个问题的想法,以便每个下拉菜单只有一个数据实例加倍将不胜感激。

最佳答案

这是由您的查询引起的。您将 2 个没有关系的表连接在一起,因此它正在创建多行,匹配 artistscontributors,以及 id' s 正在合并。

我在 http://sqlfiddle.com/#!2/d7962/2/0 创建了这个问题

这是我的建议-

将 1 个查询更改为 2 个查询,并且为了简化代码,将 do-while 循环更改为 while() 循环

查询-

$query_Artists = "SELECT id, artists_name FROM artists ORDER BY artists_name";
$query_Contributors = "SELECT id,contributors_name FROM contributors ORDER BY contributors_name"; 
$listArtists = mysql_query($query_Artists, $em) or die(mysql_error());
$listContributors = mysql_query($query_Contributors, $em) or die(mysql_error());

下拉菜单-

<p>
<label for="artistid">Artist:</label>
</p>
<p><select name="artistid">
<option value="0">Not registered</option>
<?php
if(mysql_num_rows($listArtists) > 0) {
while ($artist_dropdown = mysql_fetch_assoc($listArtists)) {  
?>
<option value="<?php echo $artist_dropdown['id']?>"><?php echo $artist_dropdown['artists_name']?></option>
<?php
}
}
?>
</select></p>
<p>
<label for="contributorid">Contributor:</label>
</p>
<p><select name="contributorid">
<option value="0">Not registered</option>
<?php
if(mysql_num_rows($listContributors) > 0) {
while ($contributors_dropdown = mysql_fetch_assoc($listContributors)) {  
?>
<option value="<?php echo $contributors_dropdown['id']?>"><?php echo $contributors_dropdown['contributors_name']?></option>
<?php
}
}
?>
</select></p>

关于php - 从多个表格数据输入页面填充下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13571439/

相关文章:

php - 无法设置 PHP $_SESSION 变量

php - 使用 PHP 向 MySql 表插入字段

MYSQL触发器根据其他列更新具有相同列的列

mysql - 在不带 "where"的连接上使用索引

mysql - 按不同日期选择数据组并获取组中的第一个和最后一个数据

mysql - 选择特定日期的最新版本

javascript - 当 onfocus 设置选择大小时,Google Chrome 会崩溃

php - 作为输出的数据计数

javascript - 动态添加的表单字段不会发布到服务器

php - 以表号形式给出数据库中的数据