Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CakePHP中更新没有表单数据的数据库_Php_Mysql_Ajax_Cakephp - Fatal编程技术网

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

在CakePHP中更新没有表单数据的数据库,php,mysql,ajax,cakephp,Php,Mysql,Ajax,Cakephp,对你们中的一些人来说,这可能是一个不需要动脑筋的问题,但我对这一点真的很挠头。我开始使用CakePHP,并迷上了它,但它不同于普通的PHP(他们使用一些速记来编写很多代码)。无论如何,当按下按钮时,我试图更新我的数据库,而不让用户在表单中输入新数据。目前我正在使用AJAX和一个调用JavaScript函数的按钮标记。这就好像您正在注册一个稍后将添加到“我的课程”中的课程(由数据库中的注册[sic]表填充)。这是AJAX代码: <script> function loadXMLDoc(

对你们中的一些人来说,这可能是一个不需要动脑筋的问题,但我对这一点真的很挠头。我开始使用CakePHP,并迷上了它,但它不同于普通的PHP(他们使用一些速记来编写很多代码)。无论如何,当按下按钮时,我试图更新我的数据库,而不让用户在表单中输入新数据。目前我正在使用AJAX和一个调用JavaScript函数的按钮标记。这就好像您正在注册一个稍后将添加到“我的课程”中的课程(由数据库中的注册[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>

函数loadXMLDoc()
{
var-xmlhttp;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“警报”).innerHTML=xmlhttp.responseText;
}
}
open(“POST”,“/Enrolments/register.php”,true);
xmlhttp.send();
}
事后看来,需要检查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";

?>

我没有添加要添加的正确课程id的查找。我只是想通过为该字段传递一个“1”(目前注册[sic]表只有两列-user_id和course_id)来测试它,看看它是否真的会更新数据库。目前,情况并非如此。任何建议都很好

编辑:为了清楚起见,我试图在单击“注册”时使用以下信息更新注册表:用户id=当前用户id,课程id=1。

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

xmlhttp.open("POST","/Enrolments/register.php",true);
您需要:

但是,如果你可以接受一个简单的
get
的字符限制,就使用它:

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

这很奇怪,你说你使用CakePHP,但你还说你向“/Enrolments/register.php”发出请求,这是错误的。在CakePHP(以及所有的MVC框架)中,您可以调用控制器/操作Hey Guillemo,如下所述,我已经尝试调用控制器/操作。我把它改为“register.php”,因为我想我可能错过了CakePHP的一些东西(我还是很新的)?你能从
EnrolmentsController::register()
中访问
$this->request->data
吗?在CakePHP中,你不能像那样调用php文件,你应该调用一个控制器/action。我试过使用register.ctp(也在enrolments controller中定义)和“GET”,但它仍然不起作用。当然,它也不起作用!无法请求视图,视图由控制器渲染。看一看不,我不是说函数中的代码是“register.ctp”。它只是说“register”,这是在EnrolmentsController中定义的。然而,有一种观点与之相关。我实际上花了大量的时间阅读这本书,尽管我非常感谢你发布一个有用的信息来源!
xmlhttp.open("GET","/Enrolments/register.php",true);