2012-03-13 59 views
2

我正在使用jQuery UI选项卡来制作使用php和mysql的动态选项卡。 我的php代码从mysql数据库中获取数据并显示出来。php echo不打印数据

通常情况下,HTML代码如下:

<div id="featured" > 
    <ul class="ui-tabs-nav"> 
     <li class="ui-tabs-nav-item ui-tabs-selected" id="nav-fragment-1"><a href="#fragment-1"><img src="images/image1-small.jpg" alt="" /><span>15+ Excellent High Speed Photographs</span></a></li> 
     <li class="ui-tabs-nav-item" id="nav-fragment-2"><a href="#fragment-2"><img src="images/image2-small.jpg" alt="" /><span>20 Beautiful Long Exposure Photographs</span></a></li> 
     <li class="ui-tabs-nav-item" id="nav-fragment-3"><a href="#fragment-3"><img src="images/image3-small.jpg" alt="" /><span>35 Amazing Logo Designs</span></a></li> 
     <li class="ui-tabs-nav-item" id="nav-fragment-4"><a href="#fragment-4"><img src="images/image4-small.jpg" alt="" /><span>Create a Vintage Photograph in Photoshop</span></a></li> 
    </ul> 
    <!-- First Content --> 
    <div id="fragment-1" class="ui-tabs-panel" style=""> 
     <img src="images/image1.jpg" alt="" /> 
     <div class="info" > 
     <h2><a href="#" >15+ Excellent High Speed Photographs</a></h2> 
     <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla tincidunt condimentum lacus. Pellentesque ut diam....<a href="#" >read more</a></p> 
     </div> 
    </div> 
    <!-- Second Content --> 
    <div id="fragment-2" class="ui-tabs-panel ui-tabs-hide" style=""> 
     <img src="images/image2.jpg" alt="" /> 
     <div class="info" > 
     <h2><a href="#" >20 Beautiful Long Exposure Photographs</a></h2> 
     <p>Vestibulum leo quam, accumsan nec porttitor a, euismod ac tortor. Sed ipsum lorem, sagittis non egestas id, suscipit....<a href="#" >read more</a></p> 
     </div> 
    </div> 
    <!-- Third Content --> 
    <div id="fragment-3" class="ui-tabs-panel ui-tabs-hide" style=""> 
     <img src="images/image3.jpg" alt="" /> 
     <div class="info" > 
     <h2><a href="#" >35 Amazing Logo Designs</a></h2> 
     <p>liquam erat volutpat. Proin id volutpat nisi. Nulla facilisi. Curabitur facilisis sollicitudin ornare....<a href="#" >read more</a></p> 
     </div> 
    </div> 
    <!-- Fourth Content --> 
    <div id="fragment-4" class="ui-tabs-panel ui-tabs-hide" style=""> 
     <img src="images/image4.jpg" alt="" /> 
     <div class="info" > 
     <h2><a href="#" >Create a Vintage Photograph in Photoshop</a></h2> 
     <p>Quisque sed orci ut lacus viverra interdum ornare sed est. Donec porta, erat eu pretium luctus, leo augue sodales....<a href="#" >read more</a></p> 
     </div> 
    </div> 
</div> 

而且我在使用PHP动态回声出HTML:

<div id="featured" > 
<ul class="ui-tabs-nav"> 
<?php 
    $count = 0; // Initialize counter 
    $rows = array(); 
    while($row = mysql_fetch_array($query)) { 
     $rows[] = $row; 
     $count = ++$count; 
     echo "<li class='ui-tabs-nav-item ui-tabs-selected' id='nav-fragment-" . $count . "'><a href='#fragment-" . $count . "'><img class='thumb' src='$row[imagelink]' alt='' /><span>$row[title]</span></a></li>\n"; 
} 
?> 
</ul> 
<?php 

    $count2 = 0; // Initialize counter 
    $rows2 = array(); 
    while($row2 = mysql_fetch_array($query)) { 
     $rows2[] = $row2; 
     $count2 = ++$count2; 
     echo "<div id='fragment-" . $count2 . "' class='ui-tabs-panel' style=''>\n"; 
     echo "<img src='$row[imagelink]' alt='' />\n"; 
     echo "<div class='info' ><h2><a href='$row[link]'>$row[title]</a></h2><p>$row[description]</p></div>\n"; 
    } 

?> 
</div> 

但是,它只产生利(标签),而不是片段(内容)。

这里有什么问题吗?

回答

0

只是改变你的

while($row2 = mysql_fetch_array($query)) { 

foreach($rows as $row2) { 

然而,这里是一个更好的代码版本

首先,将数据存入数组。在您运行查询的地方附近进行操作。将所有SQL操作保留在一个地方。并且不要将它们与HTML操作混合!

$count = 0; // Initialize counter 
$rows = array(); 
while($row = mysql_fetch_array($query)) { 
    $rows[++$count] = $row; 
} 

然后移动到HTML的操作:

<div id="featured" > 
<ul class="ui-tabs-nav"> 
<?php foreach($rows as $count => $row): ?> 
<li class='ui-tabs-nav-item ui-tabs-selected' id='nav-fragment-<?=$count?>'> 
    <a href='#fragment-<?=$count?>'> 
    <img class='thumb' src='<?=$row['imagelink']?>' alt='' /> 
    <span><?=$row['title']?></span> 
    </a> 
</li> 
<?php endforeach ?> 
</ul> 
<?php foreach($rows as $count => $row): ?> 
<div id='fragment-<?=$count?>' class='ui-tabs-panel' style=''> 
    <img src='<?=$row[imagelink]?>' alt='' /> 
    <div class='info' > 
    <h2><a href='<?=$row['link']?>'><?=$row['title']?></a></h2> 
    <p><?=$row['description']?></p> 
    </div> 
</div> 
<?php endforeach ?> 

看看它是如何变得简洁,同时保持原样的所有HTML。

+0

感谢它的工作。 – sm21guy 2012-03-13 05:59:49

1

你的问题是你的$查询(MySQL结果对象)到达结果行的末尾,然后你的第二个循环不会从头开始。

这应该解决的问题:http://www.krio.me/loop-twice-through-a-php-mysql-result-set/

不过,我会建议更接近于创建自己的临时PHP变量的所有数据存储在并用它来遍历它的第一和第二时间。只是一个建议。

我不知道在上面链接的网站中描述的数据搜寻方法的性能。

编辑:您已经将数据存储在$行变量中。在第二个循环中,循环遍历$ rows变量而不是使用mysql_fetch_array函数。

代码添加(没有测试,但应该给你一个好主意):

<div id="featured" > 
<ul class="ui-tabs-nav"> 
<?php 
    $count = 0; // Initialize counter 
    $rows = array(); 
    while($row = mysql_fetch_array($query)) { 
     $rows[] = $row; 
     $count = ++$count; 
     echo "<li class='ui-tabs-nav-item ui-tabs-selected' id='nav-fragment-" . $count . "'><a href='#fragment-" . $count . "'><img class='thumb' src='$row[imagelink]' alt='' /><span>$row[title]</span></a></li>\n"; 
} 
?> 
</ul> 
<?php 

    $count2 = 0; // Initialize counter 
    $rows2 = array(); 
    foreach($rows as $row2) { 
     $count2 = ++$count2; 
     echo "<div id='fragment-" . $count2 . "' class='ui-tabs-panel' style=''>\n"; 
     echo "<img src='$row[imagelink]' alt='' />\n"; 
     echo "<div class='info' ><h2><a href='$row[link]'>$row[title]</a></h2><p>$row[description]</p></div>\n"; 
    } 
?> 
</div> 
+0

为什么不删除链接,因为它变成与问题无关? – 2012-03-13 05:56:12

+0

因为它解释了他的代码的根本问题。这是100%相关的。教一个男人去钓鱼... – mroselli 2012-03-13 06:38:06