我有许多 HTML 输入,这些输入由准备好的 sql 语句填充。 sql 结果插入到 input
的值属性中。我的问题是:当我编辑输入字段的文本时(在浏览器中,就像每个用户都会做的那样),输入字段中的文本会发生变化,但是当我通过 $_POST["id of the inputfield"]
读取此输入的值时我得到了准备好的sql的值。
例如
- SQL 输出
TextFromSQL
进入 ID 为Input
的输入字段 - 用户将输入字段文本更改为
TextFromMe
- PHP 获取
$_POST["Input"]
字符串TextFromSQL
我发现(通过 Google Chrome -> Console -> Elements)输入的值属性没有改变,但用户可以看到的文本发生了变化。
代码(groups/group_edit.php)
这是用户可以选择他想要编辑的组的第一页。
echo'
<div class="modul_padding_scroll">
<script>
$(".submit_edit_group_1").click(function() {
var $this = $(this);
$.post("groups/group_edit2.php",
{
group_id: $this.attr("group_id")
},
function(data) {
$(".ajax_response").html(data);
}
);
});
</script>
<span class="modul_span_title">Edit a group</span><br><br>
<div class="ajax_response2"></div>
<div class="ajax_response"></div>
<table class="table_standard">
<tr>
<th class="th_titlebar" colspan="4">All groups</th>
</tr>
<tr>
<th class="th_subtitle" style="width:5%;">ID</th>
<th class="th_subtitle" style="width:20%;">Group</th>
<th class="th_subtitle">Description</th>
<th class="th_subtitle" style="width:10%;">Edit</th>
</tr>';
$ergebnis = mysqli_query($db, "SELECT group_id, group_name, group_desc FROM groups ORDER BY group_id");
while ($row = mysqli_fetch_object($ergebnis)) {
echo'
<tr>
<td class="td_contentbar">'.$row->group_id.'</td>
<td class="td_contentbar">'.$row->group_name.'</td>
<td class="td_contentbar">'.$row->group_desc.'</td>
<td class="td_contentbar">
<button class="inputbutton submit_edit_group_1" group_id="'.$row->group_id.'">Edit</button>
</td>
</tr>
';
}
echo' </table>
</div>';
代码(groups/edit_group2.php)
在此文件中,用户获取他在第一个文件中选择的组的名称和描述。这些值进入输入字段,他可以在其中编辑这些值。
$input_group_id = $_POST["group_id"];
$sql = $db->prepare("SELECT group_id, group_name, group_desc FROM groups WHERE group_id = ?");
$sql->bind_param('i', $input_group_id);
if ($sql->execute()) {
$sql->store_result();
$sql->bind_result($group_id, $group_name, $group_desc);
$sql->fetch();
echo'
<script>
$(".submit_edit").click(function() {
$.post("groups/group_edit3.php",
{
group_id: $("#group_id").val(),
group_name: $("#group_name").val(),
group_desc: $("#group_desc").val()
},
function(data) {
$(".ajax_response2").html(data);
}
);
});
</script>
<input type="text" maxlength="50" disabled value="'.$group_id.'">
<input type="hidden" maxlength="50" id="group_id" value="'.$group_id.'">
<input type="text" maxlength="50" id="group_name" value="'.$group_name.'" required></td>
<input type="text" maxlength="50" id="group_desc" value="'.$group_desc.'" required></td>
<input class="submit_edit" type="submit" value="Edit Group"></td>
';
}
第二个 PHP 文件的代码 (groups/edit_group3)
$input_group_id = $_POST["group_id"];
$input_group_name = $_POST["group_name"];
$input_group_desc = $_POST["group_desc"];
echo $input_group_id.'<br>';
echo $input_group_name.'<br>';
echo $input_group_desc.'<br>';
exit;
更新1
我替换了<input type="submit"...
现在有 <button class="inputbutton submit_edit">Edit group</button>
更新2
我添加了第一页的代码(edit_group.php)
更新3
我认为问题出在group_edit.php
之间和 group_edit2.php
因为如果我只取group_edit2.php
并操纵它起作用的后变量。
最佳答案
HTML 表单:喜欢有 name
字段。你的没有
<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
PHP 文件包含:
<html>
<body>
Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>
</body>
</html>
请注意,它使用与提交一起提供的输入字段的名称
。
关于php - 带有 PHP 变量和准备好的 sql 的输入字段不可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31614553/