php - 使用户能够双击表格文本来输入更改;数据库根据这些更改进行更新

标签 php jquery mysql contenteditable jeditable

CDs.php 中的表数据是从数据库中提取的。单击表标题可对列进行排序。 现在,我希望当用户双击表行中的某些内容以键入其更改时,此页面 (CDs.php) 是可编辑的。例如,用户可以双击“1999年格莱美提名者”并将其更改为“2014年格莱美获奖者”。网站上的此更改会更新数据库内的标题。我不知道如何执行此操作...关于我应该如何解决此问题有任何想法/建议吗?提前致谢。

注意:我希望用户能够输入他们的更改...没有下拉选择选项或类似的内容。

注意:我只希望标题、艺术家和价格可编辑。

注意:我从 --> http://www.dougv.com/2009/06/13/sorting-your-mysql-results-set-in-php-using-jquery-and-a-more-traditional-approach/ 获取可排序的表列

代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Sortable Table Columns</title> 
        <link href="../demo.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="jquery-1.3.1.min.js"></script>
        <script type="text/javascript" src="jquery.tablesorter.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $("#sortedtable").tablesorter({ sortlist: [0,0] });
            });
        </script>
        <style type="text/css">
            #sortedtable thead th {
                color: #00f;
                font-weight: bold;
                text-decoration: underline;
            }
        </style>
    </head>
    <body>
            <?php
            include("include.php"); 
            switch($_GET['c']) {
                case "1":
                    $col = "Title"; 
                    break;
                case "2":
                    $col = "Artist"; 
                    break;
                case "3":
                    $col = "Country"; 
                    break;
                case "4":
                    $col = "Company"; 
                    break;
                case "5":
                    $col = "Price"; 
                    break;                  
                default:
                    $col = "Year"; 
            }

            if($_GET['d'] == "1") {
                $dir = "DESC";
            }
            else {
                $dir = "ASC";
            }

            $dbc = mysql_connect($host, $user, $pass);
            if (!$dbc) {
                echo "Cannot connect to db server";
            }
            elseif(!mysql_select_db("database")) {
                echo "Cannot select database";
            }
            else { 
                if(!$rs = mysql_query("SELECT * FROM CD ORDER BY Title")) { 
                    echo "Cannot parse query";
                }
                elseif(mysql_num_rows($rs) == 0) {
                    echo "No records found";
                }
                else {                             
                    echo "<table id=\"sortedtable\" border='3' class=\"bordered\" cellspacing=\"0\">\n";
                    echo "<thead>\n<tr>";
                    echo "<th bgcolor='#FFFF00'>Title</th>"; 
                    echo "<th bgcolor='#FFFF00'>Artist</th>"; 
                    echo "<th bgcolor='#FFFF00'>Country</th>"; 
                    echo "<th bgcolor='#FFFF00'>Company</th>"; 
                    echo "<th bgcolor='#FFFF00'>Price</th>"; 
                    echo "<th bgcolor='#FFFF00'>Year</th>"; 
                    echo "</tr>\n</thead>\n";
                    while($row = mysql_fetch_array($rs)) {                  
                        echo 
                        "<tr>
                            <td>$row[Title]</td>
                            <td>$row[Artist]</td>
                            <td>$row[Country]</td>
                            <td>$row[Company]</td>
                            <td>$row[Price]</td>
                            <td>$row[Year]</td>
                        </tr>\n";
                    }
                    echo "</table><br />\n";
                }
            } 
        ?>     
    </body>
</html>

CDs.php

enter image description here

数据库:

enter image description here

最佳答案

您可能想看看:Change Label to Textbox on edit hyperlink click

我知道它是用于标签的,但它可以轻松转换为您的外壳。我个人会使用第二个答案中的“更新 1”。

要检测更改,您可能需要检测用户何时按 Enter 键,因此我建议您看一下:Detect enter in input elements of a certain class 完成后,您可以将输入框转换回表格单元格,并对 PHP 页面进行 ajax 调用,然后将值添加到数据库中。

访问此 jquery API 页面以了解有关 ajax 调用的更多信息:http://api.jquery.com/jquery.get/

关于php - 使用户能够双击表格文本来输入更改;数据库根据这些更改进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24660929/

相关文章:

php - 如何通过 PHP/LDAP 检查用户帐户是否被锁定?

javascript - 如何在两个嵌套部分形式之间切换?

mysql - 解释计划在mysql中的含义

mysql - 如何在某些状态更改时排除增加 counter_cache?

php - Codeigniter 访问回显表内的输入类型

php - 我可以将 PHP MySQL 资源变量分配/复制到其他吗?

php - MySql:在子查询中引用父查询获取的数组

jquery - 这个jquery插件有什么问题吗?

jquery - 添加后选择元素

mysql - 从 MySQL 中的文本字段中选择仅数字模式