2012-04-23 65 views
-1

我有一个与virtmart电子商务相关的PHP/mySQL问题 - 我在VM论坛上问过,但响应速度很慢。php substr被忽略

我使用此代码在产品页面中加载来自同一类别的产品,但它的效果很好;

<?php // find all the other products in this category 
$q = "SELECT p.product_id, p.product_name, c.category_name, c.category_flypage 
    FROM #__{vm}_product p,#__{vm}_product_category_xref pc, #__{vm}_category c 
    WHERE p.product_publish='Y' AND pc.product_id = p.product_id AND pc.category_id = c.category_id AND c.category_id = '$category_id' AND p.product_id != '$product_id' 
    ORDER BY p.product_name "; 
$db = new ps_DB; 
$db->query($q); 
if($db->next_record()) { 
    echo 'Other products in the category "'.$db->f('category_name').'"<br />'; 
    $flypage = $db->f('category_flypage'); 
    $db->reset(); 
    while($db->next_record()) { 
     ?><a href="<?php $sess->purl(URL . "index.php?page=shop.product_details&flypage=$flypage&product_id=" . $db->f("product_id") . "&category_id=$category_id") ?>"><?php $db->p("product_name"); ?></a><br /> 
     <?php 
    } 
} 
?> 

但是,我不能SUBSTR产品名称的输出,如果我把<?php substr($db->p("product_name"), 0 12) ?>的SUBSTR完全被忽略,整个名称仍然输出 - 任何人知道为什么吗?

回答

3

我怀疑$db->p直接打印名称,而不是返回它。 substr..之前您还缺少echo。代码大概应该是这样的:

<?php echo substr($db->f('product_name'), 0, 12) ?> 

在这里,我认为$db->f返回外地的,因为它是如何在代码的其余部分使用的值。

+0

非常感谢您的答复。我尝试过使用回声,但仍然忽略。如何返回值而不是打印它? – 2012-04-23 09:21:55

+0

对不起,我错过了你在说什么,所以我应该改变p - 非常感谢。 – 2012-04-23 09:24:48

2

substr不会向浏览器输出任何内容。输出(echo)调用可能隐藏在$ db对象的方法p或purl中。