你能告诉我如何在php和mysql脚本中改变这个结果:
Model Class
Ball S
Book A
Spoon
Plate B
Box C
这是我的DB:
CREATE TABLE IF NOT EXISTS `inspection_report` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Model` varchar(14) NOT NULL,
`Serial_number` varchar(8) NOT NULL,
`Lot_no` varchar(6) NOT NULL,
`Line` char(5) NOT NULL,
`Class` char(1) NOT NULL,
`Status` varchar(6) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `Model` (`Model`,`Serial_number`,`Lot_no`,`Line`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=48 ;
如果我想显示结果如何:
Model s a b c
Ball 1 0 0 0
Book 0 1 0 0
Spoon 0 0 0 0
Plate 0 0 1 0
Box 0 0 0 1
这是什么询问?感谢。
答案 0 :(得分:1)
SELECT `Model`,
IF(`Class`='S', 1, 0) AS `S`,
IF(`Class`='A', 1, 0) AS `A`,
IF(`Class`='B', 1, 0) AS `B`,
IF(`Class`='C', 1, 0) AS `C`
FROM `inspection_report`
答案 1 :(得分:0)
您的问题有点不清楚,但我假设您将数组映射名称中的输入数据设置为缺陷,并且您希望每行在相应列中为1,在其他任何位置为零。如果是这样,就是这样:
$arr = array('blue' => 'S', 'red' => 'A', 'yellow' => null, 'green' => 'B', 'black' => 'C');
$defects = array_filter(array_unique(array_values($arr)));
echo "name\t";
echo implode("\t", $defects);
echo "\n";
foreach($arr as $name => $defect) {
echo "$name";
foreach($defects as $test) {
echo "\t";
echo $test == $defect ? 1 : 0;
}
echo "\n";
}
答案 2 :(得分:0)
非常粗略的例子,你现在可能会使用HTML表格。
<?php // $rows = array(array('name' => 'blue', 'class_defect' => 'S'), ...); ?>
<pre>
name s a b c
<?php
foreach ($rows as $row) {
printf('%-10s', $row['name']); // padding with spaces
foreach (array('s', 'a', 'b', 'c') as $col) {
echo (strtolower($row['class_defect']) == $col) ? 1 : 0;
echo ' '; // just padding again
}
}
?>
</pre>