1

データ入力ページに別のプルダウンを追加して、両方のテーブルに日付を表​​示する方法を考え出す必要がありましたが、それぞれで2倍になっています。つまり、アーティストプルダウンに次のように表示されています。

NをXに追加NをX に
追加
AirAirAmon
TobinAmonTobin など。


そして、コントリビュータープルダウンが表示されています:

ジョーブロー
ジョーブロー
ディックワッド
ディックワッド
など

ここで、テーブルデータを2倍にしました。

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倍にすることはできますが、データ入力ページにプルダウンを追加すると問題になるので、各プルダウンに2倍にするのではなく、データのインスタンスが1つだけになるようにこれを修正する方法を考えてみてください。感謝します。

4

1 に答える 1

1

これは、クエリが原因です。関係のない 2 つのテーブルを結合しているため、複数の行が作成され、 と が一致しartists、がマージされています。contributorsid

私は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>
于 2012-11-26T20:30:55.287 に答える