繁体   English   中英

PHP的回声不打印出数据

[英]php echo not printing out data

我正在使用jQuery UI选项卡使用php和mysql创建动态选项卡。 我下面的PHP代码从mysql数据库中获取数据并显示出来。

通常,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>

但是,它仅生成li(制表符),而不生成片段(内容)。

我这是什么问题

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

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

但是,我建议您更接近于创建自己的临时PHP变量来存储所有数据,并使用它们来进行第一次和第二次循环。 只是一个建议。

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

编辑:您已经将数据存储在$ rows变量中。 在第二个循环中,循环遍历$ 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>

只是改变你的

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不变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM