2013-11-28 121 views
0

我正在做virtmart比較頁面。我想修改的Joomla \分量\ com_virtuemart \視圖\類別\ TMPL \如default.php文件中這樣說:在Virtuemart中比較產品

<?php 

include ("/includes/compare.php"); 

$con=mysqli_connect("localhost","root","","auto2"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$result = mysqli_query($con,"SELECT * FROM auto_virtuemart_products"); 
?> 
<table border="1" cellspacing="2" cellpadding="2"> 
<tr> 
<td> 
<font face="Arial, Helvetica, sans-serif">Value1</font> 
</td> 
</tr> 

<?php 
while($row = mysqli_fetch_array($result)) { 
?> 

<tr> 
<td> 
<font face="Arial, Helvetica, sans-serif"><?php echo $row['product_sku']; ?></font> 
</td> 
<td> 
<form action="compare.php" method="get"> 
<input type="checkbox" name="send1[]" value="<?php echo $row?>" /> 

</td> 
</tr> 

<?php 
} 
mysqli_close($con); 
?> 

然後我添加compare.php到包括文件夾:

<?php 
    $con=mysqli_connect("localhost","root","","auto2"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    if (isset($_GET['send1'])) { 
     $compare1 = $_GET['send1']; 


if (isset($_GET['Submit'])) { 
    for ($i=0; $i<sizeof($compare1);$i++) { 

    $result = mysqli_query($con,"SELECT * FROM auto_virtuemart_products WHERE '$compare1[$i]' LIKE product_sku"); 

    while($row = mysqli_fetch_array($result)) 
    { 
    echo $row['product_sku'] . " " . $row['product_weight']; 
    echo "<br>"; 
    } 

    } 
    } 
    else { 
    echo ("error"); 
    } 
    } 
    ?> 

一切是功能性的,但當我點擊按鈕提交時發生下一個錯誤:

發生錯誤。 無法找到請求的頁面。

404條未發現

我想到的是問題是,把Joomla將不顯示,如果它沒有被定義爲文章的另一頁。

請不要解決安全問題,我知道他們,我會稍後解決。現在我已經在localhost上啓動了它。

請你能指教我,我該如何解決這個問題?

爲什麼您使用外部頁面,並提交像正常的形式非常感謝您

回答

0

Joomla & VM是MVC所以使用該功能。也不要使用像這樣的mysql函數,使用Joomla DB對象。

我認爲你可以像這樣的工作,

的比較產品VM相關的選項,以便您的虛擬機組件內部創建一個視圖(假設VM2.x)就創建新的視圖相關的控制器和模型。

該視圖有設施添加新的佈局,所以你的比較形式應該是佈局。

和您的表單具有類似下面的內容。 你的表單操作

index.php?option=com_virtuemart&controller=yourcontroller&task=yourtask 

task是你的控制器內的功能。

這可以包括像下面的方法(使用表單動作)。

<input type="hidden" value="com_virtuemart" name="option"> 
<input type="hidden" value="yourcontroller.yourtask" name="task">. 

同樣在你的模型中,你可以使用像下面這樣的DB對象。

$db = JFactory::getDBO(); 
$sql= "your sql query"; 
$db->setQuery($sql); 
$db->query();//This may changed based on Joomla versions. 

希望它的幫助..嘗試遵循Joomla和VM標準。

+0

親愛的何塞,我想我們不太明白。我想使用第一個PHP代碼作爲默認頁面。所以我開始研究一些有關MVC的內容,我想問你是否可以這樣做:我將使用第一個PHP代碼作爲默認佈局。這意味着我將刪除所有查詢,並將其移至Model.php。然後我會創建如果函數在View.php,它將顯示來自數據庫的所有數據或從我的表單中選擇的數據?可以這樣做嗎?或者你能否向我解釋你的想法更詳細?謝謝 – user3014837

+0

你的第一步是正確的,即。你的表單將是一個默認的佈局,(如果它需要預先填充的數據,它應該從view.html.php調用它的模型中的一個函數)。你的表單需要發送一些數據,然後它應該被髮送到你的控制器中的一個函數,控制器將從模型文件中調用一個與數據庫相關的函數。例如,您只需查看虛擬機及其相關控制器和product.php模型文件的默認產品詳細信息頁面。希望它現在清楚 –