我正在開發一個定製的joomla組件,該組件只需將兩個字段(id,points)添加到數據庫的點表... id是主鍵,我試圖將其設置爲與用戶joomla相同用戶ID ...爲什麼這些簡單的更新和插入SQL函數無法正常使用我的PHP查詢?
我需要一個函數,返回的點數爲用戶&另一種更新的用戶指向給定值...我成功創建了第一個名爲:
getUserPoints()
它返回給定用戶的點數...然後我開始了第二個更新函數:
updateUserPoints()
這是當前「不一致」的部分,我認爲我錯了......我只是想做一個簡單的函數來更新當前用戶的積分值......並且!還我嘗試的,如果有他們沒有記錄處理的情況下......然後創建一個....我通過使updateUserPoints內的()函數調用的函數這樣做:
newUserCheck()
這是應該檢查用戶是否有積分,然後回覆true或false:
$db->setQuery("SELECT points FROM #__mytable WHERE id = '".$user->id."'");
$db->query();
$points = $db->loadResult();
if($points){
return false;
} else {
return true;
}
然後或者更新創建新記錄或更新現有的...這段代碼幾乎可以工作!...它在三次測試中對我有用......但是當我添加第二個用戶時,它似乎有點不一致。 ..它會創建一個新的用戶成功,給他們5分....然後當我再次運行它來更新它說「點更新」,但它似乎並沒有實際更新數據庫中的點值?!
與一個或沒有現有的用戶似乎工作正常!無論如何...打開建議...我相信有一堆我在這裏做錯了,但我希望得到它正常工作!我是新來的MVC編程,你可能會說:P
這裏是在整體上控制的Joomla!
<?php defined('_JEXEC') or die('');
// userprofilepoints CONTROLLER
jimport('joomla.application.component.controller');
jimport('joomla.user.helper');
class userprofilepointsController extends JController {
function getUserPoints(){
$values = JRequest::get("post");
$userIdNumber = $values['userIdNumber'];
$user = & JFactory::getUser();
$db = JFactory::getDBO();
$db->setQuery("SELECT points FROM #__mytable WHERE id = '".$user->id."'");
$db->query();
$points = $db->loadResult();
echo $points;
}
function updateUserPoints(){
function newUserCheck(){
$values = JRequest::get("post");
$userIdNumber = $values['userIdNumber'];
$user = & JFactory::getUser();
$db = JFactory::getDBO();
$db->setQuery("SELECT points FROM #__mytable WHERE id = '".$user->id."'");
$db->query();
$points = $db->loadResult();
if($points){
return false;
} else {
return true;
}
}
if(newUserCheck() == false){
$values = JRequest::get("post");
$userIdNumber = $values['userIdNumber'];
$newPointsAmount = $values['newPointsAmount'];
$user = & JFactory::getUser();
$db = JFactory::getDBO();
$db->setQuery("UPDATE #__mytable SET points = '".$newPointsAmount."' WHERE id = '".$user->id."'");
$db->query();
//echo getUserPoints();
//$points = $db->loadResult();
echo "Points Updated";
} else if(newUserCheck() == true) {
$values = JRequest::get("post");
$userIdNumber = $values['userIdNumber'];
$user = & JFactory::getUser();
$db = JFactory::getDBO();
$db->setQuery("INSERT INTO #__mytable SET id = $user->id, points = 5");
$db->query();
echo "New User Created!";
}
}
}
最後我的HTML和JavaScript從視圖....謝謝! ! :)
<?php defined('_JEXEC') or die();
// MAIN PAGE TEMPLATE
jimport('joomla.user.helper');
$user = & JFactory::getUser();
$profile = JUserHelper::getProfile($user->id);
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('#updateBTN').click(function(){
updateUserPoints();
});
function getUserPoints(){
//Post the following to the controller
$.post('http://www.mysite.com/index.php?format=raw&option=com_userprofilepoints&task=getUserPoints', {
userIdNumber: <?php echo $user->id; ?>
}, function(data) {
alert(data);
});
}
function updateUserPoints(){
//Post the following to the controller
$.post('http://www.mysite.com/index.php?format=raw&option=com_userprofilepoints&task=updateUserPoints', {
userIdNumber: <?php echo $user->id; ?>,
newPointsAmount: 555444 //random hardcoded points amount to test with
}, function(data) {
alert(data);
});
}
});
</script>
<div id="main_block">
<p>Points Page:</p>
<br />
<button id="updateBTN">Trigger Update</button>
</div>
'loadResult()'獲取結果第一行的第一列嗎?如果沒有,你可能需要在檢查之前手動選擇'points'列(比如'$ db-> loadResult()[0] - > points') – Gargron 2013-02-13 23:22:25
我認爲loadResult()獲取第一個結果記錄是。 – DigitalMediaGuy 2013-02-13 23:24:54