如何找出该数据库插入和检索在哪里中断? [英] How to figure out where this database insertion and retrieval is breaking?

查看:74
本文介绍了如何找出该数据库插入和检索在哪里中断?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题已解决...变量未定义.当stackoverflow允许我回答自己的问题时,我将添加完整答案

Problem solved...variable undefined. I will add full answer when stackoverflow allows me to answer own question

更新,firebug告诉我,变量barrister在plugin.php中未定义,但是我确实定义了该变量(或者至少我尝试这样做) 这是未定义的行:if(barrister.attr("value"))

update, firebug is telling me that the variable barrister is undefined in plugin.php but I do define that variable (or at least I try to) this is the line where it's supposedly undefined: if(barrister.attr("value"))

这是我尝试定义的行:var barrister = $('input:radio[name=barrister]:checked').val();

this is the line where I try to define it: var barrister = $('input:radio[name=barrister]:checked').val();

我正在使用带有单选按钮的表单来提交数据.该文件plugin.php应该使用javascript/ajax获取数据,然后将其发送到results.php,以便可以将其插入数据库中.信息也从数据库中检索出来,应该插入到html中.我不知道它在哪里崩溃,但是我确实知道数据库连接本身可以工作.知道如何找到断开的链接吗?当我测试并检查数据库时,其中没有数据.

I'm using a form with a radio button to submit data. The file plugin.php is supposed to get the data using javascript/ajax and then send it to results.php so that it can be inserted into the database. Information's also retrieved from the database and is supposed to be inserted into the html. I can't figure out where it's breaking down, but I do know the database connection itself works. Any idea how I might find out the broken link? When I test it and check the database, there's no data in it.

表格

<form method="post" id="form">  
    <table>  
    <tr>  
        <td><label>Barrister's Exam</label></td>  
        <td><input type="radio" id="barrister" name="barrister" value="1" /> Pass</td>
        <td><input type="radio" id="barrister" name="barrister" value="0" /> Fail</td>  
    </tr>
    <tr>  
        <td>Submit</td>  
        <td><input id="send" type="submit" value="Submit" /></td>  
    </tr>  
    </table>
</form>  

通过plugin.php获取表单数据

function my_function() { ?>

<script type="text/javascript">

$(document).ready(function(){
    //global vars
    var barrister = $('input:radio[name=barrister]:checked').val();
        var loading = $("#loading");
    var messageList = $(".content > ul");

    //functions
    function updateShoutbox(){
        //just for the fade effect
        messageList.hide();
        loading.fadeIn();
        //send the post to shoutbox.php
        $.ajax({
            type: "POST", url: "http://yearofcall.com/wp-content/plugins/myplugin/results.php", data: "action=update",
            complete: function(data){
                loading.fadeOut();
                messageList.html(data.responseText);
                messageList.fadeIn(2000);
            }
        });
    }
    //check if all fields are filled
    function checkForm(){
        if(barrister.attr("value"))
            return true;
        else
            return false;
    }

    //Load for the first time the shoutbox data
    updateShoutbox();

    //on submit event
    $("#form").submit(function(){
        if(checkForm()){
            var barrister = barrister.attr("value");
            //we deactivate submit button while sending
            $("#send").attr({ disabled:true, value:"Sending..." });
            $("#send").blur();
            //send the post to results.php
            $.ajax({
                type: "POST", url: "http://yearofcall.com/wp-content/plugins/myplugin/results.php", data: "action=insert&barrister=" + barrister,
                complete: function(data){
                    messageList.html(data.responseText);
                    updateShoutbox();
                    //reactivate the send button
                    $("#send").attr({ disabled:false, value:"Send" });
                }
             });
        }
        else alert("Please fill all fields!");
        //we prevent the refresh of the page after submitting the form
        return false;
    });
});

</script>
<?php

}

add_action('wp_head', 'my_function');

使用results.php将数据放入数据库"year"的"results"表中.我知道数据库连接有效

putting the data into "results" table of the database "year" with results.php I know the database connection works

<?php
define("HOST", "host");  
define("USER", "user");  
define("PASSWORD", "password");  
define("DB", "year");  

/************************
    FUNCTIONS
/************************/
function connect($db, $user, $password){
    $link = @mysql_connect($db, $user, $password);
    if (!$link)
        die("Could not connect: ".mysql_error());
    else{
        $db = mysql_select_db(DB);
        if(!$db)
            die("Could not select database: ".mysql_error());
        else return $link;
    }
}
function getContent($link, $num){
    $res = @mysql_query("SELECT barrister FROM results ORDER BY date DESC LIMIT ".$num, $link);
    if(!$res)
        die("Error: ".mysql_error());
    else
        return $res;
}
function insertMessage($barrister){
    $query = sprintf("INSERT INTO results(barrister) VALUES('%s');", mysql_real_escape_string(strip_tags($barrister))
));
    $res = @mysql_query($query);
    if(!$res)
        die("Error: ".mysql_error());
    else
        return $res;
}

/******************************
    MANAGE REQUESTS
/******************************/
if(!$_POST['action']){
    //We are redirecting people to our shoutbox page if they try to enter in our shoutbox.php
    header ("Location: index.html"); 
}
else{
    $link = connect(HOST, USER, PASSWORD);
    switch($_POST['action']){
        case "update":
            $res = getContent($link, 100);
            while($row = mysql_fetch_array($res)){
                $result .= "<li><strong>".$row['user']."</strong><img src=\"http://eslangel.com/wp-content/plugins/myplugin/CSS/images/bullet.gif\" alt=\"-\" />".$row['message']." </li>";
            }
            echo $result;
            break;
        case "insert":
            echo insertMessage($_POST['barrister']);
            break;
    }
    mysql_close($link);
}


?>

从数据库中检索到数据时返回的html

 <div id="container">  
        <ul class="menu">  
            <li></li>  
        </ul>  
        <span class="clear"></span>  
        <div class="content">  
            <div id="loading"><img src="http:///></div>  
            <ul>  
            <ul>  
        </div>  
        </div> 

推荐答案

我注意到的第一个错误是您所有的单选按钮都具有相同的ID. ID属性在页面上应该是唯一的.除此之外,用于调试javascript的最佳工具是控制台.

The first error I notice is that all of your radio buttons have the same ID. An ID attribute should be unique on the page. Besides this, the best tool for debugging javascript is the console.

面向初学者的Java调试

编辑

以下是使用您的标记提交ajax表单的示例 http://jsfiddle.net/UADu5/

Here's an example of an ajax form submit using your markup http://jsfiddle.net/UADu5/

$(function(){
  // Submit form via ajax
  $('#check').click(function(){
    var barrister = null
    $.each($("input[name='barrister']:checked"), function(){
      if($(this).val() == 1)
        barrister = $(this).attr('value');
    });
    if(barrister){
      $.ajax({
        type: "POST", url: "http://yearofcall.com/wp-content/plugins/myplugin/results.php", 
        data: "action=insert&barrister=" + barrister,
        complete: function(data){
          messageList.html(data.responseText);
          updateShoutbox();

          //reactivate the send button
          $("#send").attr({ disabled:false, value:"Send" });
        }
      });
    } else {
      alert('Please fill all fields!')
    }

  })
})

<form method="post" id="form">
  <fieldset>
    <legend>Grade Exams</legend>
    <ul>
      <li>
        <p>Barrister's Exam</p>
        <label>
          <input type="radio" name="barrister" value="1" /> Pass
        </label>
        <label>
          <input type="radio" name="barrister" value="0" /> Fail
        </label>
      </li>  
      <li class="submit">
        <input type="button" id="check" value="Test">
      </li>
    </ul>
  </fieldset>
</form>

这篇关于如何找出该数据库插入和检索在哪里中断?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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