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数组的方法,但我无法设法输出它 - 这是整个网站的关键部分,而且它太复杂了!非常感谢任何帮助!!对不起,很长的帖子。
当前代码:(电子表格是我实际数据库的简化版,代码与电子表格无关)
^当前代码在上面,我也尝试了一些像循环这样的建议,而不是我做的那种荒谬冗长的方式,它仍然没有输出它需要的方式!
答案 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。