AJAX PHP数据库查询不工作 [英] AJAX PHP Database query not working

查看:91
本文介绍了AJAX PHP数据库查询不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图学习AJAX,但它是不会这么好。在我的网站可以根据用户要求的培训。一旦提交请求时的导师应该能够管理从这个页面的请求。然而试图以索赔的请求时,AJAX的不正常,没有任何错误。

  • 的内部HTML不改变
  • 在该数据库条目不会更改
  • 我知道PHP文件正在运行,因为我有previously收到错误

PHP / HTML /使用Javascript / AJAX

 <表类=侧边栏的风格=宽度:50%;>
    < TR>百分位>我打开请求< /第i;< / TR>
    < D​​IV ID =myopen>
    < PHP
        如果(!空($ myopen)){
            的foreach(myopen $为$要求){
                $日期=日期(F DŸ - 嘎',$要求['提交']);
                回声'< TR>< TD>'。$要求['VID']'。 - '。$要求['型'。 - '。$要求['意见'。 - '。$日期。'< / TD>< / TR>';
            }
        }
        其他{
            回声'< TR>< TD>无< / TD>< / TR>';
        }
    ?>
    < / DIV>
< /表>

<表类=侧边栏的风格=宽度:50%;>
    < TR>百分位>我关闭请求和LT; /第i;< / TR>
    < PHP
        如果(!空($ myclosed)){
            的foreach($ myclosed为$要求){
                $日期=日期(F DŸ - 嘎',$要求['提交']);
                回声'< TR>< TD>'。$要求['VID']'。 - '。$要求['型'。 - '。$要求['意见'。 - '。$日期。'< / TD>< / TR>';
            }
        }
        其他{
            回声'< TR>< TD>无< / TD>< / TR>';
        }
    ?>
< /表>

<表类=侧边栏的风格=宽度:50%;>
    < TR><第i个无人认领的请求和LT; /第i;< / TR>
    < D​​IV ID =无人认领>
    < PHP
        如果(!空($无人认领)){
            的foreach($无人认领为$要求){
                $日期=日期(F DŸ - 嘎',$要求['提交']);
                的$ id = $请求['身份证'];
                $ NAME ='$这 - >登记处>的getData('名字')。 这 -  $>登记处>的getData('姓')。';
                回声'< TR>< TD>'。$要求['VID']'。 - '。$要求['型'。 - '。$要求['意见'。 - '。$日期。 < A HREF =的onclick =索赔&GT(,'$名字。''的$ id。');权利要求1所述; / A>< / TD>< / TR>';

            }
        }
        其他{
            回声'< TR>< TD> NONE:)< / TD>< / TR>';
        }
    ?>
    < / DIV>
< /表>
<表类=侧边栏的风格=宽度:50%;>
    < TR><第i个请求日志< /第i;< / TR>
    < PHP
        如果(!空($声称)){
            的foreach($声称为$要求){
                回声'< TR>< TD>'的print_r($要求)'< / TD>< / TR>。
            }
        }
        其他{
            回声'< TR>< TD>无< / TD>< / TR>';
        }
    ?>
< /表>
<脚本>
    功能声称(ID,姓名){
        VAR XMLHTTP =新XMLHtt prequest();
        xmlhttp.onreadystatechange =功能(){
            如果(xmlhttp.readyState == 4和&安培; xmlhttp.status == 200){
                的document.getElementById(myopen)的innerHTML = xmlhttp.responseText。
            }
        };
        xmlhttp.open(POST,/lib/AJAX/trainingRequestManage.php,真正的);
        xmlhttp.setRequestHeader(内容型,应用程序/ x-WWW的形式urlen codeD);
        xmlhttp.send(ID =+编号+&放大器;名称=+姓名);
    }
< / SCRIPT>
 

trainingRequestManage.php

 < PHP
的$ id = $ _ POST [ID];
的$ id = $ _ POST [名称];

包括('http://www.ivaoxa.org/config/db.php');

$ SQL =更新trainingRequests SET教练='$名字。WHERE ID =$ ID。

// prepare声明
$语句= $ DB-> prepare($ SQL);

//执行查询
$ stmt->执行();

回声测试;
 

db.php中

 < PHP
$ DB =新PDO('mysql的:主机=本地主机,数据库名= XX;字符集= UTF8','XX','XX');
$ DB->的setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);
$ DB->的setAttribute(PDO :: ATTR_EMULATE_ prePARES,假);
 

解决方案

除非 http://www.ivaoxa.org/config/db.php 供应作为纯文本文件中的以下行是永远不会工作:

 包括('http://www.ivaoxa.org/config/db.php');
 

更多信息: http://php.net/manual/en/function.include .PHP

I am attempting to learn AJAX, but it is not going so well. On my site users can request training. Once the request is submitted instructors should be able to manage the request from this page. However when trying to "claim" a request, the AJAX does not function correctly, with no errors.

  • The inner html does not change
  • The database entry is not changed
  • I know the php file is being run as I had previously received errors

PHP/HTML/Javascript/AJAX

<table class="sidebar" style="width:50%;">
    <tr><th>My Open Requests</th></tr>
    <div id="myopen">
    <?php
        if(!empty($myopen)){
            foreach($myopen as $request){
                $date = date('F d Y - gA', $request['submitted']);
                echo '<tr><td>'.$request['vid'].' - '.$request['type'].' - '.$request['comments'].' - '.$date.'</td></tr>';
            }
        }
        else{
            echo '<tr><td>NONE</td></tr>';
        }
    ?>
    </div>
</table>

<table class="sidebar" style="width:50%;">
    <tr><th>My Closed Requests</th></tr>
    <?php
        if(!empty($myclosed)){
            foreach($myclosed as $request){
                $date = date('F d Y - gA', $request['submitted']);
                echo '<tr><td>'.$request['vid'].' - '.$request['type'].' - '.$request['comments'].' - '.$date.'</td></tr>';
            }
        }
        else{
            echo '<tr><td>NONE</td></tr>';
        }
    ?>
</table>

<table class="sidebar" style="width:50%;">
    <tr><th>Unclaimed Requests</th></tr>
    <div id="unclaimed">
    <?php
        if(!empty($unclaimed)){
            foreach($unclaimed as $request){
                $date = date('F d Y - gA', $request['submitted']);
                $id = $request['id'];
                $name = "'".$this->registry->getData('firstname').' '.$this->registry->getData('lastname')."'";
                echo '<tr><td>'.$request['vid'].' - '.$request['type'].' - '.$request['comments'].' - '.$date.' <a href="" onclick="claim('.$id.','.$name.')">Claim</a></td></tr>';

            }
        }
        else{
            echo '<tr><td>NONE :)</td></tr>';
        }
    ?>
    </div>
</table>
<table class="sidebar" style="width:50%;">
    <tr><th>Request Log</th></tr>
    <?php
        if(!empty($claimed)){
            foreach($claimed as $request){
                echo '<tr><td>'.print_r($request).'</td></tr>';
            }
        }
        else{
            echo '<tr><td>NONE</td></tr>';
        }
    ?>
</table>
<script>
    function claim(id, name){
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("myopen").innerHTML = xmlhttp.responseText;
            }
        };
        xmlhttp.open("POST", "/lib/AJAX/trainingRequestManage.php", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send("id="+id+"&name="+name);
    }
</script>

trainingRequestManage.php

<?php
$id = $_POST["id"];
$id = $_POST["name"];

include('http://www.ivaoxa.org/config/db.php');

$sql = "UPDATE trainingRequests SET trainer='".$name."' WHERE id=".$id;

// Prepare statement
$stmt = $db->prepare($sql);

// execute the query
$stmt->execute();

echo 'test';

db.php

<?php
$db = new PDO('mysql:host=localhost;dbname=xx;charset=utf8', 'xx', 'xx');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

解决方案

Unless http://www.ivaoxa.org/config/db.php is served as a plain file the following line is never going to work:

include('http://www.ivaoxa.org/config/db.php');

More info: http://php.net/manual/en/function.include.php

这篇关于AJAX PHP数据库查询不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆