【发布时间】:2017-05-17 18:32:08
【问题描述】:
我有 hound_view.php,它根据搜索/过滤条件显示记录。当用户点击一行时,会显示一个模态框,其中包含一个用于编辑猎犬信息的表单,我希望根据点击的行预先填充该表单。
当 hound_view.php 中的一行被点击时 hound_record_click_event.js 将其 data-id 发送到查询数据库的 fill_hound_records.php每行数据都分配一个变量,然后传递给 edit_hound_records.php
中的模式我的问题是,当我点击任何一行时,我只会获取第一行的数据来填充,但在 fill_hound_records.php 我回显变量以确保每一行都在捕获它的正确信息,它是。
请注意:此代码易受SQL injection 攻击,请勿直接复制。您应该使用mysqli 或PDO 准备好的语句和this post 中所述的绑定参数。
hound_view.php
<tbody class="clickable-row" data-toggle="modal" data-target="#editModal" data-id="<?php echo $row['RegNumber'] ?>">
hound_record_click_event.js
$(window).ready(function() {
//bind the event using jquery not the onclick attribute of the button
$('.clickable-row').on('click', updateClick);
});
function updateClick() {
var dataid = $(this).data("id");
$.ajax ({
type: 'POST',
url: "fill_hound_record.php",
data: { dataid : dataid },
success: function( result ) {
alert(result);
}
});
};
fill_hound_record.php
<?php
//include database configuration file
include('db.php');
$hounddataid = $_POST["dataid"];
//get rows
$prefillsql = "SELECT * FROM Hounds WHERE RegNumber = '$hounddataid'";
$prefillquery = mysqli_query($con,$prefillsql)or die(mysql_error());
$prefillnumrows = mysqli_num_rows($prefillquery);
if($prefillnumrows > 0){
while($row = mysqli_fetch_array($prefillquery)){
$prefillbreed = $row['Breed'];
$_SESSION['pfbreed'] = $prefillbreed;
$prefillregnumber = $row['RegNumber'];
$_SESSION['pfregnumber'] = $prefillregnumber;
echo $_SESSION['pfregnumber'];
}}
?>
edit_hound_record.php
<input type="text" class="form-control" id="regnumber" name="regnumber" placeholder="Reg Number" value="<?php echo $_SESSION['pfregnumber']; ?>">
【问题讨论】:
-
您的代码容易受到SQL injection 攻击。您应该使用mysqli 或PDO 准备好的语句和this post 中描述的绑定参数。
-
谢谢亚历克斯,我知道并计划回去纠正这个问题,因为这是我的第一个生产规模的 mysql/php 项目,我正在学习很多东西。
-
“计划回去” 不要养成这样想的坏习惯。从一开始就写正确,不需要额外的努力。
-
虽然我同意,但我最初并没有知识,否则我一开始就会这样做,因此我说我打算回去。
标签: php jquery mysql json ajax