SQL> PHP>数组>输出为HTML - 很多条件

时间:2015-07-10 14:57:56

标签: php html mysql

SQL数据库(如下所示,但没有标题 - 可选择添加或其他,我不确定什么是最好的!)

https://docs.google.com/spreadsheets/d/1FxCimlsu-B5MBCAnU2ysCY8MN_QuyS_PNArjtQkJvbU

^来自上面的规范数据库,我试图让PHP输出一个HTML表来显示它......

我已经设置了PHP文档,以便:

GETS:_PAGE [$ title] - 所以它会得到/products.php?=BB

例如

和$ title = BB。

然后在数据库中搜索A列中的“BB”并创建一个包含4个BB产品的数组。

^这么多已经完成并且工作正常。

我的问题是:

- 数组中包含值的列需要报告ALL,包括空白(默认情况下) 例如,产品BB应该将> A9和> A10放入HTML表格中,因为BB的该列中还有其他值。 (为方便起见,我以绿色突出显示)

- 没有该产品值的列不应该在HTML上,因此对于产品BB,厚度列中没有NO值,因此它不应输出厚度列。 (也考虑到第一点 - 那些空白仍然需要展示!!)

- 关于标题情况,我不知道该怎么做,是否在另一个只有标题的DB上做了很多IF语句,或者是什么?理想情况下,我需要每个标题2个,我需要“长度”和“mm”作为单个列的2个标题。

-title,description和keyword也应该不输出(它们在页面的其他地方使用,不在表格内部使用)

我尝试并尝试了不同的输出表格和循环PHP数组的方法,但我无法设法输出它 - 这是整个网站的关键部分,而且它太复杂了!非常感谢任何帮助!!对不起,很长的帖子。

当前代码:(电子表格是我实际数据库的简化版,代码与电子表格无关)

http://pastebin.com/j5fg68yY

^当前代码在上面,我也尝试了一些像循环这样的建议,而不是我做的那种荒谬冗长的方式,它仍然没有输出它需要的方式!

1 个答案:

答案 0 :(得分:0)

从数据库中选择:

SELECT product, code, length, width, height, temperature, 
  weight, tolerance, thickness, orientation, pressure, softness 
FROM tableName
WHERE product = 'BB'; 

给出一个这种结构的数组:

// Pseudo code    
$results[0] => {
  "product" => BB,
  "code" => BB01,
  ...et cetera
}

删除空白列的功能:

function removeBlankColumns($results){
  if(!empty($results)){

    // Get column names
    foreach(array_keys($results[0]) as $index => $value){
      $columnIsBlank = true;

      // Loop through all rows
      for($i=0;$i<count($results);$i++){
        if(!empty($results[$i][$value])){
          $columnIsBlank = false;
        }
      }

      // Remove column if blank
      if($columnIsBlank){
        for($i=0;$i<count($results);$i++){
          unset($results[$i][$value]);
        }
      }
    }
  }
  return $results;
}

创建一个输出HTML的函数:

function buildTable($results){
  $output = "";
  if(!empty($results)){
    $output .= "<table>";
    $output .= "<tr>";
    foreach($results[0] as $columnName => $value){
      $output .= "<th>" . $columnName . "</th>";
    }
    $output .= "</tr>";
    foreach($results as $productArray){
      $output .= "<tr>";      
      foreach($productArray as $columnName => $value){
        $output .= "<td>" . $value . "</td>";
      }
      $output .= "</tr>";
    }
    $output .= "</table>"
  }
  return $output;
}

我没有测试过这个,但你应该得到它的要点。你需要编写自己的代码,但我已经完成了你所依赖的部分,即删除空白列并输出HTML。