我需要在我的数据输入页面上添加另一个下拉菜单,并想出了一种在两个表格中显示日期的方法,但它在每个表格中都加倍了,即艺术家下拉菜单显示:
将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 个没有关系的表连接在一起,因此它正在创建多行,匹配 artists
和 contributors
,以及 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/