在CakePHP中更新没有表单数据的数据库

时间:2013-11-29 16:01:28

标签: php mysql ajax cakephp

这对你们中的一些人来说可能毫无疑问,但我真的在这个问题上摸不着头脑。我开始使用CakePHP并迷上它但它与常规PHP不同(它们使用一些简写进行大量编码)。无论如何,我在按下按钮时尝试更新我的数据库,而无需用户在表单中输入新数据。目前我正在使用AJAX和一个调用javacript函数的按钮标记。这应该就好像你正在注册一个稍后将被添加到“我的课程”的课程(由数据库中的注册[sic]表填充)。这是AJAX代码:

<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
    document.getElementById("alert").innerHTML=xmlhttp.responseText;
  }
}
xmlhttp.open("POST","/Enrolments/register.php",true);
xmlhttp.send();
}

</script>

事后看来,需要检查IE6及以下版本的if语句似乎很愚蠢,但这只是W3的建议。这就是按钮的内容:

<button onclick="loadXMLDoc()">Register</button>

当然,页面上有一些内容(预览课程的视频)。这就是register.php的样子:

<?php
$user = $this->Session->read('Auth.User');
$id = $user['user_id'];
$this->Status->read(null, $id);
$this->Status->set('course_id', 1);
$this->Status->save();
echo "You are now registered for this course";

?>

我没有添加查找要添加的正确course_id。我只是试图通过为该字段传递“1”来测试它(当前注册[sic]表只有两个列 - user_id和course_id)以查看它是否实际更新数据库。目前,它没有。任何建议都会很棒。

编辑:为了清楚起见,我试图在点击“注册”时使用以下信息更新注册表:user_id =当前user_id,course_id = 1.

1 个答案:

答案 0 :(得分:0)

来自@Guillermo comment这似乎不是cakephp的方法,但是当使用post:

xmlhttp.open("POST","/Enrolments/register.php",true);

您需要at least set this header also

http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

但是如果你能接受简单get的字符限制,那就使用它:

xmlhttp.open("GET","/Enrolments/register.php",true);