使用表单元素多次更新数据库

Posted

技术标签:

【中文标题】使用表单元素多次更新数据库【英文标题】:Update Database multiple times with form elements 【发布时间】:2012-10-08 09:37:34 【问题描述】:

我一直在为一个医生办公室工作。我很擅长 html/CSS 和一些 php,但我仍在尝试学习 javascript/JQuery。

所以描述我的问题的最简单方法(至少对我来说,我的问题非常复杂)是使用图像(如果这不是描述这个问题的最佳方式,请告诉我,我会描述它更详细):

我有一个 PHP 代码,它接受传递给它的值(即位置编号)并将位置编号与用户的时间一起插入到数据库中。

这是 PHP 代码:

<?php
  date_default_timezone_set('America/Denver');

  $apptid = $_REQUEST['apptid'];
  $currentlocation = $_REQUEST['currentlocation'];
  $currentlocationstart = date("Y-m-d H:i:s"); 

  /*** mysql hostname ***/
  $hostname = '******';

  /*** mysql username ***/
  $username = '***********';

  /*** mysql password ***/
  $password = '***************';


  $conn = new PDO("mysql:host=$hostname;dbname=sv", $username, $password);
  /*** The SQL SELECT statement ***/
  $sql = "UPDATE schedule SET currentlocation = ?, currentlocationstart = ? WHERE apptid= ? ";

  $q = $conn->prepare($sql);
  $q->execute(array($currentlocation,$currentlocationstart, $apptid));

?>

这里是 html 代码(其中填充了一点 php,用于填充):

$sql = "SELECT * FROM locations order by patientlocation ASC";

echo "<td><select name=location>";
foreach ($dbloc->query($sql) as $row2)
    
    echo "<option>".$row2['patientlocation']."</option>";
    
            echo "<option value='Check Out'>Check Out</option>";
    echo "</select></td>";

所以我遇到的问题是如何使用 Javascript/JQuery 执行此操作,以及我的 php 是否可以使用 Javascript/Jquery。我还想存储从最初的“签入”按钮到用户点击签出时的所有内容。

另一个问题是我需要使用 AJAX 自动执行此操作,而不是多次刷新页面。

非常感谢大家的帮助。如果我没有很好地解释我的问题,请告诉我,我会填写更多详细信息!

【问题讨论】:

使用 jQuery,查看change 方法 一个非常有趣的业务交互。在我尝试回答之前,我想知道您是否有不想将所有签到存储在数据库中的原因。我与许多客户一起发现,这种类型的数据在未来可能是有益的。帮助他们解决运营效率低下的问题。 @TimWithers,谢谢,我会看看。 @BrianVanderbusch,实际上你有一个非常好的观点。我会改变我的问题。 【参考方案1】:

首先只是一个简短的问题,您是否可以将字段变成一个表单而不是让它们在更改时消失?

这样,当他们点击签入时,您可以让表单出现并填写,当他们在表单底部按下结账时,我们可以使用 AJAX 提交表单并显示回复。

所以应该是这样的:

<script type="text/javascript">
$(document).ready(function() 
    // Hide the form on load      
    $('#myForm').hide();
    // Hide the completed message
    $('#finished').show();
);

// When someone clicks checkin this function will be called
$('#checkIn').click(function()
    $e = $(this);
    $.ajax(
        type: "POST",
        url: "[URL OF PHP PAGE HERE]", // this page should add date to the database
        data: "checkIn="+$(this).val(), // This will send $_POST['checkIn']
        success: function()
           // Display the form once the AJAX is finished 
           $('#myForm').show();
        
    );
);

// This function will be called when someone uses the select field
$('.[yourClassName]').change(function()
    $e = $(this);
    $.ajax(
        type: "POST",
        url: "[URL OF PHP PAGE HERE]",
        data: "yourFieldName="+$(this).val(),
        success: function()
           // Display the form once the AJAX is finished 
           alert('Done');
        
    );
);

// When someone clicks checkOut this function will be called
$('#checkOut').click(function()
    $e = $(this);
    $.ajax(
        type: "POST",
        url: "[URL OF PHP PAGE HERE]", // this page should save data to db
        data: "example="+$('select#exampleId').val(), 
        success: function()
           // Hide the form again 
           $('#myForm').hide();
           // Show the finished div with your success msg
           $('#finished').show();
        
    );
);
</script>

<input type="button" value="Check In" id="checkIn" />
<form method="post" id="myForm" action="">
    // Build the rest of your form here
    <select name="example" id="exampleId">
        <option value="1">Test</option>
    </select>

    <input type="button" value="Check Out" id="checkOut" />
</form>
<div id="finished" style="color:#ff0000;">Checked Out</div>

应该就是这样,除非您当然需要在我的示例所在的位置构建自己的表单。使用您将 AJAX 发送到的 PHP 页面,它应该是一个常规的 PHP 页面,它接受 $_POST 数据,就像您正常发布表单时一样。

【讨论】:

我应该提到,这种方式将在加载时隐藏表单,当您单击签入时,它将签入发送到您的 php 页面(用于加载到数据库中)并显示表单。当您单击结帐时,它将再次隐藏表单并显示结帐消息。 不应该像这样格式化 POST 数据:data: key: value 非常感谢您的回答。我会尝试并回复你 @MistaJosh,这看起来只在您签入或签出时更新数据库?当您更改选择/下拉位置时,是否也可以更新数据库? 如果你想这样做,你需要给你的选择字段一个类名,并让另一个像上面那样的 jquery 函数发生 onchange。我会更新我的答案

以上是关于使用表单元素多次更新数据库的主要内容,如果未能解决你的问题,请参考以下文章

Jqgrid使用表单模式添加/更新/删除

Oracle Forms 10g,多次插入和更新不起作用

SQL更新查询引发语法错误[关闭]

不断更新 GUI 表单元素,使表单不会挂起

通过 Jquery 使用 Ajax 调用函数/数据库更新

Android UI更新中 ImageView使用setBackgroundResource多次更新图片失效