【问题标题】:While loop: Works, but also loops over HTML and outputs it twice (once in reverse?)While循环:有效,但也循环HTML并输出两次(一次反向?)
【发布时间】:2013-05-05 18:06:28
【问题描述】:

我有一个 while 循环。它应该遍历数据库表并输出找到的结果,这很好。但是,它也会在 while 循环中复制 HTML(输出两次,一次反向输出??)。

查看:

1) Jazzminder Soundscape 2) 3) 1) 2) Jazzminder Dandelion 3)

应该阅读:

1) Jazzminder Soundscape 2) Jazzminder Dandelion 3)

我已经尝试调整和重写代码,但我无法找出问题所在。我以前没有遇到过这个问题。

这是代码块:

 <p> <a href="promote_next_step.php?promote=<?php echo $_GET['promote']?>">
<strong>        [More To Next Step]</strong></a></p>
<strong><font color="gray">Included so far:</font></strong><br/>

<?php 
  $sql2="SELECT * FROM `promote_track_lists` WHERE `promo_title`='".     $_GET['promote1']."'";
  $result2=mysql_query($sql2);
  while($row2 = mysql_fetch_assoc($result2)){
?>
  1) <font color="orange"><strong><?php echo $row2['artist_name1'] ?> <?php echo     $row2['track_title1'] ?></strong></font>
  2) <font color="orange"><strong><?php echo $row2['artist_name2'] ?> <?php echo     $row2['track_title2'] ?></strong></font>
  3) <font color="orange"><strong><?php echo $row2['artist_name3'] ?> <?php echo     $row2['track_title3'] ?></strong></font>

<?php 
  }
?>

感谢回复!!问题是,我还有另一个页面可以很好地从数据库中提取信息:

  if (isset ($_GET['promote1']) === true) {
  $sql3="SELECT * FROM `promote_track_lists` where `promo_title`    ='".$_GET['promote1']."' "; 
  $result3= mysql_query ($sql3);
 while ($row3 = mysql_fetch_assoc ($result3)) {   
 ?>
              <div id="promotion_files">
              <!------- track1 ------->
               <?php  if ($row3['iframe1']) {?>
                <div class="promotion_track_name"><strong><?php echo     $row3['artist_name1'] ?>-<?php echo $row3['track_title1'] ?></strong></div>
                <?php echo $row3['iframe1']?>
                <?php
                if (isset ($_POST['submit'])===true && empty     ($_POST['feedback']) === false) {
                ?>
                <a href="mp3_download.php?promote1=<?php echo     $row['title'] ?>"><img src='images/design images/iPodDownload.png' /></a>
                <?php
                }
                }
            ?>
                           <!------- track2 -------> 

它执行了 20 次没有问题,但由于某种原因,它在另一个页面上循环遍历 HTML 并输出(只是 html)两次。我尝试使用数据库,以使条目彼此完全不同,但可以通过一个查询来提取所有内容。 ...如果这是有道理的。

【问题讨论】:

  • 你能不能 print_r 你的 $row before 和 while 循环来查看数组中的内容。看起来你的选择查询得到了 2 个结果。两个结果都只有一个艺术家姓名和一个标题..

标签: php html mysql loops while-loop


【解决方案1】:

我将对此进行尝试,但如果没有完整的代码,我可能会出错。我的猜测是问题出在你的 MySQL 上。根据您要输出的内容。一条记录看起来像这样

艺术家姓名1 |艺术家姓名2 |艺术家姓名3 | track_title1 |曲目标题2 | track_title3

但根据您所说的是您的输出显示方式,您的表格很可能看起来像这样 艺术家名 | track_title

你能告诉我你的桌子是什么样子的吗?

fyi 它并没有反向显示,它显示了所有 3 行 3 次,但您每次只能看到一组值。所以你看到 1 -data- 2 3 然后 1 2 -data- 3 然后 1 2 3 -data- 我希望这是有道理的

所以查看您的图片和您发布的其他代码,我注意到第二个代码块上的这种情况不在您的第一个代码块中。

            <?php  if ($row3['iframe1']) {?>

所以我的问题是这样的。如果 iframe2 为空白,则在您的数据库中。艺术家2是空白的吗?如果是这种情况,并且根据您在原始电子邮件中的描述,它看起来像 artist1 title1 和 iframe1 都包含值,但该行的其余值是空白的,并且在您的表中的下一条记录 artist2 title2 和 iframe2 被填充其余字段为空白,第三个字段也是如此。如果是这种情况,那么您需要对 while 循环执行以下操作...

while($row2 = mysql_fetch_assoc($result2)){
     if ($row2['iframe1']) {?>
  1) <font color="orange"><strong><?php echo $row2['artist_name1'] ?> <?php echo     $row2['track_title1'] ?></strong></font>
  <?php  else if ($row2['iframe2']) {?>
  2) <font color="orange"><strong><?php echo $row2['artist_name2'] ?> <?php echo     $row2['track_title2'] ?></strong></font>
  <?php else if ($row2['iframe3']) {?>

  3) <font color="orange"><strong><?php echo $row2['artist_name3'] ?> <?php echo     $row2['track_title3'] ?></strong></font>
  <?php }

} ?>

【讨论】:

  • 这个表实际上非常大,有60多个字段;但你是对的,列出的字段是:artist_name|track_title|promo_title|username...可以选择包含多达 20 个曲目(附带不同的数据)。
  • 那么就给我一条记录的sn-p,这样我就可以帮你写正确的代码了:)
  • 嘿,谢谢!!我在这里有一张照片:divshare.com/download/24094489-1b3 ...让我知道你是否可以访问它。 :)
  • 我在上面的答案中添加了一些代码。看看,如果我解决了这个问题,请告诉我
  • 就是这样!为什么我没有想到呢?哈哈谢谢,你真棒。 :)
【解决方案2】:
 <p> <a href="promote_next_step.php?promote=<?php echo $_GET['promote']?>">
<strong>        [More To Next Step]</strong></a></p>
<strong><font color="gray">Included so far:</font></strong><br/>

<?php 
  $sql2="SELECT * FROM `promote_track_lists` WHERE `promo_title`='".$_GET['promote1']."'";
  $result2=mysql_query($sql2);

$s=1;

  while($row2 = mysql_fetch_assoc($result2))
  {
      echo $s.') <font color="orange"><strong>'.$row2['artist_name1'].$row2['track_title1'] .'</strong></font>';
      $s++;
  }
?>

我认为您的数据库结构搞砸了。请在插入时将您的表结构和要输入的数据发布到列中。

【讨论】:

  • 谢谢,罗宾。我正在尝试,现在。您对数据库结构的看法可能是对的,我几乎是即时创建了所有内容;但这一切都在系统的后期完美运行。我确信我可以找到解决这个小问题的方法,但我不想牺牲可用性。
猜你喜欢
  • 2015-09-28
  • 1970-01-01
  • 2020-04-30
  • 2013-03-01
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
相关资源
最近更新 更多