【问题标题】:How to allow user update data Database SQL on html page如何允许用户在 html 页面上更新数据数据库 SQL
【发布时间】:2014-11-26 00:53:35
【问题描述】:

我有一个 mySQL 数据库,它存储用户通过下一个表单输入的信息:

<form action="demo.php" method="POST"/>
<p><label>title:</label> <input type="text" name="titre" required/></p>
<p><label>disp: </label>
    Oui&nbsp;<input type="radio" name="disponible" value="1" required/>&nbsp;&nbsp;
    Non&nbsp;<input type="radio" name="disponible" value="0" required/>
</p>
<p><label>Corrected: </label>
    Oui&nbsp;<input type="radio" name="corrige" value="1" required/>&nbsp;&nbsp;
    Non&nbsp;<input type="radio" name="corrige" value="0"required/></p>
<p><label>Notes A:</label> <input type="text" name="notes" /></p>
<p><label>Notes B </label> <input type="text" name="notes2" /></p>
<p><label>N pages </label> <input type="text" name="pages" /></p>
<p><label>Mont: </label>
    Oui&nbsp;<input type="radio" name="monte" value="1" required/>&nbsp;&nbsp;
    Non&nbsp;<input type="radio" name="monte" value="0" required/></p></p>
<p><label>File:</label> <input type="text" name="image" /></p>

$value = $_POST['titre'] ;
$value2 = $_POST['disponible'] ;
$value3 = $_POST['corrige'] ;
$value4 = $_POST['notes'] ;
$value5 = $_POST['notes2'] ;
$value6 = $_POST['pages'] ;
$value7 = $_POST['monte'] ;
$image = $_POST['image'] ;


$sql = "INSERT INTO mode (Titre, Disponible, Corrige, NotesCorr, NotesRed, NPages, Monte, image) VALUES ('$value', '$value2', '$value3', '$value4', '$value5', '$value6', '$value7', '$image')";

if (!mysql_query($sql)) {
    die('Error: ' . mysql_error());
} else {
    header('Location: index.php');
    echo "done";
}

信息被存储并显示在表格中。 (如果需要代码,我会在这里发布)

我不知道该怎么做是让用户编辑已经存储在表中的数据。

例如,用户选择 ID 并编辑他想要的任何内容。

知道我该怎么做吗?

最好的问候。

【问题讨论】:

  • 在表单的隐藏输入元素中发送数据库条目的 ID,使用 UPDATE ... WHERE id = .. 查询。
  • 我建议您阅读并练习如何使用 PHP 创建基本的 CRUD(创建、读取、更新、删除)功能。网上有很多教程。这是我认为可以帮助的一个http://www.startutorial.com/articles/view/php-crud-tutorial-part-1
  • 您的应用程序很容易受到 SQL 注入攻击。 xkcd.com/327
  • 感谢@Nikolas 真的很有帮助!我一直在寻找这种教程,但我不知道我怎么没找到。

标签: php html mysql sql forms


【解决方案1】:

注意:

  • 应该使用 MySQLi,而不是已弃用的 MySQL
  • 为什么在文件上使用input type="text"?让我告诉你如何使用input type="file"

替换你的:

<p><label>File:</label> <input type="text" name="image" /></p>

与:

<p><label>File:</label> <input type="file" name="image" accept=".jpg, .png, .jpeg"/></p>

并将enctype='multipart/form-data' 添加到您的&lt;form&gt;

<form action="demo.php" method="POST" enctype="multipart/form-data"/>

PHP 代码

$allowedExts=array("jpg","jpeg","png");
$temp=explode(".",$_FILES["image"]["name"]);
$extension=end($temp);

    /* START OF FILE UPLOAD */

    if(($_FILES["image"]["size"]<8388608) && in_array($extension,$allowedExts)){

        $image=$_FILES['image']['name']; /* STORE THE FILE NAME TO $image VARIABLE */
        $fullpath="ImageDirectory/".$image; /* CHANGE THE NECESSARY FILE DIRECTORY */
        move_uploaded_file ($_FILES['image']['tmp_name'], $fullpath); /* MOVE FILE TO THE GIVEN DIRECTORY */

    }

$value = $_POST['titre'] ;
$value2 = $_POST['disponible'] ;
$value3 = $_POST['corrige'] ;
$value4 = $_POST['notes'] ;
$value5 = $_POST['notes2'] ;
$value6 = $_POST['pages'] ;
$value7 = $_POST['monte'] ;

$stmt = $mysqli->prepare("INSERT INTO mode (Titre, Disponible, Corrige, Notescorr, NotesRed, Npages, Monte, image) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param('ssssssss', $value, $value2, $value3, $value4, $value5, $value6, $value7, $image);

更多说明:

  • 要进行编辑,您需要提供有关数据库和表的更多信息。
  • 我们需要知道您的mode 表的结构。
  • 您的表格需要有一个唯一的 ID,以便轻松更新表格。

您提供所需信息后,我会立即更新我的答案。

【讨论】:

  • 这没有回答问题。
【解决方案2】:

试试这个可能对你有帮助

在表格中再创建一列,其中数据显示在网页中,将其命名为“编辑”

<tr>Edit</tr>

在编辑栏&lt;td&gt;值使用循环点赞

while($result = mysql_fetch_array($sql))

这里$sql是从你的表中获取所有数据

现在将&lt;a&gt; 链接重定向到您需要查看数据并进行更新的更新页面。

<td><a href = "update.php?id=<?php echo $result[0]?>">Edit</td>

这里$result[0] 表示表的主键列,它将键重定向到下一页,您现在有primary key 来更新表中的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2011-06-05
    相关资源
    最近更新 更多