如何使用PHP和HTML更新jQuery中的行

如何使用PHP和HTML更新jQuery中的行,php,jquery,mysql,html,row,Php,Jquery,Mysql,Html,Row,我的PHP脚本生成一个带有行的表,可以选择编辑或删除这些行。还可以创建一个新行 我很难弄清楚如何更新通过PHP生成并通过jQuery插入的HTML行。更新后,它必须仍然是可编辑的。HTML被生成为一个div jQuery(插入生成的HTML/等待操作) PHP(生成html) 返回步骤1) (编辑:更正错误并将脚本更改为答案) PHP require_once "../../includes/constants.php"; // Connect to the database as neces

我的PHP脚本生成一个带有行的表,可以选择编辑或删除这些行。还可以创建一个新行

我很难弄清楚如何更新通过PHP生成并通过jQuery插入的HTML行。更新后,它必须仍然是可编辑的。HTML被生成为一个div

  • jQuery(插入生成的HTML/等待操作)

  • PHP(生成html)

  • 返回步骤1)

  • (编辑:更正错误并将脚本更改为答案)

    PHP

    require_once "../../includes/constants.php";
    
    // Connect to the database as necessary
    $dbh = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die("Unaable to connnect to MySQL");
    
    $selected = mysql_select_db(DB_NAME, $dbh) or die("Could not select printerweb");
    
    $action = $_POST['action'];
    $name = $_POST['name'];
    $id = $_POST['id'];
    
    if ($action == "new") {
        mysql_query("INSERT INTO place (id, name) VALUES (NULL, $name)");
    }
    elseif ($action == "edit") {
        mysql_query("UPDATE place SET name = $name WHERE id = $id");
    }
    elseif ($action == "delete") {
        mysql_query("DELETE FROM place WHERE id = $id");
    }
    
    echo "<table><tbody>";
    $result = mysql_query("SELECT * FROM place");
    while ($row = mysql_fetch_array($result)) {
        echo "<tr><td id=" . $row["id"] . " class=inputfield_td><input class=inputfield_place type=text value=" . $row["name"] . " /></td><td class=place_name>" . $row["name"] . "</td><td class=edit>edit</td><td class=cancel>cancel</td><td class=delete>delete</td><td class=save>SAVE</td></tr> \n";
    }
    echo "</tbody>";
    echo "</table>";
    echo "<input type=text class=inputfield_visible />";
    echo "<button class=new>Neu</button>";
    

    将所有事件处理程序放在ajax函数之外,改用
    live()
    方法。在使用ajax时,需要包括要发送的数据。发件人:


    将所有事件处理程序放在ajax函数之外,改用
    live()
    方法。在使用ajax时,需要包括要发送的数据。发件人:


    我认为在将php中的新行附加到div之后,您不会得到用于编辑、删除等的单击事件


    尝试使用jquery live插件在创建新内容时绑定单击事件。请参阅处理类似问题的问题。

    我认为在将php中的新行添加到div后,您不会获得用于编辑、删除等的单击事件

    尝试使用jquery live插件在创建新内容时绑定单击事件。请参考处理类似问题的问题。

    喜欢并指出,live插件可能有用。但是,您的代码中可能还存在一些其他错误:

    首先,您的HTML无效。必须在属性值周围加引号。通过使用反斜杠转义内部引号,可以在引号内执行此操作:

    echo "<input type=\"text\" class=\"inputfield_visible\" />";
    
    echo”“;
    
    由于这看起来不太好,如果您更改以下内容,您可以离开PHP部分,编写纯HTML:

    <?php
        ...
        echo "</tbody>";
        echo "</table>";
        echo "<input type=text class=inputfield_visible />";
        echo "<button class=new>Neu</button>";
    ?>
    
    
    
    对此(IMHO更具可读性):

    其次,这似乎更为重要,在我看来,您似乎有一个SQLInjection漏洞,因为您直接将字段值传递给mysql,而不首先使用。我不太喜欢PHP,所以可能我弄错了,但如果输入
    ,会发生什么--编码到您的输入字段中?

    喜欢并指出,live插件可能很有用。但是,您的代码中可能还存在一些其他错误:

    首先,您的HTML无效。必须在属性值周围加引号。通过使用反斜杠转义内部引号,可以在引号内执行此操作:

    echo "<input type=\"text\" class=\"inputfield_visible\" />";
    
    echo”“;
    
    由于这看起来不太好,如果您更改以下内容,您可以离开PHP部分,编写纯HTML:

    <?php
        ...
        echo "</tbody>";
        echo "</table>";
        echo "<input type=text class=inputfield_visible />";
        echo "<button class=new>Neu</button>";
    ?>
    
    
    
    对此(IMHO更具可读性):


    其次,这似乎更为重要,在我看来,您似乎有一个SQLInjection漏洞,因为您直接将字段值传递给mysql,而不首先使用。我不太喜欢PHP,所以可能我弄错了,但如果输入
    ,会发生什么--
    输入字段?

    当我想创建新行时,JS会对点击事件做出反应,但PHP不会进入数据库。你知道我做错了什么吗?问题解决了!复制了一个MySQL查询,它确实起了作用,现在PHP脚本成功地在数据库中创建了一个条目,JS对单击事件做出了反应,但当我想要创建新行时,PHP没有在数据库中创建条目。你知道我做错了什么吗?问题解决了!复制了一个MySQL查询,该查询确实有效,现在PHP脚本成功地进入数据库。感谢您帮助我使HTML有效!关于SQLinjection漏洞(你把我带到了那里;D),我正在尝试首先建立我的网站,然后我将尝试更正这些错误:)鉴于php文件只是用于AJAX调用,我认为HTML需要“回显”,因为这是传递回调用方的信息?Tim,你的第二个示例不是有效的HTML,因为属性周围缺少引号。应为:echo“”;,或者,回声'@黛利拉:是的,没错。我只是引用了问题中的那一块,但作者同时改变了它。实际上,第三个例子是我推荐的从PHP打印HTML的方法。谢谢你帮助我使我的HTML有效!关于SQLinjection漏洞(你把我带到了那里;D),我正在尝试首先建立我的网站,然后我将尝试更正这些错误:)鉴于php文件只是用于AJAX调用,我认为HTML需要“回显”,因为这是传递回调用方的信息?Tim,你的第二个示例不是有效的HTML,因为属性周围缺少引号。应为:echo“”;,或者,回声'@黛利拉:是的,没错。我只是引用了问题中的那一块,但作者同时改变了它。实际上,第三个例子是我推荐的从PHP打印HTML的方法。介意我问一下PHP的bug是什么吗?只是想知道,因为我不是很擅长PHP。。(:介意我问一下PHP的bug是什么吗?我只是想知道,因为我不是很擅长PHP….:
    <?php
        ...
    ?>
    
    </tbody>
    </table>
    <input type="text" class="inputfield_visible" />
    <button class="new">Neu</button>