2012-04-23 63 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中。