php - 如何编辑动态创建的文本框值并将其插入到 MySQL DB?

标签 php javascript mysql submit

我的 PHP 项目中的 MySQL DB 中有一堆功能表。我通过 php 获取并使用代码创建一个表,其中包含由列名和照片表中的记录 id 命名的文本框:

functions.php 代码:

function m_html_editPhotos($id) {
$result = "<table class=\"tabelka\" id=\"tbl_photos\"><thead><tr><th>Miniaturka</th><th>Duże zdjęcie</th></tr></thead><tbody>";
$mysqli = m_db_Init();
$qry = "SELECT ID, Img_Min, Img_Nrm FROM tbl_Zdjecie WHERE ID_Grzyb = ?";
if($stmt = $mysqli -> prepare($qry)) {
          $stmt -> bind_param("i", $id);
          mysqli_stmt_bind_result($stmt, $img_id, $img_min, $img_nrm);
          $stmt->execute();
          $i =0;
          while (mysqli_stmt_fetch($stmt)) {
              $i = $i+1;
              $result .= "<tr><td><!--<label>Link do miniaturki:<label>--><input type=\"text\" class=\"required\" name=\"photo[$i][min]\" value=$img_min></td><td><!--<label>Link do zdjęcia pełnego rozmiaru:</label>--><input type=\"text\" class=\"required\" name=\"photo[$i][nrm]\" value=$img_nrm></td><td style=\"display:none;\"><input type=\"text\" name=\"photo[$i][id]\" value=$img_id /></td></tr>";
          }
          $stmt -> close();      
}
mysqli_close($mysqli);
$result .= "</tbody></table><div class=\"link\" onclick=\"AddPhotoEditRow();\">Dodaj kolejne zdjęcie</div>";
return $result;
}

现在我想要编辑照片表,迭代生成的每一行,其中包含缩略图_url (img_min) 和全尺寸链接 (img_nrm) 的文本框) 此外,我想通过函数 AddPhotoEditRow(); 从动态创建的行中添加新行到表中

functions.js 代码:

function AddPhotoEditRow(){
 $('#tbl_photos > tbody:last').append('<tr><td><input type="text" name="photo[0][min]"></td><td><input type="text" name="photo[0][nrm]"></td><td style=\"display:none;\"><input type=\"text\" name=\"photo[0][id]\" value=\"0\" /></td></tr>');
}

edit.php 代码:

include 'functions.php';
if(isset($_POST["change"])) m_db_updateAllFeatures($_GET["id"]);
if (m_db_isAdmin("")){
if (!isset($_GET["id"]) || !is_numeric($_GET["id"]))
    header("Location: ../index.php");
else {
if (isset($_POST["Nazwa_PL"]))
    m_db_UpdateName("PL", $_GET["id"],$_POST["Nazwa_PL"]);
if (isset($_POST["Nazwa_Lac"]))
    m_db_UpdateName("Lac", $_GET["id"],$_POST["Nazwa_Lac"]);
render_edit_body();
    }
}

我想以某种方式迭代照片链接,并通过解析通过 $_POST 传递的文本框名称来更新现有记录,此外最好插入新的照片链接(id=0 的链接)。我将新行的 id 设置为 0,因为我需要区分是插入到表还是更新,对吧?我假设应添加所有 0 索引字段,其余部分应插入。我的概念可能是错误的,如果有更好的方法来实现该表“控件”的全部功能,那么我非常愿意接受建议。

最佳答案

你已经掌握了基础知识,除了

$('#tbl_photo snip snip name="photo[0][min]"> snip snip snip
                                    ^---

0 不应进行硬编码。您告诉 php 在 $_POST 数组中创建一个“照片”值数组,但随后您强制所有条目的索引键为 0,导致后面的条目覆盖前面的条目。

在 Javascript 中记录您插入的这些字段的数量,并使用该计数来增加索引键,例如

$('#tbl_photo snip snip name="photo[' + i + '][min]"> snip snip snip

相反,其中i是字段计​​数。那么就很简单了:

foreach($_POST['photo'] as $i => $photo) {
    echo $photo['min'];
}

获取每个照片字段的最小值。

关于php - 如何编辑动态创建的文本框值并将其插入到 MySQL DB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14381586/

相关文章:

php - 如何找到现有数组的下一个数字索引?

javascript - Mongoose 模块 (NodeJS) 中的 Schema.pre

MYSQL 插入;无效的语法

mysql - 数据库设计 - 一对多关系中的 "special"条目

javascript - JQuery DatePicker 通过 PHP Json 不可用日期

php - 移动网站两个按钮之间的空间

php - 这是哪个中点人物?

javascript - 为什么 Angular 5 Transition 抛出 AppComponent.html :2 ERROR TypeError: Cannot read property 'forEach' of undefined

javascript - 数组如何工作(Javascript)?

php - preg_match_all 之后,如果它在另一行中,如何获取值