簡體   English   中英

根據下拉列表php中的選擇填寫表格

[英]Fill form based on selection in dropdown list php

我對此進行了大量研究,但沒有成功。 因此,我目前正在尋找的是:

  1. 根據數據庫中的表填充下拉列表(已完成)
  2. 從數據庫生成的下拉列表中選擇一個值之后,我希望允許用戶通過自動填充記錄的當前內容並允許他們更改存儲在數據庫中的內容來編輯記錄,或者單擊按鈕刪除記錄。 (不完整)

數據庫對象是相冊,具有以下屬性

+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| AlbumID     | int(11)     | NO   | PRI | NULL    | auto_increment |
| AlbumName   | varchar(75) | YES  |     | NULL    |                |
| Label       | varchar(75) | YES  |     | NULL    |                |
| Genre       | varchar(30) | YES  |     | NULL    |                |
| ReleaseDate | date        | YES  |     | NULL    |                |
| Artist      | varchar(75) | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+

我當前嘗試使用的HTML是這樣的:

<!DOCTYPE HTML>
<html>
<head>
    <title>MyMuzik Library</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="content/site.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script type="text/javascript" src="scripts/mask.js"></script>
    <script type="text/javascript">
        jQuery(function($){
            $("#txtReleaseDate").mask("9999/99/99",{placeholder:"yyyy/mm/dd"});
        });
    </script>
</head>
<body>
<form action="insertAlbum.php" method="post">
    <div class="nav">
        <ul>
            <li><a href="fphome.php">Home</a></li>
            <li><a href="fpsongs.php">Songs</a></li>
            <li><a href="#">Albums</a></li>
        </ul>
    </div>
    <div class="content-container">
    <form action="insertAlbum.php" method="post" autocomplete="off">
        <h1>Albums</h1>
        <h3>This is where you add new albums</h3>
        <div class="form-group">
        <label for="ddlAlbumSelect" id="lblAlbumSelect">Select Album to Edit:</label>
        <div class="form-control">
            <select name="ddlAlbumSelect" id="ddlAlbumSelect">
                <option value="0"> Select Album...</option>
                <?php
                    mysql_connect('localhost', 'root', '1978afc247a');
                    mysql_select_db('finalproject');
                    $sql = mysql_query("SELECT * FROM albums ORDER BY AlbumName");
                    while ($row = mysql_fetch_array($sql)){
                    echo "<option value='" . $row['AlbumID'] . "'>" . $row['AlbumName'] . "</option>";
                    }
                ?>
            </select>
        </div>
        </div>
        <div class="form-group">
        <label for="txtAlbumName" id="lblAlbumName">Album Name:</label>
        <div class="form-control">
            <input type="text" <?php if(ddlAlbumSelect.Value != 0) echo "<p>Selected a value!</p>" ?>  name="txtAlbumName" id="txtAlbumName" />
        </div>
        </div>
        <div class="form-group">
        <label for="txtArtist" id="lblArtist">Artist:</label>
        <div class="form-control">
            <input type="text" name="txtArtist" id="txtArtist" />
        </div>
        </div>
        <div class="form-group">
        <label for="txtLabel" id="lblLabel">Label:</label>
        <div class="form-control">
            <input type="text" name="txtLabel" id="txtLabel" />
        </div>
        </div>
        <div class="form-group">
        <label for="txtGenre" id="lblGenre">Genre:</label>
        <div class="form-control">
            <input type="text" name="txtGenre" id="txtGenre" />
        </div>
        </div>
        <div class="form-group">
        <label for="txtReleaseDate" id="lblReleaseDate">Release Date:</label>
        <div class="form-control">
            <input type="text" name="txtReleaseDate" id="txtReleaseDate" />
        </div>
        </div>
        <input style="margin-left:30px" type="submit" />
</form>
<div class="clearfix"></div>
<br />
    </div>
    <footer>
        <p>MyMuzik Library&copy; <?php echo date("Y"); ?>
    </footer>
</body>
</html>

下面還顯示了引用為insertAlbum.php的表單操作文件:

<html>
<body>


<?php
$con = mysql_connect("localhost","root","1978afc247a");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("finalproject", $con);

$sql="INSERT INTO albums (AlbumName, Label, Genre, ReleaseDate, Artist)
VALUES
('$_POST[txtAlbumName]','$_POST[txtLabel]', '$_POST[txtGenre]','$_POST[txtReleaseDate]','$_POST[txtArtist]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added <br/>";

mysql_close($con)
?>
<a href="<?php echo $_SERVER['HTTP_REFERER']; ?>"><< Back</a>
</body>
</html>

我嘗試使用AJAX,但未成功,只是在正確的方向上尋求幫助! 謝謝。

您至少應該提供了您的Ajax努力。 無論如何,以下是我的答案。 我已將我的解釋放入評論表中。

基於所選專輯的不利文本字段:

$(document).on("change", "#ddlAlbumSelect", function(){ /* WHEN AN ALBUM HAS BEEN SELECTED */

  var albumid = $(this).val(); /* GET THE ID OF THE SELECTED ALBUM */

  $.ajax({ /* START OF AJAX */
    type: "POST", /* METHOD TO USE TO PASS THE DATA */
    url: "getalbum.php", /* THE FILE WHERE WE WILL PROCESS THE PASSED DATA */
    data: {"albumid": albumid}, /* DATA TO BE PASSED */
    dataType: "json", /* TYPE OF DATA THAT WILL BE RETURNED FROM getalbum.php */
    success: function(result){ /* GET RETURNED DATA FROM getalbum.php */
      /* BELOW WILL POPULATE THE CORRESPONDING TEXT FIELDS IN YOUR FORM */
      $("#txtAlbumName").val(result.albumName);
      $("#txtArtist").val(result.artist);
      $("#txtLabel").val(result.label);
      $("#txtGenre").val(result.genre);
      $("#txtReleaseDate").val(result.releaseDate);
    } /* END OF GETTING THE RETURNED DATA FROM getalbum.php */
  }); /* END OF AJAX */

});

然后是getalbum.php

/* ESTABLISH CONNECTION */
$con = new mysqli("localhost", "root", "1978afc247a", "finalproject");

/* CHECK CONNECTION */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$stmt = $con->prepare("SELECT txtAlbumName, txtLabel, txtGenre, txtReleaseDate, txtArtist FROM albums WHERE AlbumID = ?");
$stmt->bind_param("i", $_POST["albumid"]);
$stmt->execute();
$stmt->bind_result($albumname, $label, $genre, $releasedate, $artist);
$stmt->fetch();
$stmt->close();

echo json_encode(array("albumName" => $albumname, "label" => $label, "genre" => $genre, "releaseDate" => $releasedate, "artist" => $artist"));

不要使用不推薦使用的 mysql_* API,而要使用mysqli_*PDO

更新專輯:

我以為您正在嘗試更新所選的專輯? 為什么您的表單要insertAlbum.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM