2012-04-23 15 views
-1

virtuemart eコマースに関連する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

返信いただきありがとうございます。私はエコーで試したが、それはまだ無視されます。印刷する代わりに値を返すにはどうすればよいですか? –

+0

申し訳ありませんが、私があなたが言っていたことのポイントを逃したので、私はpをfに変更すべきです - 多くのありがとう。 –

2

substrはブラウザに何も出力しません。出力(エコー)呼び出しはおそらく$ dbオブジェクトのメソッドpまたはpurlに隠されています。

関連する問題