Php Mysql使用循环和条件语句创建和输出数据

Php Mysql使用循环和条件语句创建和输出数据,php,mysql,sql,loops,conditional-statements,Php,Mysql,Sql,Loops,Conditional Statements,我有一个php页面,在选择、迭代和将选择的输出放在多个div中时遇到问题。我正在运行sql语句来插入数据,但我不知道如何使用php创建div并根据表选择插入数据。我在一个表中有几个行描述和类别ID。每个客户端可以有任意数量的类别。一些人可能有一个,其他人可能有20个或更多。我只能执行多个select语句。我知道必须有一种方法可以使用php执行sql select语句,并创建一个div来插入此信息。如果没有视觉效果,很难在这里解释 这是查看表单的链接[https://picasaweb.googl

我有一个php页面,在选择、迭代和将选择的输出放在多个div中时遇到问题。我正在运行sql语句来插入数据,但我不知道如何使用php创建div并根据表选择插入数据。我在一个表中有几个行描述和类别ID。每个客户端可以有任意数量的类别。一些人可能有一个,其他人可能有20个或更多。我只能执行多个select语句。我知道必须有一种方法可以使用php执行sql select语句,并创建一个div来插入此信息。如果没有视觉效果,很难在这里解释

这是查看表单的链接[https://picasaweb.google.com/lh/photo/hurjY7oAbvRoDOQQIj3zRkeSUrPF9ispRPGyalE7Lt8?feat=directlink][1]

这里有一个表的链接[https://picasaweb.google.com/lh/photo/toJ3dulOOt90avetk2u9uEeSUrPF9ispRPGyalE7Lt8?feat=directlink][2]

这是我想做的

从“我的类别”表的“类别”列中选择。将该信息插入一个div。将category_id与“我的行项目”表中的category_id和id列相匹配。 从行项目表行描述列中选择。在client_id和line_item表中的id上的client表匹配的div.中插入该信息。 创建的div应按类别分开,在下一行中显示项目数量、项目单位和行描述,直到该类别id行完成。然后将下一个类别回显到另一个div中。附件是我尝试过的php代码。 我知道我需要使用一些循环和条件语句,但我对这一点还不熟悉,我真的尝试使用循环和条件语句来压缩绑定,让它们一起工作。我似乎不知道如何创建一个div,然后选择一个category\u id并将其回显到一个div中。如果存在category\u id,则创建另一个div并回显它。任何帮助都将不胜感激

connect.php文件

<?php

$config = array(    
    'host' => 'localhost',
    'username' => 'root',
    'password' => '',
    'dbname' => 'newest'
);  

    $db = new PDO('mysql:host=' . $config['host'] . ';dbname=' . $config['dbname'], $config['username'], $config['password']);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

?>



The select.php file

<?php
$query = "SELECT * FROM client

                JOIN job_name
                ON client.client_id = job_name.id
                JOIN estimate
                ON job_name.id = estimate.id
                JOIN line_item
                ON estimate.id = line_item.id
                JOIN category_2
                ON category_2.category_id = line_item.category_id                   
           WHERE client.email = '7895@yahoo.com'
           ORDER BY line_item.line_des_seq ASC";

// fetch gets one line
            $categorys = $db->query($query);
            $category = $categorys->fetch();           

foreach ($categorys as $lineitem){ ?>           


<?php } ?>         




    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns=http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv=Content-Type" content=text/html; charset=utf-8" />
    <title>Estimate</title>
    <link rel="stylesheet" type="text/css" href="estimateform.css"/>

    </head>

    <body>
    <?php
    require 'connect.php';
    require 'select.php';

    ?>

    <div id="estimateWrap">
    <div id="bodyWrap">
    <div id="header">Company Name</div>
    <div id="companyAdd">12345 Main St., Anytown USA 12345</div>
    <div id="companyPhone">Phone #: (123) 123-4567</div>

    <div id="jobType">
    <div class="estimateType">Proposal</div>
    </div>


    <div id="jobHeading">
    <div id="dateSpace">Date:</div>
    <div id="date"><?php echo $lineitem ['estimate_date']; ?></div>
    <div id ="JobnameSpace">Job Name:</div>
    <div id="clientJobName"><?php echo $lineitem ['client_job_name']; ?></div>
    <div id="siteaddressSpace">Site Address:</div>
    <div id="siteAdd"><?php echo $lineitem ['site_address']; ?></div>


    <div id="clientnameSpace">Client:</div>
    <div id="clientName"><?php echo $lineitem ['client_fname']; ?>  <?php echo $lineitem ['client_lname']; ?></div>

    <div id="jobnumberSpace">Job #:</div>
    <div id="jobNumber"><?php echo $lineitem ['job_number']; ?></div>
    <div id="clientZip"></div>
    <div id="clientZip"><?php echo $lineitem ['site_zip']; ?></div>

    </div>

    <div id="area">Area:  General</div>

    <div id="Qty">Qty</div>



    <div id="Unit">Unit</div>



    <div id="Description">Description</div>

    <!-- *********************************************************************************************************** -->
    <!-- *                                      Category                                                           * -->
    <!-- *********************************************************************************************************** -->

    <div id="category"><?php $sql = "SELECT * FROM `category_2` WHERE `category_id` = 2";
      $result = $db->query($sql);


        foreach($result as $row) {
    echo $row['category']. '<br />';

        }
      ?></div>
    <!-- *********************************************************************************************************** -->
    <!-- *                                       Quanity                                                           * -->
    <!-- *********************************************************************************************************** -->
    <div id="Qty"><?php $sql = "SELECT * FROM `line_item` WHERE `category_id` = '2' AND `job_number` = 'JOB000083'";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           

        foreach($result as $row) {
    echo $row['item_quanity']. '<br />';

        }
      }?></div>

    <!-- *********************************************************************************************************** -->
    <!-- *                                       Unit                                                      * -->
    <!-- *********************************************************************************************************** -->                                                                

    <div id="Unit"><?php $sql = "SELECT * FROM `line_item` WHERE `category_id` = '2' AND `job_number` = 'JOB000083'";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           

        foreach($result as $row) {
    echo $row['item_unit']. '<br />';

        }
      }?></div>

    <!-- *********************************************************************************************************** -->
    <!-- *                                       Description                                                       * -->
    <!-- *********************************************************************************************************** -->

    <div id="Description"><?php 

     $sql = "SELECT * FROM `line_item` WHERE `category_id` = '2' AND `id` = '7'  ORDER BY `line_des_seq` ASC";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           

        foreach($result as $row) {
    echo $row['line_description']. '<br />';

        }
      }?></div>





    <!-- *********************************************************************************************************** -->
    <!-- *                                                    Category                                             * -->
    <!-- *********************************************************************************************************** -->

    <div id="category"><?php $sql = "SELECT * FROM `category_2` WHERE `category_id` IN(6)";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           


        foreach($result as $row) {
    echo $row['category']. '<br />';

        }
      }?></div>


    <!-- *********************************************************************************************************** -->
    <!-- *                                       Quanity 2                                                         * -->
    <!-- *********************************************************************************************************** -->


    <div id="Qty"><?php $sql = "SELECT * FROM `line_item` WHERE `category_id` = '6' AND `job_number` = 'JOB000083'";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           


        foreach($result as $row) {
    echo $row['item_quanity']. '<br />';

        }
      }?></div>

    <!-- *********************************************************************************************************** -->
    <!-- *                                       Unit 2                                                            * -->
    <!-- *********************************************************************************************************** -->                                                                

    <div id="Unit"><?php $sql = "SELECT * FROM `line_item` WHERE `category_id` = '6' AND `job_number` = 'JOB000083'";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           


        foreach($result as $row) {
    echo $row['item_unit']. '<br />';

        }
      }?></div>





    <!-- *********************************************************************************************************** -->
    <!-- *                                       Description 2                                                     * -->
    <!-- *********************************************************************************************************** -->

    <div id="Description"><?php 

     $sql = "SELECT * FROM `line_item` WHERE `category_id` = '6' AND `id` = '7'  ORDER BY `line_des_seq` ASC";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           


        foreach($result as $row) {
    echo $row['line_description']. '<br />';

        }
      }?></div>


    <!-- *********************************************************************************************************** -->
    <!-- *                                                    Category3                                            * -->
    <!-- *********************************************************************************************************** -->

    <div id="category"><?php $sql = "SELECT * FROM `category_2` WHERE `category_id` IN(11)";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           

        foreach($result as $row) {
    echo $row['category']. '<br />';

        }
      }?></div>  




    <!-- *********************************************************************************************************** -->
    <!-- *                                       Quanity 3                                                         * -->
    <!-- *********************************************************************************************************** -->


    <div id="Qty"><?php $sql = "SELECT * FROM `line_item` WHERE `category_id` = '11' AND `job_number` = 'JOB000083'";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           


        foreach($result as $row) {
    echo $row['item_quanity']. '<br />';

        }
      }?></div>

    <!-- *********************************************************************************************************** -->
    <!-- *                                       Unit 3                                                        * -->
    <!-- *********************************************************************************************************** -->                                                                

    <div id="Unit"><?php $sql = "SELECT * FROM `line_item` WHERE `category_id` = '11' AND `job_number` = 'JOB000083'";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           


        foreach($result as $row) {
    echo $row['item_unit']. '<br />';

        }
      }?></div>

    <!-- *********************************************************************************************************** -->
    <!-- *                                       Description                                                       * -->
    <!-- *********************************************************************************************************** -->

    <div id="Description"><?php 

     $sql = "SELECT * FROM `line_item` WHERE `category_id` = '11' AND `id` = '7'  ORDER BY `line_des_seq` ASC";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();          

        foreach($result as $row) {
    echo $row['line_description']. '<br />';

        }
      }?></div>









      <!-- *********************************************************************************************************** -->
      <!-- *                                                    Category Plumbing                                    * -->
      <!-- *********************************************************************************************************** -->

    <div id="category"><?php $sql = "SELECT * FROM `category` WHERE `category_id` IN(012)";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           

        foreach($result as $row) {
    echo $row['category']. '<br />';

        }
      }?></div>  




    <!-- *********************************************************************************************************** -->
    <!-- *                                         Quanity Plumbing                                                * -->
    <!-- *********************************************************************************************************** -->


    <div id="Qty"><?php $sql = "SELECT * FROM `line_item` WHERE `category_id` = '012' AND `job_number` = 'JOB000083'";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();          


        foreach($result as $row) {
    echo $row['item_quanity']. '<br />';

        }
      }?></div>

    <!-- *********************************************************************************************************** -->
    <!-- *                                       Unit Plumbing                                                     * -->
    <!-- *********************************************************************************************************** -->                                                                

    <div id="Unit"><?php $sql = "SELECT * FROM `line_item` WHERE `category_id` = '012' AND `job_number` = 'JOB000083'";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           

        foreach($result as $row) {
    echo $row['item_unit']. '<br />';

        }
      }?></div>

    <!-- *********************************************************************************************************** -->
    <!-- *                                       Description Plumbing                                              * -->
    <!-- *********************************************************************************************************** -->

    <div id="Description"><?php 

     $sql = "SELECT * FROM `line_item` WHERE `category_id` = '12' AND `id` = '7'  ORDER BY `line_des_seq` ASC";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           

        foreach($result as $row) {
    echo $row['line_description']. '<br />';

        }
      }?></div>









        <!-- *********************************************************************************************************** -->
        <!-- *                                                    Category Electrical                                  * -->
        <!-- *********************************************************************************************************** -->

    <div id="category"><?php $sql = "SELECT * FROM `category` WHERE `category_id` IN(014)";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           

        foreach($result as $row) {
    echo $row['category']. '<br />';

        }
      }?></div>  




    <!-- *********************************************************************************************************** -->
    <!-- *                                       Quanity Electrical                                                * -->
    <!-- *********************************************************************************************************** -->


    <div id="Qty"><?php $sql = "SELECT * FROM `line_item` WHERE `category_id` = '014' AND `job_number` = 'JOB000083'";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();          

        foreach($result as $row) {
    echo $row['item_quanity']. '<br />';

        }
      }?></div>

    <!-- *********************************************************************************************************** -->
    <!-- *                                       Unit Electrical                                                   * -->
    <!-- *********************************************************************************************************** -->                                                                

    <div id="Unit"><?php $sql = "SELECT * FROM `line_item` WHERE `category_id` = '014' AND `job_number` = 'JOB000083'";
      $result = $db->query($sql);


      if($result !== false) {
        $cols = $result->columnCount();           


        foreach($result as $row) {
    echo $row['item_unit']. '<br />';

        }
      }?></div>

    <!-- *********************************************************************************************************** -->
    <!-- *                                       Description Electrical                                            * -->
    <!-- *********************************************************************************************************** -->

    <div id="Description"><?php 

     $sql = "SELECT * FROM `line_item` WHERE `category_id` = '014' AND `id` = '7'  ORDER BY `line_des_seq` ASC";
      $result = $db->query($sql);


      if($result !== false) {

        foreach($result as $row) {
    echo $row['line_description']. '<br />';

        }
      }?></div>
    <div id="grandtotalUpperWrap"></div>
    <div id="grandtotalSpace"></div>
    <div id="grandtotalText">Grand Total:</div>
    <div id="grandtotalamtWrap">
    <div id="grandTotal"><?php 


    $q = $db->query("SELECT * FROM estimate 
                    JOIN client
                    ON estimate.id = client.client_id
                    JOIN job_name
                    ON job_name.id = estimate.id
                    JOIN line_item
                    ON line_item.id = job_name.id
                    JOIN category_2
                    ON category_2.category_id = line_item.category_id
                    WHERE estimate.id = client.client_id
                    ORDER BY line_item.category_id, line_item.line_des_seq");


    $line_description = $q->fetch(PDO::FETCH_ASSOC);


    ?>

    $<?=htmlspecialchars($line_description['grand_total'])?>
    <?php
      //  }
      ?>
      </div>

      </div>

编辑:重新开始,现在我想我明白你想要什么了

1数据库结构 我在您的数据库中看到一些设计缺陷,有些信息似乎也不太清楚

客户工作关系 应允许客户从您的公司订购不同的工作。也许Jane Sample会希望她的窗户在今年冬天重新粉刷,并在今年春天给你回复,让你修理她的屋顶。据我所知,你甚至可以有一个像市政厅或大学这样的大客户,同时有六份工作在进行

因此,作业ID不应存储在clients表中。如果是,您将无法将多个作业与给定客户关联。 这意味着要为返回的客户注册作业,您需要覆盖以前的作业引用,在这种情况下,您还可以删除作业和项目表中作业的所有跟踪,因为您将失去访问它的唯一有意义的方式,或者复制客户机,这显然是愚蠢的

相反,当前的job_name表应该演变成一个job表,您可以在其中存储

作业id作为主键,在当前表中称为作业编号 将客户id设置为外键 各种其他与工作相关的数据,如开始日期、姓名等。 工作ID冗余 您当前有作业编号和作业编号id,它们似乎表示相同的信息。 它们在3个表client、job name和line_item中重复,这始终是一件坏事,只有在没有其他解决方案的情况下才应该容忍,这里肯定不是这样

我的建议是将job_number存储在job表中,并在其他表中使用job_number_id作为外键,job_number_id是job表的主键

虽然它不是绝对强制的,但我建议使用job_number_id而不是job_number作为行项目表中的外键。当主键/外键是简单整数时,一切都会更好

线 我假设该表包含所有作业的详细分解,即完成作业所需的原子操作。 然而,各种名称非常模糊,因此必须猜测该表的语义

类别 据我所知,category_2表格列出了管道、电力等工作的类别

看着这张桌子的名字,奎斯顿突然想到:

某处有类别_1吗? 除了此表的记录外,是否可以用其他内容标记作业? 我将假定每个作业都必须定义为属于一个类别,并且因此引用了该表的一个条目

_序号?? 我不明白cat_seq和line_des_seq字段的含义

这显然是一种排序顺序,但由什么/谁定义?在什么场合使用?通过哪些程序进行修改

目前,我将完全忽略这些文件

我 强烈建议您重构数据库,因为排序应该与一组有意义的数据绑定,例如作业开始/完成日期,而不是硬编码到数据库中的任意排序顺序

2.初步的哲学知识 数据库访问 对于许多问题,要尽可能轻松地解决问题,第一步就是为工作选择合适的工具

我知道SQL的家伙们会宣称他们的第八个奇迹语言可以解决各种问题,还能为你煮一杯可口的咖啡,但80年代末的经验和数据库和人工智能的工程学位告诉我,情况并非如此

数据库是笨重的庞然大物。使用它们对一个人的身体结构中没有阳光的部分来说是一种巨大的痛苦。 例如,在PHP上,您必须在设计良好但有点不可靠且不太受支持的PDO,或者与底层数据库引擎mysqli_u2;、sqlite_2;对应的任何行话接口之间进行选择。 SQL可能是2014年在地球上广泛使用的最冗长、最含糊、最复杂的编程语言。SQL注入是否敲响了警钟?我不知道还有哪种语言需要外界帮助才能阻止一个12岁的孩子从他的网络浏览器后面访问密码表。 SQL标准化是一个笑话。从MySQL切换到Oracle或SQLite,您将调试和重写一半的查询,因为您在不知不觉中使用了特定于供应商的扩展,或者每个供应商对sacro sanct SQL92 ISO标准的任何细微变化都有自己的解释,或者是SQL:2008?SQL:2011?总之…,或者干脆决定支持这个极其丰富的语言提供的无限关键字和语法变体列表的子集。 综上所述,数据库的好处是显而易见的,我对SQL有点尖刻的咆哮不应该给你一个错误的印象,即我对开发DB引擎等复杂高效软件的人的尊重

除了能够可靠地存储大量结构化数据外,当问题在于大海捞针时,数据库也非常有用,即从大量类似数据中检索少量特定数据

例如,假设你的公司已经快乐地工作了10年。该数据库可能包含数百个客户和工作,以及数万条工作线。 然而,只需一次查询,您就可以为给定的客户检索到您想要的六条线路,比如Jane Sample和翻新Westchester租赁办公室所需的6项任务

要提取这6行数据,数据库引擎必须遍历兆字节的各种记录。 好吧,这就是它的目的,没有其他软件能做得更好

但这是有代价的

现在,如果您循环使用从您的示例中获取的此类查询

$query = "SELECT * FROM client

                JOIN job_name
                ON client.client_id = job_name.id
                JOIN estimate
                ON job_name.id = estimate.id
                JOIN line_item
                ON estimate.id = line_item.id
                JOIN category_2
                ON category_2.category_id = line_item.category_id                   
           WHERE client.email = '7895@yahoo.com'
           ORDER BY line_item.line_des_seq ASC";
每次你想从干草堆里捞一根稻草时,你都会要求数据库引擎翻阅这数千条记录。 过度沉迷于此类请求很容易使数据库处理时间增加10或100倍

这是对DB引擎的严重误用。一个典型的例子

起初,它似乎是有效的,因为您的测试数据库只包含少量数据。让它在真实条件下增长几年,事情就会变得越来越缓慢

计算机和网络是如此强大,以至于你可能永远不会注意到它们之间的区别,但这是对CPU、内存和磁盘使用的难以置信的浪费

如果放慢速度变得太痛苦,SQL人员会来建议您迁移到他们的FasterThanLightr体系结构,该体系结构具有三重冗余服务器、负载平衡和懒惰缓存,所有这些都是便宜的,因为您必须记住,他们是您的朋友,出于好意帮了您的忙,但是,尽管如此,您的时间和金钱将被浪费在处理您有根本缺陷的软件设计上

最后但并非最不重要的一点是,如果避免用户不必要的延迟和浪费电力和计算机硬件的前景不足以让您轻松地进行SQL查询,那么我可以向您保证,使用PHP进行等效处理将产生更干净、更易于维护和更紧凑的代码

总而言之,DB查询应限于检索手头任务所需的最小数据集。 一旦你得到了你需要的,用另一个工具来完成这项工作

使用关联数组 像许多其他语言perl、python、awk、lisp、javascript和许多其他我从未尝试过的语言一样,PHP提供了对关联数组的轻松访问

这是一个极好的表达工具,可以组织数据,但是如果你不熟悉它,我很惊讶你会读到这篇文章的其余部分。 所以,如果需要的话,我建议你向谷歌上帝祈祷,让他在这个问题上启发你 呃在继续阅读之前

3编辑工作建议 是时候解决你的问题了

输入参数 我看到您使用客户的电子邮件作为检索要编辑的作业的候选密钥。 如前所述,这在概念上是错误的

假设客户是市政厅,有5种不同的工作同时进行。当前状态下的数据库无法支持该信息

在正确修改DB后,您可以做的是:

从客户的电子邮件地址检索其id 检索当前为此客户打开的作业列表 为每个作业打印不同的摘要 现在,我将简化这个问题,并假设您有一个唯一的工作ID作为工作建议版本页面的输入

习俗 我假设您已解决上述差异

我将使用作业编号作为主要输入

我将使用语法快捷方式:

$xxx表示一个PHP变量 $xxx=选择一个。。。表示执行SQL查询并将结果返回到$xxx中 我将使用伪函数:

select_one表示您获得与select子句匹配的firts记录。例如,当您从Clients表中获取一个客户机时,您将只检索一个客户机

选择表示从查询中获得多行。例如,可能有多个您称之为与给定作业关联的行的实例

fetch意味着从select_多个结果中获取一行

一条记录将作为关联数组检索

例如,$job_data=从job_number_id=1的Jobs中选择一个*,将客户_job_name=>Paint、job_number=>JOB000022等分配给$job_data

我将撇开卫生处理不谈,不谈各种引用、逃避等

最后,我假设所有的伪PHP代码都会在对象的上下文中运行,所以我考虑从每个函数访问的变量,因为属性来自不同的对象方法。

从数据库中获取所需内容 现在我们有了$jobs_by_category数组,该数组按作业类别进行索引,其中包含与给定类别对应的所有作业项的列表

最后,我们进入HTML 把客户的名字或工作的名字等独特的信息是一件小事。只需像在现有代码中那样使用关联数组

显示列表要复杂一些

我们将从一个HTML模板开始,以可视化PHP必须生成的内容:

// sample job category
<div class='job_category'>Rough Carpentry</div>

// sample job item
<div class='job_qty'        >1                                  </div>
<div class='job_unit'       >EA                                 </div>
<div class='job_description'>Repair exterior Hip / Common Rafter</div>
div内容必须替换为实际数据字段

使用CSS类比使用ID更合适,因为它允许使用非常简单的CSS文件以相同的方式格式化每个项目

现在我们来看看一般的页面结构:

// company informations (sample)
<div id="estimateWrap">
<div id="bodyWrap">
<div id="header">Company Name</div>
<div id="companyAdd">12345 Main St., Anytown USA 12345</div>
<div id="companyPhone">Phone #: (123) 123-4567</div>

<div id="jobType">
<div class="estimateType">Proposal</div>
</div>

// client information (sample)
<div id="clientnameSpace">Client:</div>
<div id="clientName">
    <?php echo $client_data ['client_fname']." ".$client_data['client_lname']; ?>
</div>

// job item header
<div class='job_qty'        ><b>Qty        </b></div>
<div class='job_unit'       ><b>Unit       </b></div>
<div class='job_description'><b>Description</b></div>

// list of job items grouped by categories
<?php display_job_list(); ?>

// page footer if need be
<p>(c) 2014 kuroi-neko. Send your gifts to ...</p>
最后是输出列表的PHP函数

<?php

// helper function to output a div of a given class with a given contents
function output_div ($class, $contents)
{
    echo "<div class='$class'>$contents</div>";
}

// the main beast
function display_job_list ()
{
    foreach ($jobs_by_category as $category_name => $job_items)
    {
        // display job category
        output_div ('job_category', $category_name);

        // browse through job items
        foreach ($job_items as $item)
        {
            // output the 3 fields of this item
            output_div ('job_qty'        , $item['item_quantity'   ]);
            output_div ('job_unit'       , $item['item_unit'       ]);
            output_div ('job_description', $item['line_description']);
        }
    }
}
?>

鲍勃是你叔叔。或者至少应该这样。可能吧。

db是我的数据库连接。我不确定是否包含全部代码,只是一些。它基本上只是在不同的div中重复选择不同的category id。我要寻找的是,如果有其他类别id,则通过php创建div。你看过链接上的表格了吗@kuroi nekoWell我做了,但仍然有点难拼凑你打算做什么。首先,这个表单看起来很奇怪,列出了大量数量为零的操作。其次,数据库足够复杂,因此希望我们对适当的查询进行反向工程,并生成一个可工作的SQL+PDO+PHP+HTML代码可能是一项艰巨的任务。也许您可以从提供希望显示的SQL查询开始,按照建议阅读PHP手册以了解如何使用DB连接,更新您的问题以反映您的进度,然后我们可以继续。你觉得怎么样?我在顶部添加了connect和select php代码。这种编码是有效的,但不是通过php创建div,也不是选择类别ID并将信息输出到单独的div中。我不明白为什么对于一个有经验的php mysql程序员来说这会如此困难。我读过几本书,也搜索过很多网站。例如,murach的PHP和MySQl,O'Reilly编程PHP和PHP食谱。如果没有实际的讲师提供更详细的解释,理解这个概念是相当困难的。我只是一个初学者,我可以删除一些编码,使阅读更容易一点,如果这将有帮助的形式是一个为不同的客户施工工作的建议,编码选择客户的电子邮件上的客户建议。每个客户机可能有一个或多个类别,其行项目描述与每个类别相匹配。我没有问题,只是呼应出所有的类别和行项目。我要做的是在一个div中回显所有管道和行项目,并在另一个单独的div中回显与每个类别的行项目匹配的类别。我们在这件事上是一致的吗?作为我的链接 表格建议。
// company informations (sample)
<div id="estimateWrap">
<div id="bodyWrap">
<div id="header">Company Name</div>
<div id="companyAdd">12345 Main St., Anytown USA 12345</div>
<div id="companyPhone">Phone #: (123) 123-4567</div>

<div id="jobType">
<div class="estimateType">Proposal</div>
</div>

// client information (sample)
<div id="clientnameSpace">Client:</div>
<div id="clientName">
    <?php echo $client_data ['client_fname']." ".$client_data['client_lname']; ?>
</div>

// job item header
<div class='job_qty'        ><b>Qty        </b></div>
<div class='job_unit'       ><b>Unit       </b></div>
<div class='job_description'><b>Description</b></div>

// list of job items grouped by categories
<?php display_job_list(); ?>

// page footer if need be
<p>(c) 2014 kuroi-neko. Send your gifts to ...</p>
<?php

// helper function to output a div of a given class with a given contents
function output_div ($class, $contents)
{
    echo "<div class='$class'>$contents</div>";
}

// the main beast
function display_job_list ()
{
    foreach ($jobs_by_category as $category_name => $job_items)
    {
        // display job category
        output_div ('job_category', $category_name);

        // browse through job items
        foreach ($job_items as $item)
        {
            // output the 3 fields of this item
            output_div ('job_qty'        , $item['item_quantity'   ]);
            output_div ('job_unit'       , $item['item_unit'       ]);
            output_div ('job_description', $item['line_description']);
        }
    }
}
?>