运行出错,显示list is not a valid handle 谁知道是怎么回事情吗

解决方案 »

  1.   

    错的可多了。去PHPE.NET里看模版专题。里面有好多的例子。错误几点:
    首先,在left.htm里没有定义list块
    再次,$tpl_left -> parse("lists","list",true);  应该放在循环里,要不然就无所谓block了
      

  2.   

    你的 left.html 里面,在你上面贴的那些代码上面是不是有 <!-- BEGIN list -->?下面是不是有<!-- END rows -->?
      

  3.   

    我贴错了,应该是<!-- END list -->
      

  4.   

    kingerq(多菜鸟) ,你第二点就错怪他了,是在循环里面的,foreach里面,呵呵,你看错了。
      

  5.   

    我一般这么写的:
    test.iHtml
    ----------------------
    <ul>
      <!-- BETIN list -->
      <li>{title} [{date}]</li>
      <!-- END list -->
    </ul>test.php
    ---------------------
    <?php
    $tpl = new Template();
    $db  = new DB_Sql();$tpl->set_file("test","test.iHtml");$tpl->set_block("test","list","listdata");$sql  = "SELECT `id`,`title`,`date` FROM `news`";
    $sql .= "ORDER BY `id` DESC LIMIT 0, 20";$db->query($sql);
    if ($db->nf()) {
        while ($db->next_record()) {
            $replace = array (
                "title" => $db->f("title"),
                "date"  => str_replace("-","/",$db->f("date")
            );
            $tpl->set_var($replace);
            $tpl->parse("listdata","list",true);
        }
    } else {
        die ("No data");
    }$tpl->parse("out","test");
    $tpl->p("out");
    ?>
      

  6.   

    更正一下:
    <!-- BETIN list -->
    应为
    <!-- BEGIN list -->
      

  7.   

    定义了块,见“修改1 和 修改2”,但是仍然有同样的错误,什么原因啊/*-------------------------------------------------
     left.html 
     下面代码要循环显示
     产生一组动态的菜单
    ----------------------------------------------------*/
    <!--BEGIN list-->                 /*修改1*/
       <tr>
        <td height="25" colspan="2">
    <INPUT name="{picname}" src="../image/body/{picname}_{moutpic}.gif" onmouseover="javascript:swpic('{picname}','{moverpic}')" onmouseout="javacript:swpic('{picname}','{moutpic}')" onClick="location.href='../depart/xdjl_depart_wzyl.php';" type=image align="top">   
        </td>
       </tr>
    <!--END list-->                  /*修改2*/
    /*--------------------------------
    left.php
    ---------------------------------*/
    $tpl_left = new Template("../body","keep");
    $tpl_left -> set_file("main","left.htm");
    /*************************************************************************/
    $tpl_left -> set_block("main","list","lists"); //这里不会用,目前拼感觉乱写
    /*************************************************************************/$array = array("fbwz"=>"0","wzsh"=>"0","cgx"=>"1");//开始获取模板所需变量值
    foreach ($array as $picname=>$picflag){
     if($picflag="0"){
      $moutpic="2";
      $moverpic="1";
     }
     else{
      $moutpic="1";
      $mverpic="2";
     }                                                //取值结束$tpl_left -> set_var("picname",$picname);
    $tpl_left -> set_var("moutpic",$moutpic);
    $tpl_left -> set_var("moverpic",$moverpic);/*************************************************************************/
    $tpl_left -> parse("lists","list",true);        //这里不会用,凭感觉乱写~
    /*************************************************************************/
    }
    $tpl_left -> parse("mains","main");
    $tpl_left -> p("mains");
      

  8.   

    回复人: rardge(Rardge) ( ) 信誉:100  2005-04-14 16:58:00  得分: 0  
     
     
       kingerq(多菜鸟) ,你第二点就错怪他了,是在循环里面的,foreach里面,呵呵,你看错了。
      
     
    呵呵,真是不好意思哦,楼主,没有仔细看。
      

  9.   

    哈哈
    知道原因了
    之前的错误,没有在html页面上增加块<!-- BEGIN $name --> <!-- END $name -->
    修改后还是错误,是因为把<!-- BEGIN $name --> <!-- END $name -->写成<!--BEGIN $name--> <!--END $name-->,少了几个空格~
    谢谢各位了