2012-08-23 41 views
0

我剛開始學習Jplugin開發,所以在這裏我做了一個小投票腳本。這裏的一切工作正常,但我想conf.php文件在joomla框架樣式。正如你在這裏看到的,1和2個文件完美地結合在一起。我想用第三個例子而不是第二個例子,我使用簡單的PHP代碼。我試圖做的最後一個例子是使用joomla框架,但它不起作用。我不知道該代碼有什麼問題。任何人都可以看出我犯了什麼錯誤,或者遠離正確的做法?Joomla插件數據庫錯誤?這裏有什麼問題?

<?php 
defined('_JEXEC') or die; 
?> 

<?php 
class plgSystemRatingx extends JPlugin 

{ 
    public function onContentBeforeDisplay() 
    { 
?> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() 
{ 
$(".like").click(function() 
{ 
var id=$(this).attr("id"); 
var name=$(this).attr("name"); 
var dataString = 'id='+ id + '&name='+ name; 
$("#votebox").slideDown("slow"); 

$("#flash").fadeIn("slow"); 

$.ajax 
({ 
type: "POST", 
url: "conf.php", 
data: dataString, 
cache: false, 
success: function(html) 
{ 
$("#flash").fadeOut("slow"); 
$("#content").html(html); 
} 
}); 
}); 

$(".close").click(function() 
{ 
$("#votebox").slideUp("slow"); 
}); 

}); 
</script> 
<body> 
<div style="margin:50px"> 
<a href="#" class="like" id="1" name="up">Like</a> -- <a href="#" class="like" id="1" name="down">Dislike</a> 
<div id="votebox"> 
<span id='close'><a href="#" class="close" title="Close This">X</a></span> 
<div style="height:13px"> 
<div id="flash">Loading........</div> 
</div> 
<div id="content"> 
</div> 
</div> 
</div> 
<?php 
     return true; 
    } 
} 

這段代碼工作完全

<?php 
$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 

} 
?> 

,並在所有

<?php 
defined('_JEXEC') or die; 
?> 
<?php 
if(JRequest::getVar('id')) 
{ 

$id = JRequest::getInt('id'); 
$name = JRequest::getInt('name'); 

$db = JFactory::getDbo(); 

$query = $db->getQuery(true); 
$query2 = $db->getQuery(true); 
$queryup = $db->getQuery(true); 
$querydown = $db->getQuery(true); 

$query->update('messages'); 
$query->set("message = 1"); 
$query->where("id = $id"); 

$query2->select('up,down'); 
$query2->from('messages'); 
$query2->where("id = $id"); 



$queryup->select('up'); 
$queryup->from('messages'); 
$queryup->where("id = $id"); 

$querydown->select('down'); 
$querydown->from('messages'); 
$querydown->where("id = $id"); 


$db->setQuery($query); 
$db->query(); 
$db->setQuery($query2); 
$db->query(); 

$db->setQuery($queryup); 
$data0 = $db->query(); 
$db->setQuery($querydown); 
$data1 = $db->query(); 


$up_value= $db->insertid($data0);; 
$down_value = $db->insertid($data1); 

$total=$up_value+$down_value; 

$up_per=($up_value*100)/$total; 
$down_per=($down_value*100)/$total; 

?> 

<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

中的Joomla風格不工作這使得試試這個 $查詢 - >在哪裏( 'ID =' 。$ db-> qn($ id));

+0

我忘記提及這一點,那麼我用第三個例子中,#內容股利不顯示,而在PHP例子顯示的內容。所以問題可能在其他地方,即使數據庫是錯誤的。 – Jonuux

+0

好吧,我發現這是錯誤的。我刪除了所有數據庫的東西,只留下($ _後)在joomla和php文件中的東西。第一個用php編寫的作品,一個用joomla編寫,我認爲是因爲定義了(_JEXEC)。我認爲這段AJAX代碼必須以某種方式改變,或者使用不同的方式來獲取conf.php文件。任何人都可以告訴如何做到這一點? Ajax代碼: $就 ({ 類型: 「POST」, 網址: 「conf.php」, 數據:dataString, 緩存:假的, 成功:功能(HTML) { – Jonuux

+0

嘛數據庫的東西將無法正常工作,因爲你將$ id當作字符串處理,而不是變量名,所以它很好,你把它拿出來了。你如何確定它是否有效? – Elin