Спустя 3 минуты, 31 секунда (11.12.2011 - 09:00) phz написал(а):
Спустя 1 минута, 56 секунд (11.12.2011 - 09:01) kss написал(а):
Но как ее применить к столбцам и как ее применить к неизвестному количеству столбцов?
Спустя 1 час, 38 минут, 6 секунд (11.12.2011 - 10:40) kss написал(а):
может этим ALTER TABLE
Спустя 11 минут, 28 секунд (11.12.2011 - 10:51) kss написал(а):
Ну подскажите......... Если уж колонки известны, то как (буду их потом вручную вбивать, если иначе нельзя)
Спустя 1 час, 47 минут, 30 секунд (11.12.2011 - 12:39) Игорь_Vasinsky написал(а):
ну проверяй - если empty - то не используй.
непонял речь о массиве или массиве из БД
непонял речь о массиве или массиве из БД
Спустя 5 минут, 56 секунд (11.12.2011 - 12:44) Michael написал(а):
Не совсем понятно о чем спрашивают, но вроде похоже на это - динамическое формирование текста запроса.
Спустя 27 минут, 45 секунд (11.12.2011 - 13:12) kss написал(а):
Нашел такой вариант. будет ли он работать?
$mat = array(
array(0,0,0,0,0,0),
array(0,0,0,0,0,0),
array(0,0,1,1,0,0),
array(0,1,1,1,0,0),
array(0,1,1,1,0,0),
array(0,0,0,0,0,0)
);
$key_array = array();
function arr($val, $key){
global $key_array;
if($val > 0) $key_array[$key] = $key;
}
array_walk_recursive($mat, "arr");
asort($key_array);
foreach($mat as $v){
if(array_sum($v) > 0){
foreach($key_array as $val){
echo $v[$val]."\t";
}
echo "<br />";
}
}
Спустя 32 секунды (11.12.2011 - 13:13) kss написал(а):
Как это переделать под мою ситуацию, помогите. пожалуйста
Спустя 3 минуты (11.12.2011 - 13:16) kss написал(а):
$q=mysql_query("SELECT *
FROM vedomost WHERE `kod_uch`='".$g."' GROUP by dat ORDER by dat desc ");
$row5 = mysql_query($q);
echo "<table border=\"1\" cellspacing='0' сellpadding='10'>\n";
$line = mysql_fetch_array($q, MYSQL_ASSOC);
echo "\t<tr>\n";
$j= array_keys($line);
foreach ($j as $col_value) {
echo "\t\t<th>$col_value</th>\n";
}
echo "</tr>";
$i=0;
do {
echo "<tr>";
$i++;
foreach ($line as $col_value) {
echo "<td class='rt'> $col_value</td>";
}
echo "</tr>";
}while ($line = mysql_fetch_array($q, MYSQL_ASSOC));
echo "</table>";
Спустя 44 минуты, 7 секунд (11.12.2011 - 14:00) kss написал(а):
Я так понял что это приминимо только к числовых значениям. а как бы также и с текстовыми строками поступить?
Спустя 3 минуты, 23 секунды (11.12.2011 - 14:03) Placido написал(а):
Если не известно количество и имена полей таблицы, можно, как выход, предварительно сделать дополнительный запрос, которым вытянуть имена полей
SHOW COLUMNS FROM `vedomost`;, а потом в цикле сформировать запрос на выборку.
Спустя 3 минуты, 14 секунд (11.12.2011 - 14:06) kss написал(а):
м-да.... объяснил как отрезал))))
Спустя 4 минуты, 31 секунда (11.12.2011 - 14:11) kss написал(а):
Попробую с начала, есть таблица сформированная запросом из базы

как убрать пустые столбцы?

как убрать пустые столбцы?
Спустя 17 минут, 10 секунд (11.12.2011 - 14:28) killer8080 написал(а):
Цитата (kss @ 11.12.2011 - 07:56) |
Ребят неужели нельзя из массивы выборки удалять пустые колонки? |
$row = array_filter($row);
Спустя 30 минут, 26 секунд (11.12.2011 - 14:59) killer8080 написал(а):
вот пробуй
$fields = $data = array();
while($row = mysql_fetch_assoc($result)){
foreach(array_keys(array_filter($row)) as $field){
if(!in_array($field, $fields))
$fields []= $field;
}
$data []= $row;
}
foreach($data as &$row)
$row = array_filter($row, create_function('$v', 'global $fields; return in_array($v, $fields);'));
echo '<table border="1">',
'<tr><th>'.implode('</th><th>', $fields).'</th></tr>';
foreach($data as $row){
echo '<tr><td>'.implode('</td><td>', $row).'</td></tr>';
}
echo '</table>';
Спустя 7 минут, 52 секунды (11.12.2011 - 15:06) kss написал(а):
колонки убирает и данные тоже... выводятся только названия
Спустя 2 минуты, 42 секунды (11.12.2011 - 15:09) killer8080 написал(а):
В смысле? Осталась только шапка таблицы?
Спустя 1 минута, 25 секунд (11.12.2011 - 15:11) kss написал(а):
да
Спустя 6 минут, 18 секунд (11.12.2011 - 15:17) kss написал(а):
изменил $result на $q тока, ибо запрос делается переменной $q. правильно ли я сделал?
Спустя 14 минут, 28 секунд (11.12.2011 - 15:31) killer8080 написал(а):
пробуй
PS с array_filter не получится, там колбэк принимает только значение элемента массива, а нужен ключ.
$fields = $data = array();
while($row = mysql_fetch_assoc($q)){
foreach(array_keys(array_filter($row)) as $field){
if(!in_array($field, $fields))
$fields []= $field;
}
$data []= $row;
}
foreach($data as &$row){
foreach($row as $k => $v){
if(!in_array($k, $fields))
unset($row[$k]);
}
}
echo '<table border="1">',
'<tr><th>'.implode('</th><th>', $fields).'</th></tr>';
foreach($data as $row){
echo '<tr><td>'.implode('</td><td>', $row).'</td></tr>';
}
echo '</table>';
PS с array_filter не получится, там колбэк принимает только значение элемента массива, а нужен ключ.
Спустя 7 минут, 33 секунды (11.12.2011 - 15:39) kss написал(а):
Талантливы человек тот, кто делает то, что умеет;
Гениальный то, что от него ждут.
Большое человеческое спасибо
Деткам для школы вызвался "помочь". точнее их родителям.
Гениальный то, что от него ждут.
Большое человеческое спасибо

Деткам для школы вызвался "помочь". точнее их родителям.
Спустя 1 минута, 18 секунд (11.12.2011 - 15:40) killer8080 написал(а):
Хотя там нет смысла дважды по массиву бегать.
Лучше так, там я ещё добавил подстановку в пустые ячейки
Лучше так, там я ещё добавил подстановку в пустые ячейки
$fields = $data = array();
while($row = mysql_fetch_assoc($q)){
foreach(array_keys(array_filter($row)) as $field){
if(!in_array($field, $fields))
$fields []= $field;
}
$data []= $row;
}
echo '<table border="1">',
'<tr><th>'.implode('</th><th>', $fields).'</th></tr>';
foreach($data as $row){
foreach($row as $k => $v){
if(!in_array($k, $fields))
unset($row[$k]);
}
$row = array_map(create_function('$v', 'return $v ? $v : " "'), $row);
echo '<tr><td>'.implode('</td><td>', $row).'</td></tr>';
}
echo '</table>';
Спустя 2 минуты, 5 секунд (11.12.2011 - 15:42) killer8080 написал(а):
Цитата (kss @ 11.12.2011 - 14:39) |
Талантливы человек тот, кто делает то, что умеет; Гениальный то, что от него ждут. Большое человеческое спасибо Деткам для школы вызвался "помочь". точнее их родителям. |
Да ладно, плюсика в карму будет достаточно

Спустя 3 минуты, 22 секунды (11.12.2011 - 15:46) Winston написал(а):
Цитата (kss @ 11.12.2011 - 07:56) |
Ребят неужели нельзя из массивы выборки удалять пустые колонки |
$row = array_diff($row, array(" "));
Спустя 2 минуты, 13 секунд (11.12.2011 - 15:48) killer8080 написал(а):
Winston
Не, не все так просто. Какие колонки удалить, станет известно только после получения всех рядов.
Не, не все так просто. Какие колонки удалить, станет известно только после получения всех рядов.
Спустя 7 минут, 30 секунд (11.12.2011 - 15:55) kss написал(а):
Последний вариант не работает

Спустя 6 минут (11.12.2011 - 16:01) killer8080 написал(а):
Цитата (kss @ 11.12.2011 - 14:55) |
Последний вариант не работает |
а что выводит?
Спустя 2 минуты, 32 секунды (11.12.2011 - 16:04) kss написал(а):
Опять же только шапку
Спустя 58 секунд (11.12.2011 - 16:05) killer8080 написал(а):
Ах да, опять пропустил запятую 

$fields = $data = array();
while($row = mysql_fetch_assoc($q)){
foreach(array_keys(array_filter($row)) as $field){
if(!in_array($field, $fields))
$fields []= $field;
}
$data []= $row;
}
echo '<table border="1">',
'<tr><th>'.implode('</th><th>', $fields).'</th></tr>';
foreach($data as $row){
foreach($row as $k => $v){
if(!in_array($k, $fields))
unset($row[$k]);
}
$row = array_map(create_function('$v', 'return $v ? $v : " ";'), $row);
echo '<tr><td>'.implode('</td><td>', $row).'</td></tr>';
}
echo '</table>';
Спустя 7 минут, 5 секунд (11.12.2011 - 16:12) kss написал(а):
Кстати, последний элемент массива дублирует
Спустя 57 секунд (11.12.2011 - 16:13) killer8080 написал(а):
Цитата (kss @ 11.12.2011 - 15:12) |
Кстати, последний элемент массива дублирует |
В смысле?
Спустя 2 минуты, 27 секунд (11.12.2011 - 16:15) kss написал(а):
Последний вариант работаспособен и в нем нет дубля последней строки
Спустя 1 минута, 50 секунд (11.12.2011 - 16:17) kss написал(а):
Еще раз RESPECT и уважуха
Спустя 50 секунд (11.12.2011 - 16:18) killer8080 написал(а):
kss
Да не за что, обращайся
Да не за что, обращайся

Спустя 10 минут, 55 секунд (11.12.2011 - 16:29) killer8080 написал(а):
kss
а у тебя точно все правильно выводит?
Кажется этот код кривой, могут по путаться названия колонок и вывод.
а у тебя точно все правильно выводит?
Кажется этот код кривой, могут по путаться названия колонок и вывод.

Спустя 1 минута, 20 секунд (11.12.2011 - 16:30) kss написал(а):
блин. ну ты даешь, сейчас проверю
Спустя 2 минуты, 42 секунды (11.12.2011 - 16:33) kss написал(а):
кривой. путаются
(((

Спустя 1 минута, 36 секунд (11.12.2011 - 16:35) killer8080 написал(а):
замени
на
echo '<tr><td>'.implode('</td><td>', $row).'</td></tr>';
на
echo '<tr>';
foreach($fields as $key)
echo '<td>'.$row[$key].'</td>';
echo '</tr>';
Спустя 1 минута, 24 секунды (11.12.2011 - 16:36) kss написал(а):
теперь ок!
Спустя 35 секунд (11.12.2011 - 16:37) kss написал(а):
не знаю, в любви тебе чтоли признаться7 ))))))))))))))
Спустя 2 минуты, 23 секунды (11.12.2011 - 16:39) killer8080 написал(а):
kss
А ты какого пола?
А ты какого пола?

Спустя 3 минуты, 9 секунд (11.12.2011 - 16:42) kss написал(а):
Раз уж пошла такая жара. как сделать зебру в таблице7
Спустя 32 секунды (11.12.2011 - 16:43) killer8080 написал(а):
Кстати, раз уж отказались от имплода, тогда можно ещё сократить
$fields = $data = array();
while($row = mysql_fetch_assoc($q)){
foreach(array_keys(array_filter($row)) as $field){
if(!in_array($field, $fields))
$fields []= $field;
}
$data []= $row;
}
echo '<table border="1">',
'<tr><th>'.implode('</th><th>', $fields).'</th></tr>';
foreach($data as $row){
echo '<tr>';
foreach($fields as $key)
echo '<td>'.($row[$key] ? $row[$key] : ' ').'</td>';
echo '</tr>';
}
echo '</table>';
Спустя 8 минут, 17 секунд (11.12.2011 - 16:51) killer8080 написал(а):
Цитата (kss @ 11.12.2011 - 15:42) |
как сделать зебру в таблице7 |
Проще пареной репы
Пропищы в css классы zebra_white и zebra_black
.zebra_white td{
background-color: #FFF;
}
.zebra_black td{
background-color: #999;
}
$fields = $data = array();
while($row = mysql_fetch_assoc($q)){
foreach(array_keys(array_filter($row)) as $field){
if(!in_array($field, $fields))
$fields []= $field;
}
$data []= $row;
}
echo '<table border="1">',
'<tr><th>'.implode('</th><th>', $fields).'</th></tr>';
$i = 0;
foreach($data as $row){
echo '<tr class="'.($i % 2 ? 'zebra_white' :'zebra_black').'">';
foreach($fields as $key)
echo '<td>'.($row[$key] ? $row[$key] : ' ').'</td>';
echo '</tr>';
$i++;
}
echo '</table>';
Спустя 2 минуты, 27 секунд (11.12.2011 - 16:53) kss написал(а):
ну все... теперь я рад до небес. Будешь во Владивостоке с меня коньячок
Спустя 3 минуты, 47 секунд (11.12.2011 - 16:57) killer8080 написал(а):
Будешь в Симферополе, свистни

Спустя 4 минуты, 5 секунд (11.12.2011 - 17:01) kss написал(а):
заметано...
Спустя 13 минут, 52 секунды (11.12.2011 - 17:15) killer8080 написал(а):
kss
кстати там есть один недостаток - колонки выводятся не в том порядке, как следуют в базе. Это важно?
кстати там есть один недостаток - колонки выводятся не в том порядке, как следуют в базе. Это важно?
Спустя 2 часа, 27 минут, 51 секунда (11.12.2011 - 19:43) kss написал(а):
Это не важно. пусть хоть как-то выводяться. Огромное спасибо