假设您有这样的表格视图
seed_id name country
------- ---------- -------
1 John America
2 Jose Mexico
3 Khan Pakistan
并且您想要如下垂直绘制HMTL;
seed_id 1 2 3
name John Jose Khan
country America Mexico Pakistan
这种观点在两种情况下非常方便。
您想要打印表格视图,或者想要并排比较字段。
在打印视图中,在包含50个字段的表格中,即使打印单个记录视图也无法显示可见的打印输出。该纸张将在第10个区域左右切割出印刷品。
但是使用垂直视图,表格有多少字段无关紧要。
同样,当你并排比较记录时,就像在这个漂亮的例子中一样
你得到一个非常有用的观点。
我现在可以坐下来写这个库函数,但此刻没有时间。但我确信那里有人有时间,或已经写过。请你分享一下吗?
getview($ dbh,“select * from tableX where 1 = 1”,“vertical”);
答案 0 :(得分:6)
您可以使用\G
标志。
SELECT * FROM mytbl \G
UPD:示例文章:http://slaptijack.com/software/enabling-vertical-g-output-in-the-mysql-client/
答案 1 :(得分:0)
可能有更好的循环方式......
$table = array();
foreach($result_row as $row)
{
foreach(array('seed_id','name','country') as $index)
{
$table[$index][] = $row[$index];
}
}
这样的事情应该将你的阵列重新组织成你需要的结构
答案 2 :(得分:0)
eggyal我没有回答我的问题。但这是我在stackoverflow上知道的唯一方法,可以重新发布代码作为我原始问题的后续内容。
无论如何,我尝试了你的链接。 (即Transposing multidimensional arrays in PHP)但是,它对我的情况不起作用。
你可以亲自试试看看。我附加了两个功能来尝试这个。你需要的只是一个mysql $ dbh连接来给这个函数一个去。你会看到在我的函数中,我点击了那个在该链接中被投票24次的flipdiagonally
函数。
当你将$ direction_v_or_h设置为h,
来调用该函数时,它可以工作。但这对我们来说不是新闻。这是我追求的v
模式。
尝试使用此限制
SQL_getview($dbh, "select * from yourTable limit 2","h");
和
SQL_getview($dbh, "select * from yourTable limit 2","v");
我得到的错误就是这个;重复表格中的每一个字段
Warning: Invalid argument supplied for foreach() in D:\Hosting\5291100\html\blueprint\sql.php on line 739
function SQL_getview($dbh,$sql,$direction_v_or_h = 'h')
{
$result = $result = mysql_query($sql,$dbh);
$fields_num = mysql_num_fields($result);
if ($direction_v_or_h == "h"):
echo "<table border='1'><tr>";
// printing table headers
for($i=0; $i<$fields_num; $i++)
{
$field = mysql_fetch_field($result);
echo "<td>{$field->name}</td>";
}
echo "</tr>\n";
while($row = mysql_fetch_row($result))
{
echo "<tr>";
foreach($row as $cell)
echo "<td>$cell</td>";
echo "</tr>\n";
}
echo "</table>";
else:
if (1): //turn this to 0 to see the good old print_r workaround
echo "<table border='1'><tr>";
// printing table headers
for($i=0; $i<$fields_num; $i++)
{
$field = mysql_fetch_field($result);
echo "<td>{$field->name}</td>";
}
echo "</tr>\n";
while($row = mysql_fetch_assoc($result))
{
echo "<tr>";
$row = flipDiagonally($row);
foreach($row as $cell)
echo "<td>$cell</td>";
echo "</tr>\n";
}
echo "</table>";
else:
while($row = mysql_fetch_assoc($result))
{
echo "<tr>";
echo "<pre>";
print_r ($row);
echo "</pre>";
echo "<hr>";
}
endif;
endif;
mysql_free_result($result);
}
function flipDiagonally($arr) {
$out = array();
foreach ($arr as $key => $subarr) {
foreach ($subarr as $subkey => $subvalue) {
$out[$subkey][$key] = $subvalue;
}
}
return $out;
}