【问题标题】:Looping through every record from database遍历数据库中的每条记录
【发布时间】:2014-03-24 14:15:19
【问题描述】:

我已经在互联网上搜索了这个,这里有关于 SO 的问题,但大多数是使用 PHP 以外的东西。所以我会问我自己的问题。

我需要做的是制作一个按钮,该按钮将打印出数据库中的每条记录(字面意思是打印,就像下载包含所有详细信息的 word 文档一样)。

ID 名为“abstract_id”。

接下来我要向您展示的是所有页面的打印按钮,我的意思是,如果您单击所述按钮,它将打印该特定页面中的所有内容:

$abstract_id = addslashes($_POST['abstract_id']);  

 //Here i connect to the database//

$query = "SELECT * FROM abstracts WHERE abstract_id = '$abstract_id'";
    $result = mysql_query($query);

    $i = 0;
    $title = mysql_result($result,$i,"title");
    $author[1] = mysql_result($result,$i,"author1");
    $organization[1] = mysql_result($result,$i,"organization1");
    $author[2] = mysql_result($result,$i,"author2");
    $organization[2] = mysql_result($result,$i,"organization2");
    $author[3] = mysql_result($result,$i,"author3");
    $organization[3] = mysql_result($result,$i,"organization3");
    $author[4] = mysql_result($result,$i,"author4");
    $organization[4] = mysql_result($result,$i,"organization4");
    $author[5] = mysql_result($result,$i,"author5");
    $organization[5] = mysql_result($result,$i,"organization5");
    $author[6] = mysql_result($result,$i,"author6");
    $organization[6] = mysql_result($result,$i,"organization6");
    $format = mysql_result($result,$i,"format");
    $language = mysql_result($result,$i,"language");
    $presenter = mysql_result($result,$i,"presenter");
    $background = mysql_result($result,$i,"background");
    $purpose = mysql_result($result,$i,"purpose");
    $methods = mysql_result($result,$i,"methods");
    $findings = mysql_result($result,$i,"findings");
    $conclusion = mysql_result($result,$i,"conclusion");
    $word_count = mysql_result($result,$i,"word_count");
    $name = mysql_result($result,$i,"name");
    $email1 = mysql_result($result,$i,"email1");
    $email2 = mysql_result($result,$i,"email2");
    $phone1 = mysql_result($result,$i,"phone1");
    $phone2 = mysql_result($result,$i,"phone2");
    $fax = mysql_result($result,$i,"fax");
    $address = mysql_result($result,$i,"address");
    $country = mysql_result($result,$i,"country");
    $topic = mysql_result($result,$i,"topic");
    $master_status = mysql_result($result, $i, "master_status");
    $last_edit = mysql_result($result,$i,"last_edit");


    header("Content-type: application/vnd.ms-word");
    header("Content-Disposition: attachment;Filename=abstract_" . $abstract_id . ".doc");

    echo "<html>";
    echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
    echo "<body>";
    echo "<p><b>PCNE Abstract</b> $abstract_id</p>";
    echo "<h1>$title</h1>";

    echo "<b>";
    for ($i = 1; $i<= 6; $i++) {
        echo ((!empty($author[$i-1]) && !empty($author[$i])) ? ", " : "") ;
        echo ((!empty($author[$i])) ? $author[$i] . "<sup>" . $i . "</sup>" : "") ;
    }
    echo ".</b>";

    echo "<br>";

    for ($i = 1; $i<= 6; $i++) {
        if (!empty($author[$i])) {
            echo (!empty($organization[$i]) && !empty($organization[$i-1])) ? ". " : "";
            echo ((!empty($organization[$i])) ? "<sup>" . $i . "</sup>"  . $organization[$i]: "") ;
        }
    }
    echo (!empty($email1)) ? " (" . $email1 . ")" : "";

    echo "<br>";
    echo "<br>";

    echo "<b>Background</b>&nbsp;&nbsp;";   
    echo "$background<br>"; 

    echo "<b>Purpose</b>&nbsp;&nbsp;";      
    echo "$purpose<br>";    

    echo "<b>Method</b>&nbsp;&nbsp;";       
    echo "$methods<br>";    

    echo "<b>Findings</b>&nbsp;&nbsp;";     
    echo "$findings<br>";   


    echo "<b>Conclusion</b>&nbsp;&nbsp;";       
    echo "$conclusion<br>"; 


    echo "</body>";
    echo "</html>";

现在,这工作正常,但我需要一个相同的工作按钮,它的功能几乎相同,但不是打印出 1 条记录,而是应该打印所有记录。所以我基本上只需要一个遍历每个 abstract_id 的 foreach 或 while 循环。

自从我上次编写 php 以来已经有很多年了,所以我感谢任何帮助!

如果您需要任何说明,请随时提出。

【问题讨论】:

  • 现在,页面上有一个 abstract_id。其余的 abstract_id 来自哪里 - 他们将如何到达页面。它们是存储在某个地方,还是依赖于用户选择或输入多个 abstract_id?
  • @larsAnders 我上面写的代码在每个特定页面上,它与数据库中唯一的 abstract_id 相关联。但我需要一个按钮(每个单独页面上方的一层)打印出所有页面。 (抱歉真的很难解释。
  • 这个数据库中是否有没有abstract_id的记录,或者每条记录都有一个?

标签: php mysql


【解决方案1】:

首先你不需要你的 30 行 mysql_result,只需使用 mysql_fetch_assoc 来获取关联数组中的所有值。 然后你只需要做一段时间( $line = mysql_fetch_assoc($query) ),见上文:

header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=abstract_all.doc");

echo "<html>";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
echo "<body>";

$query = mysql_query("SELECT * FROM abstracts WHERE 1") or die(mysql_error()) ;
while ( $line = mysql_fetch_assoc($query) )
{
    echo "<p><b>PCNE Abstract</b>".$line['abstract_id']."</p>";
    echo "<h1>".$line['title']."</h1>";

    $authors = Array() ;
    for ($i = 1 ; $i <= 6 ; $i++ )
        if ( isset($line['author'.$i]) && $line['author'.$i] != '' ) $authors[] = $line['author'.$i].' <sup>'.$i.'</sup>' ;
    echo '<b>'.implode(', ',$authors).'</b>' ;

    $organizations = Array() ;
    for ($i = 1; $i<= 6; $i++)
    {
        if ( ! isset($line['author'.$i]) || $line['author'.$i] == '' ) continue ; // Check if there is an author, if no go to next loop
        if ( isset($line['organization'.$i]) && $line['organization'.$i] != '' ) $organizations[] = ' <sup>'.$i.'</sup> '.$line['organization'.$i] ;
    }
    echo '<b>'.implode(', ',$organizations).'</b>' ;

    echo "<b>Background</b>&nbsp;&nbsp;";   
    echo $line['background']."<br>"; 

    echo "<b>Purpose</b>&nbsp;&nbsp;";      
    echo $line['purpose']."<br>";    

        // ...
}

echo "</body>";
echo "</html>";

【讨论】:

  • 对不起,我有点困惑。我只是将您提供的代码直接放在 $result = mysql_query($query); 下方吗? ?然后删除所有 mysql_results?
  • 不,你可以用这个替换你的整个代码(注意 // ...,我没有编辑所有)首先它推送标题,在你有一段时间解析之后您在 SQL 表上的所有行(这真的是您想要的吗?),在循环之后您只需关闭 body 和 html。这应该将您的所有摘要打印在同一个 word 文档上。
  • 它将下载一个空文件。等等,让我整理一些图片以便于解释。
  • 你是说我的代码会下载一个空页面或者这就是你所期望的?
  • 哇哦,非常感谢!错误在于它不知道“mysq_fetch_assoc”是什么……只需要一个“l”mysql*。现在可以了。除了它没有向我显示所有信息。但我现在会自己添加这些。
猜你喜欢
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
相关资源
最近更新 更多