0

嘿伙计们,我有以下示例。我有一个从 mySQL 数据库加载的导航,其中包含一个名为getNavi.php的 PHP 文件:

$query="SELECT * FROM projects WHERE category=\"$category\"";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();

while ($row = mysql_fetch_object($result)) {
    $title=$row->title;
    $id=$row->id;
    echo "<div class=\"sublink\" data-subsite=\"$id\" data-category=\"$category\" data-title=\"$title\" ><a href=\"#\">$title<br />";
}

这些链接已正确加载并通过 AJAX 处理:

$(document).ready(function(){
    $('.link').click(function(){
        var subsite = $(this).data('subsite');
        $('#naviLeftContent').load('php/getNavi.php?category='+subsite);
    });
    $(document).on("click", ".sublink", function(){
        var subsite = $(this).data('subsite');
        var category = $(this).data('category');
        var title = $(this).data('title');
        var info = category + "/" + title;
        var lower = info.toLowerCase();
        var nospaces = lower.split(' ').join('');
        $('#titleContent').text(title);
        $('#imageContent').load('php/getImages.php?info='+nospaces);
        $('#textContent').load('php/getText.php?id='+subsite);
        $('#infosContent').load('php/getInfos.php?id='+subsite);
    });
});

这部分是它开始出现问题的地方,因为我的 div 的内容有时只是部分加载或根本不加载。文本没有被剪切,但大部分标题和信息没有加载。有时会发生信息切换,而我一直重复单击同一链接

问题是在我加载的所有 PHP 文件中,我打开和关闭了一个 SQL 连接。现在,作为一名 Java 程序员,我认为为我可以调用的成员函数的连接创建一个类会很好。当然我想到了一个单例对象,但是当我创建这样的 PHP 文件时,我不知道如何调用这些方法:

<?php
class DBConnection {

  private static $instance;

  private function __construct() {
    $user="root";
    $password="";
    $database="klb";
    mysql_connect("localhost",$user,$password);
    @mysql_select_db($database) or die( "Unable to select database");  
 }

  public function __destruct() {
      mysql_close();
 }

  public static function getInstance() {

    if(!self::$instance) {
      self::$instance = new self();
    }

    return self::$instance;
  }

  public function getNaviForCategory($category) {
    $query="SELECT * FROM projects WHERE category=\"$category\"";
    $result=mysql_query($query);
    $num=mysql_numrows($result);
    while ($row = mysql_fetch_object($result)) {
        $title=$row->title;
        $id=$row->id;
        echo "<div class=\"sublink\" data-subsite=\"$id\" data-category=\"$category\" data-title=\"$title\" ><a href=\"#\">$title<br />";
    }
  }

 public function getInfosForProject($id) {
    $query="SELECT * FROM projects WHERE id=\"$id\"";
    $result=mysql_query($query);
    $num=mysql_numrows($result);

    while ($row = mysql_fetch_object($result)) {
        $infos=$row->info;
        echo $infos;
    }
  } 

   private function createTableProjects(){
        $query="CREATE TABLE projects (id int(6) NOT NULL auto_increment,category varchar(30) NOT NULL,title varchar(30) NOT NULL,
        info varchar(200) NOT NULL,text varchar(8000) NOT NULL,PRIMARY KEY (id),UNIQUE id (id))";
        mysql_query($query);
   }
}

?>

我现在需要对这行代码进行一些替换:

$('#infosContent').load('php/getInfos.php?id='+subsite);

编辑 :

我用以下代码解决了这个问题:

<?php
require_once( 'dbconnection.php');
$category = $_GET["category"];
DBConnection::getInstance()->getNaviForCategory($category);
?>

但似乎我的子链接 div 的点击监听器(上面提到过)并不总是将正确的变量传递给 php 代码。

 $('#titleContent').text(title);

例如,这行代码仅在我选择另一个类别时才有效。

4

1 回答 1

1

可能在 getNavi.php 而不是旧代码

$category = intval($_GET['category']);
DBConnection::getInstance()->getNaviForCategory($category);
于 2012-07-31T18:07:57.083 回答