2012-09-16 29 views
0

我創建了簡單的ajax投票插件,它工作正常..直到我開始在conf.php文件中使用joomla方法。下面的文件是conf.php與簡單的PHP數據庫查詢,如果我把這裏例如$ dbb = JRequest :: getDbo();它停止工作..或任何其他joomla方法。我不明白這裏有什麼問題嗎?使用joomla方法停止文件在插件中工作

$.ajax 
({ 
type: "POST", 
url: "plugins/system/ratingx/conf.php", 
data: dataString, 
cache: false, 
success: function(html) 
{ 

conf.php:

<?php 
define('_JEXEC', 1) or die; 
defined('_JEXEC') or die; 

$mysql_hostname = "localhost"; 
$mysql_user = "px"; 
$mysql_password = "px"; 
$mysql_database = "jum"; 
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) 
or die("Opps some thing went wrong"); 
mysql_select_db($mysql_database, $bd) or die("Opps some thing went wrong"); 


if($_POST['id']) 
{ 
$id=mysql_real_escape_string($_POST['id']); 
$name=mysql_real_escape_string($_POST['name']); 


mysql_query("update messages set $name=$name+1 where id='$id'"); 


$result=mysql_query("select up,down from messages where id='$id'"); 
$row=mysql_fetch_array($result); 
$up_value=$row['up']; 
$down_value=$row['down']; 
$total=$up_value+$down_value; 

$up_per=($up_value*100)/$total; 
$down_per=($down_value*100)/$total; 
?> 
<div style="margin-bottom:10px"> 
<b>Ratings for this blog</b> (<?php echo $total; ?> total) 
</div> 
<table width="700px"> 

<tr> 
<td width="30px"></td> 
<td width="60px"><?php echo $up_value; ?></td> 
<td width="600px"><div id="greebar" style="width:<?php echo $up_per; ?>%"></div></td> 
</tr> 

<tr> 
<td width="30px"></td> 
<td width="60px"><?php echo $down_value; ?></td> 
<td width="600px"><div id="redbar" style="width:<?php echo $down_per; ?>%"></div></td> 
</tr> 

</table> 

<?php 

} 
+0

woah ...首先,你使用的是什麼版本的Joomla?其次,如果您遵守Joomla文件和編碼標準,則不需要手動連接到數據庫,如果您尚未擁有這些標準,我建議您執行此操作。你應該閱讀關於連接到Joomla數據庫的文檔,這將有助於保持代碼的清潔和簡化。 '$ db =&JFactory :: getDBO();'是你應​​該研究的東西;) – Lodder

回答

0

不知道是什麼版本的Joomla!你正在使用,但...

問題是,你正在調用一個文件,存在「外部」的Joomla!框架,只是因爲你定義了_JEXEC並不意味着框架被加載。

爲了能夠使用JRequest甚至JFactory::getDBO()您還需要初始化Joomla!的前端應用程序並加載所需的框架/類。這樣做可能會使您的網站出現安全問題。

我建議你create a basic component與適當的AJAX/RAW控制器,您的插件可以通過默認的Joomla!路徑(即index.php)。

如果你確實想通過Joomla!應用程序,然後看看你的Joomla版本的主要index.php給你一個指南,以瞭解如何加載應用程序框架。

p.s. JRequest::getDBO()無效,getDBO()不是JRequest(任何版本)的方法