【问题标题】:I can't get div id displayed in loop in Code Igniter我无法在 Codeigniter 中循环显示 div id
【发布时间】:2011-03-25 21:37:32
【问题描述】:

我有一个创建循环的命令:

foreach($cart as $line=>$item). 

当它显示时,它会显示下面引用的 HTML。我试图在循环下方添加一个 div id,因为我想创建一个 getElementById() 函数。但是,它会自行在上面创建一个循环。另外,我无法更改 tr 语句。我实际上已经对 Code Igniter 中的每个 tr 语句进行了搜索和替换,它仍然存在。我是一个新手,非常感谢任何建议,因为这让我困惑了三天。

    <tbody id="cart_contents">
<?php
if(count($cart)==0)
{
?>

<tir><td colspan='8'>
<div class='warning_message' style='padding:7px;'><?php echo $this->lang->line('sales_no_items_in_cart'); ?></div>
</tr></tr>



    <?php
}
else
{
    echo "</tr><tir>";

        foreach($cart as $line=>$item)
    {


    ?>


        <td id = " <?php echo $item['name'];?>" style="align:center;" ><?php echo $item['name']; ?></td>



        <?php if ($items_module_allowed)
        {

        ?>
            <td><?php echo form_input(array('name'=>'price','value'=>$item['price'],'size'=>'6'));?></td>
        <?php
        }
        else
        {
        ?>
            <td><?php echo $item['price']; ?></td>
            <?php echo form_hidden('price',$item['price']); ?>
        <?php
        }
        ?>

        <td>
        <?php
            if($item['is_serialized']==1)
            {
                echo $item['quantity'];
                echo form_hidden('quantity',$item['quantity']);
            }
            else
            {
                echo form_input(array('name'=>'quantity','value'=>$item['quantity'],'size'=>'2'));
            }
        ?>
        </td>

        <td><?php echo to_currency($item['price']*$item['quantity']-$item['price']*$item['quantity']*$item['discount']/100); ?></td>

        <?php
            if($item['allow_alt_description']==1)
            {
            }
            else
            {
                if ($item['description']!='')
                {
                }
                else
                {
                }
            }
        ?>
        </td>
        <td>&nbsp;</td>
        <td style="color:#2F4F4F";>
        <?php
            if($item['is_serialized']==1)
            {
            }
        ?>
        </td>
        <td colspan=3 style="text-align:left;">
        <?php
            if($item['is_serialized']==1)
            {
            }
        ?>
        </td>


        </tr>
        <tr style="height:3px">
        <td colspan=8 style="background-color:white"> </td>
        </tr>       </form>
    <?php
    }


}
?>
</tbody>
</table>        </div>

这是原始循环的 HTML 输出。

<tr><td id=" test" style="align:center;">test</td>

    <td><input type="text" name="price" value="150.00" size="6"></td>

    <td>
        etc...
    </td>


</tr>

【问题讨论】:

  • 请把整个循环贴出来好吗?
  • 感谢您的快速回复。我刚刚更新了上面的 php 代码。问候,西蒙
  • 对不起,我不太明白是什么问题?它(不)在做什么,它应该做什么?
  • 您好捷克语。当我在循环中放置一个 div 语句时,(我希望它创建一个以项目编号为 id 的 div id),它出现在循环上方。我只是无法在循环中得到任何东西。我想知道这是否是codeigniter的一些设置。希望你能帮忙。

标签: php javascript html forms codeigniter


【解决方案1】:

我不相信你的问题出在你的 php 上,我认为是你的 html。

您的 html 开始和结束标记并不完全匹配。您有几个未关闭的 &lt;tr&gt; 元素,至少一个未打开的 &lt;tr&gt;,鉴于您的 if/else 语句结构,您的表单标签无法正常工作,并且您实际上没有打开 &lt;table&gt; 标签或在代码顶部打开 &lt;div&gt; 标记,而最后两者都有。您希望在循环中出现的循环上方的 div 可能是您的浏览器试图解释损坏的页面结构的结果。

就我提到的表单标签而言,请确保如果您使用 if 语句打开表单,您还必须有一个条件,如果 if 语句的计算结果为 false,则该条件将打开任何所需的表单。我认为您在 if 中有一个表单元素,然后将表单输入作为下一个 else 语句的一部分。

我已经简化了您发布的代码并包含了 cmets 来尝试说明这一点:

    <tbody id="cart_contents">
<?php if(){?>
    <tir><!--what's a 'tir'?, did you mean 'tr'?-->
        <td colspan='8'>
            <div class='warning_message' style='padding:7px;'>
            </div>
        </tr>
    </tr>
<?php }else{
    echo "</tr><tir>";//here you are closing a row that was never opened, and another 'tir'.  
    foreach($cart as $line=>$item){?>
            <td></td>
            <?php if (){ //here you call a form input before the form is created...?>
                <td><?php echo form_input();?></td>
                <?php }else{?>
                 <td></td>
                <?php echo form_hidden(); 
                //this form isn't in a table element, which might act weird?>
            <?php }?>
            <td><?php if() {
                    echo form_hidden();
                }else{
                    echo form_input());
                    //here you have a form input outside of a form if 
                    //the previous if statement evaluates to false.
                }?>
            </td>
            <td></td>
            <?php if(){ }
            else {
                if(){}
                else{}
            }?>
        </td><!--this td was never opened-->
        <td>&nbsp;</td>
        <td></td>
        <td></td>
    </tr><!--this tr was never opened-->
    <tr><td></td></tr>      
  </form><!--I don't believe you can count on your conditional statements to garantee that a form was opened-->
    <?php }
    } ?>
</tbody>
</table> <!--you haven't opened your table in this code-->
</div><!--you havent' opened a div in this code-->

【讨论】:

  • 感谢您的回复。我找到了一种通过再次重新创建循环来显示 div 的方法。我认为脚本调用的某些东西改变了结构。我现在的问题是我给每个表单元素一个 id,我想通过 id 获取文档来调用它。它不工作。有没有一种简单的方法可以做到这一点。
猜你喜欢
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 2015-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
相关资源
最近更新 更多