2013-07-23 23 views
-1

我在votes_allvotes.tpl.php中拥有语句if(isset($votes))变量存在但if语句否认其存在

如果我在该语句之前检查同一行上的值,它会告诉我该值为2,但由于某种原因,if语句拒绝承认这一点。

也尝试如果($投票> 0),没有工作。我在2页上使用它,而在另一页上它工作正常,虽然这个页面上没有任何内容会与此有任何冲突(删除页面上的所有内容,但它仍然无效)。 21和Virtuemart 1.1.6

下面是代码:

<div class="rating" style="margin: 0px 0px 15px -9px"> 
<?php 
    $product_flypage = $_SERVER['REQUEST_URI']; 
    echo ps_reviews::allvotes($product_flypage); 
?> 

ps_reviews :: allvotes:

function allvotes($product_id) { 
    if (strstr($product_id, '&')) { 
     $arr = explode('&amp;', $product_id); 

     $pro_arr = explode('=', $arr[2]); 
     $cat_arr = explode('=', $arr[3]); 

     $product_id = $pro_arr[1]; 
     $category_id = $cat_arr[1]; 
    } 
    global $db; 
    $tpl = new $GLOBALS['VM_THEMECLASS'](); 
    $dbc = new ps_DB; 
    $q = "SELECT votes, rating FROM #__{vm}_product_votes " 
     . "WHERE product_id='$product_id' "; 
    $dbc->query($q); 

    $votes = $dbc->f("votes"); 
    $rating = $dbc->f("rating"); 

    if($votes != 0) 
     $tpl->set('votes', $votes); 
    $tpl->set('rating', $rating); 
    $tpl->set('product_id', $product_id); 
    $tpl->set('category_id', $category_id); 
    return $tpl->fetch('common/votes_allvotes.tpl.php'); 
} 

votes_allvotes.tpl.php(其中实际问题):

if (isset($votes)) { ?> 
<img src="<?php echo VM_THEMEURL ?>images/stars/<?php echo $rating ?>.gif" align="middle" border="0" alt="<?php echo $rating ?> stars" />&nbsp; 
<?php echo $VM_LANG->_('PHPSHOP_TOTAL_VOTES').": ". $votes; 
} 
else { 
    if (!empty($my->id)) { 
    if($_GET['flypage']){ 
     echo "<li class='reviews'><a href='javascript:void(0)' style='color:#000;'><b>Wees de eerste om een recensie te schrijven!</b></a></li>"; 
    }else{ 
    echo "<a href='/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=". $product_id ."&category_id=". $category_id ."&option=com_virtuemart&Itemid=1&lang=nl&review=yes'><b>Wees de eerste om een recensie te schrijven!</b></a>"; 
    } 
    }else { 
    echo $VM_LANG->_('PHPSHOP_REVIEW_LOGIN'); // Login to write a review! 
    } 
} 
+6

您能否澄清一下您的问题,因为我发现有点难以看到您的问题 –

+0

$ tpl-> fetch实际上做了什么? – Anigel

+0

方法,你需要阅读'变量作用域',并且如果(并且仅当)不能帮助'global'构造。您的问题/代码组合的唯一方式是,如果您在其范围之外(全局)检查局部变量($ votes)。 –

回答

0

isset可能不会回到你所期望的。

$votes = 0; 

if(isset($votes)){ 

    echo 'Ooer missus ...'; 

} 

我不知道,但也许你想...

if((int)$votes > 0){ 

    echo 'well you got at least one vote ...'; 

} 

总之,如果你期待一个条件不这样做,那么

的var_dump()

那可变的页面或日志文件并检查它。

更好的是,在编写条件测试之前检查它。

+0

好的,如果我使用die(var_dump($ votes)),那么这个值是字符串2,如果我只使用var_dump($ votes)的值为NULL,那么我没有想法什么发生了xD – Akano