我有一个基于用户输入动态生成的表,在某些情况下,行有文本字段,我想在MySql数据库中保存用户在文本字段中更新的值。 e.g:
实际代码:
echo "<tr><td>".$sql3[0]."</td><td>".$row1[2]."</td>
<td><input type='text' class='span1' value='".$recieved."'/>
</td><td>".$status."</td></tr>";
简化示例:
//some user input e.g Microsoft
Table:
item quantity received
Windows 7 1000 'textfield'
Office 2007 200 nothing required
Windows 8 20000 'textfield'
现在我想保存在文本字段中输入的值并在数据库中更新它们。问题是我不知道如何定义id
(文本字段的id),可以使用javascript读取,以便我知道我正在谈论的是哪个文本字段。
任何建议都会有所帮助。
答案 0 :(得分:3)
您的输出应如下(仅用于 的换行符 - 不能用于实际代码)
var .= '<tr class="someClass">';
var .= '<td>'.$row["item"].'</td>';
var .= '<td>'.$row["quantity"].'</td>';
var .= '<td>';if(!empty($row["received"])){ var .= '<input type="text" value="'.$row["received"].'" id="'.$row['id'].'" />'; }else{ var.= '<input type="text" value="default_value" id="'.$row['id'].'"/>'; }
var .= '</td>';
var .= '</tr>';
return var;
现在使用jQuery的AJAX函数来传递'row'的值ID。
$(".someClass input").live('keypress', function(e){
var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13){ // if we pressed enter
e.preventDefault(); // stop the default submission behavior
var ourId = this.id;
var updatedText = $(this).val();
$.ajax({
type: 'POST',
url: 'path/to/my/update/file.php',
data: 'id='+ourId+'text='+updatedText,
success: function(data){
//our post to the file was successful.
//The file returns data and that data is available as an object.
//We declare it as 'data' in the success: function(data) string.
$("#someContainer").append(data); //append our data returned to #someContainer
}
});
}
});
现在我们已经将输入字段的ID(也与我们想要更新的行直接关联)传递给我们的PHP文件,我们可以解析所需的数据并使用它来相应地更新数据库。
<?php
//include our sql.connect file
$ourId = $_POST['id'];
$updatedText = $_POST['text'];
$q = mysql_query("UPDATE 'our_table' SET received='".$updatedText."' WHERE id = ".$ourId);
?>
我希望这就是你想要的。
编辑1 - 按用户请求
var .= '<td>'; //open the data cell
//the below line checks to see if the row 'received' is **NOT** a empty database result
if(!empty($row["received"])){
//our row is not empty, change the value of the input field to our $row['received'] value
var .= '<input type="text" value="'.$row["received"].'" id="'.$row['id'].'" />';
}else{
//our row was empty, or our row returned null. either way, we use "default_value" as our value, which will literally print as a textbox with the words default_value in it.
var.= '<input type="text" value="default_value" id="'.$row['id'].'"/>';
}
var . = '</td>'; //close the data cell
编辑2
更改为反映仅由PHP文件中的行生成的唯一类。还更改了按键功能的选择器,以仅反映在我们唯一生成的行中的输入。
答案 1 :(得分:1)
在HTML中添加名称:
<input type='text' class='span1' name="received[]" value='".$recieved."'/>
PHP中的:
$received = $_REQUEST['received']
print_r($received);
你会知道该怎么做。
或者,您可以执行received[$id]
,其中$id
是该行的主要标识符。
答案 2 :(得分:-2)
你可以尝试
item_id mediumint(8)
甚至int
这将足够长但你还需要usr_id或dunno,如果你已经考虑到这已经足够了。