比较Virtuemart中的产品

时间:2013-11-28 18:53:02

标签: php mysql joomla virtuemart

我在virtmart中做比较页面。我想以这种方式修改joomla \ components \ com_virtuemart \ views \ category \ tmpl \ default.php文件:

<?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上启动它。

请您指点一下,我该如何解决这个问题?

非常感谢

1 个答案:

答案 0 :(得分:0)

为什么您使用外部网页并像普通表单一样提交。

Joomla&amp; VM是MVC所以使用这些功能。也不要使用像这样的mysql函数,使用Joomla DB对象。

我认为你可以这样工作,

比较产品是VM相关选项,因此在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标准。